CN111931250B - 多方安全计算一体机 - Google Patents
多方安全计算一体机 Download PDFInfo
- Publication number
- CN111931250B CN111931250B CN201911012844.7A CN201911012844A CN111931250B CN 111931250 B CN111931250 B CN 111931250B CN 201911012844 A CN201911012844 A CN 201911012844A CN 111931250 B CN111931250 B CN 111931250B
- Authority
- CN
- China
- Prior art keywords
- computing
- multiparty
- computing device
- data
- ciphertext
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims description 512
- 238000003860 storage Methods 0.000 claims description 354
- 238000012545 processing Methods 0.000 claims description 237
- 238000000034 method Methods 0.000 claims description 211
- 238000012216 screening Methods 0.000 claims description 187
- 230000006854 communication Effects 0.000 abstract description 91
- 238000004891 communication Methods 0.000 abstract description 89
- 239000002131 composite material Substances 0.000 description 156
- 230000006870 function Effects 0.000 description 117
- 230000008569 process Effects 0.000 description 91
- 238000004422 calculation algorithm Methods 0.000 description 53
- 238000007726 management method Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 41
- 238000005516 engineering process Methods 0.000 description 40
- 239000006185 dispersion Substances 0.000 description 39
- 238000000605 extraction Methods 0.000 description 36
- 238000012795 verification Methods 0.000 description 32
- 230000005540 biological transmission Effects 0.000 description 24
- 150000001875 compounds Chemical class 0.000 description 24
- 230000003993 interaction Effects 0.000 description 22
- 238000013524 data verification Methods 0.000 description 16
- 238000010130 dispersion processing Methods 0.000 description 16
- 238000006467 substitution reaction Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 9
- 238000001914 filtration Methods 0.000 description 9
- 239000013598 vector Substances 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000003672 processing method Methods 0.000 description 7
- 230000001010 compromised effect Effects 0.000 description 6
- 238000013527 convolutional neural network Methods 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 208000003443 Unconsciousness Diseases 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 101150014742 AGE1 gene Proteins 0.000 description 1
- 238000012896 Statistical algorithm Methods 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003255 drug test Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种多方安全计算一体机,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。本申请为用户提供了一体化的多方安全计算平台解决了现有技术中多方安全计算的计算通信复杂度高的问题。
Description
技术领域
本申请涉及数据安全处理技术领域,特别是涉及一种多方安全计算一体机。
背景技术
随着大数据在企业之间、企业与个人之间、个人与个人之间分享,一些隐私数据,如银行信用等级、个人身份信息、金融交易信息等,会随着数据业务被泄露。随着用户行为、习惯被以数据化收集,用户/企业对隐私数据越来越重视。因此,数据分享业务和隐私数据保密成为一对日益凸显的矛盾。
现有技术中一项计算任务需要多个计算装置共同参与时,为了保护各个计算装置的信息安全,各计算装置可以通过多方安全计算完成该项计算任务。多个计算装置互不相信,这些计算装置可以在不透露各自输入的情况下联合完成计算任务。而且,不存在被多个互不相信的计算装置所共同相信的第三方,完全杜绝了计算装置的输入被第三方泄露的可能性。通过互相不信任的多个计算装置对隐私数据进行多方安全计算,既保护了隐私数据又对隐私数据进行了数据处理,而现有技术中多方安全计算的通信复杂度很高导致计算效率远低于用户需求,并且目前市场多方安全计算产品都是基于软件实现,无法为用户提供一体化的多方安全计算平台解决方案。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的之一,在于提供一种多方安全计算一体机,用于为用户提供一体化的多方安全计算平台,降低了现有技术中执行多方安全计算的各计算装置之间的通信复杂度。
为实现上述目的及其他相关目的,本申请的第一方面提供一种多方安全计算一体机,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
在本申请的第一方面的某些实施方式中,所述多方安全计算一体机还包括硬件安全模块,与各计算装置相连,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
在本申请的第一方面的某些实施方式中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
在本申请的第一方面的某些实施方式中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
在本申请的第一方面的某些实施方式中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
在本申请的第一方面的某些实施方式中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
在本申请的第一方面的某些实施方式中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
本申请的第二方面还提供一种多方安全计算一体机,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算;
其中,所述多方安全计算指令包括构建索引的操作指令,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括以下步骤:
对所获得的多个分散密文创建索引;其中所述分散密文是对待存储数据进行多方隐私加密后形成的。
本申请的第三方面还提供一种多方安全计算一体机,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算;
其中,所述多方安全计算指令包括:检索存储数据的操作指令,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括以下步骤:
从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据检索结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
本申请的第四方面还提供一种多方安全计算一体机,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算;
其中,所述多方安全计算指令包括基于数据库检索语句而得到的指令;
所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算包括以下步骤:
根据一存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;所获取的分散密文为隐私数据为经所述存储配置而分散形成的;
按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
如上所述,本申请的多方安全计算一体机为用户提供了一体化的多方安全计算平台降低了现有技术中执行多方安全计算的各计算装置之间的通信复杂度。
附图说明
图1显示为本申请的多方安全计算一体机在一实施方式中的硬件结构示意图。
图2显示为本申请多方安全计算一体机的各计算装置的连接方式在一实施方式中的示意图。
图3显示为多个多方安全计算一体机间进行网络互连在一实施例中的示意图。
图4显示为多个多方安全计算一体机间进行网络互连在另一实施例中的示意图。
图5显示为本申请的多方安全计算一体机在另一实施方式中的硬件结构示意图。
图6显示为本申请的多方安全计算一体机中的两个计算装置进行数据通信在一实施方式中的示意图。
图7显示为本申请的多方安全计算一体机中的两个计算装置进行数据通信在另一实施方式中的示意图。
图8显示为利用树状结构描述循环处理操作的计算任务的示意图。
图9显示为将图8所示的计算任务优化处理的示意图。
图10显示为利用树状结构描述提取公因子操作的计算任务的示意图。
图11显示将图10所示的计算任务优化处理的示意图。
图12显示为利用树状结构描述常用表达提取操作的计算任务的示意图。
图13显示为将图12所示的计算任务优化处理的示意图。
图14显示为本申请所述多方安全计算一体机执行多方安全计算的流程示意框图。
图15显示为本申请的多方安全计算一体机在又一实施方式中的示意图。
图16显示为针对多个分散密文所创建的哈希表在一实施例中的结构示意图。
图17显示为针对包含至少一字段的多个分散密文中某一字段所创建的哈希表在一实施例中的结构示意图。
图18显示为针对包含至少一字段的多个分散密文所创建的哈希表在一实施例中的结构示意图。
图19显示为针对包含至少一字段的多个分散密文所创建的哈希表在另一实施例中的结构示意图。
图20显示为隐私数据的数据库操作方法在一实施例中的流程示意图。
图21显示为隐私数据的数据库操作系统在一实施例中的结构示意图。
图22显示为隐私数据的数据库操作系统在另一实施例中的结构示意图。
图23显示为隐私数据的数据库操作系统在又一实施例中的结构示意图。
具体实施方式
以下由特定的具体实施例说明本申请的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本公开的精神和范围的情况下进行组成以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由本申请的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。比如本申请中对“至少一个客户端”则包括一个客户端以及多个客户端的情况,或者“至少一个内容展示设备”则包括一个内容展示设备以及多个内容展示设备的情况。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。
为了保护互联网企业和用户的隐私数据,一些方式是采用加密方式进行数据传输,以确保数据传输期间的计算机设备不会获得隐私数据,然而,该加密数据在处理设备进行数据处理时,是需解密的,这使得隐私数据在处理设备上不存在隐私可言。在另一些方式中,利用隐私数据的数据处理过程采用密码学所使用的数据处理方式,如采用同态处理方式等,这使得处理隐私数据的处理设备无需利用解密后的隐私数据进行数据处理,该种方式虽然有效解决了隐私数据隐私化的问题,但是,对技术人员来说,利用密码学技术进行数据处理具有极高的研发门槛,不利于技术人员在确保隐私数据不泄露的情况下使用隐私数据进行数据处理。
通过分布式的多个计算装置对隐私数据进行多方安全计算,既保护了隐私数据又对隐私数据进行了数据处理,而将多个计算装置分布在不同云架构的服务端,并进行多方安全计算使得计算效率受通信复杂度局限,从而导致计算效率远低于用户需求,并且目前市场多方安全计算产品都是基于软件实现,无法为用户提供一体化的多方安全计算平台解决方案。
为此本申请提供一种多方安全计算一体机,请参阅图1,图1显示为本申请的多方安全计算一体机在一实施方式中的硬件结构示意图,如图所示,所述多方安全计算一体机包括整合到一体机中用于执行多方安全计算的多个计算装置,其中,各所述计算装置被配置于互不信任的计算系统架构中。
其中,所述多方安全计算一体机(以下简称一体机)用于提供多方安全计算。其中所述多方安全计算一体机中的各计算装置基于所配置的输入独立、互不信任的计算系统架构,确保各计算装置执行安全的多方安全计算。所述多方安全计算一体机可以是用于执行多方安全计算的计算机设备,可位于私有机房或位于公共机房中的某个被租用的机位中。其中,所述多方安全计算一体机中的各计算装置不透露各自所接收的分散密文的情况下,通过所述多方安全计算指令指定的计算装置之间的通信完成需要各计算装置联合计算的计算任务,并且在完成计算任务过程中各计算装置不恢复所述隐私数据的明文,所述多方安全计算指令将会在后续详述。
在此,所述分散密文是隐私数据经多方隐私加密后得到的。其中,所述多方隐私加密举例包括分散加密。所述隐私数据可以是个体、群体或组织的敏感信息。所述隐私数据包括信息隐私数据、通信隐私数据、空间隐私数据、身份隐私数据等。所述信息隐私数据指的是个人的基本信息,包括例如身份证号、银行账号、各类密码、收入和财产状况、婚姻和家庭成员、医疗档案、消费和需求信息(例如购物、购房、购车、购买保险)、网络活动踪迹(例如IP地址、浏览踪迹、活动内容)等数据。所述通信隐私数据包括个人和其他人的交流使用的各种通信方式以及通过各种通信方式和其他人交流产生的信息数据,所述通信方式包括例如电话、短信、E-mail、QQ、微信等。所述空间隐私数据指的是个人出入的特定空间或区域的信息,包括家庭住址、工作单位以及个人出入的公共场所等数据。所述身体隐私数据指的是与个人身体关联的信息,如虹膜数据、人脸数据、指纹数据、身高、体重、病历、药物测试等数据。
所述隐私数据也可以是个人、群体或组织不愿或不能被外部世界知晓的信息。在一实施例中,所述隐私数据包括金融交易数据。所述金融交易数据是指金融机构(例如银行、保险、证券、基金、信贷公司等)知悉或掌握的包括例如个人或企业的身份、各类金融资产状况和交易情况等信息和资料,例如信贷数据、证券交易数据、债券融资数据、股票融资数据等。所述隐私数据是银行、股票交易所等能提供金融交易数据的企业或部门需以最高安全级别存储的储蓄用户、交易用户的财产信息。
在本申请的实施方式中,各所述计算装置被配置于互不信任的计算系统架构中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
其中,所述互不信任的计算系统架构中的各计算装置之间不存在信任,即各计算装置不会主动串通其他计算装置分享各自输入的分散密文,也不会主动串通其他计算装置分享按照多方安全计算指令而得到的计算结果。各计算装置基于多方安全计算指令来执行多方安全计算。其中,所述多方安全计算指令是基于一计算任务而产生的,其可由用于调度多方安全计算协议执行多方安全计算的机器语言描述。所述多方安全计算指令中包含分散密文的获取方式,各计算装置基于所接收的多方安全计算指令获取相应的分散密文,并按照多方安全计算指令及对应指令的多方安全计算协议,对分散密文进行本地计算和数据交互,以得到用于生成所述计算任务所对应任务结果的计算结果。其中,所述计算任务将在后续详述。
各所述计算装置至少包含存储器和处理器等。其中,所述存储器用于存储供所属计算装置执行所述多方安全计算的至少一个程序。所述存储器可包括动态随机存取存储器、静态随机存取存储器,并且还可包括非易失性存储器,例如一个或多个硬盘存储设备、闪存设备、可编程只读存储器、可擦除可编程只读存储器、带电可擦除可编程只读存储器或其他非易失性固态存储设备等。所述存储器还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储装置中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理器与所述存储器相连,用于调用所述至少一个程序并协调所述存储器和I/O接口执行所述多方安全计算。所述处理器可操作地与存储器耦接。更具体地,处理器可执行在存储器中存储的程序以在处理装置中执行操作。如此,处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。
由于各计算装置在执行多方安全计算期间涉及对数据的存储和通信,为了确保互不信任的计算系统架构中的多个计算装置在执行多方安全计算过程中所述多个计算装置的数据安全性,在一些实施方式中,所述多个计算装置在物理硬件上单独通信,所述多个计算装置中的每一计算装置包括有I/O接口,利用所述I/O接口与多方安全计算一体机中的其他计算装置相连,所述I/O接口还可以与互联网、硬件安全模块和多方安全计算一体机中的其他硬件等连接。用于执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接,通过网络互连的连接方式可以使计算装置之间实现网络间的数据通信用以执行所述多方安全计算。计算装置之间以点对点的方式进行数据通信,一个计算装置在要求传输计算结果到另一计算装置的时候建立两个计算装置之间的传输通道,对于其他计算装置这个通道是封闭的,这样的操作保证了通道的专有性和数据通信的安全性,避免其他计算装置的干扰。
为此,所述I/O接口用于为所属计算装置提供数据输入和输出。所述I/O接口的数量与计算装置与外部计算设备、以及与用于执行多方安全计算的另一计算装置的通信数量相关,各I/O接口的类型与计算装置和外部计算设备之间、以及和用于执行多方安全计算的另一计算装置之间的数据传输方式相关。其中,执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。其中,所述网络互连的方式通常指网络在物理上的连接,两个网络之间至少有一条在物理上连接的线路,它为两个网络的数据交换提供了物资基础和可能性。在此,根据多方安全计算协议所对应的计算角色,各计算装置的网络接口控制器被配置为与指定的计算装置网络互连,或者与任一计算装置网络互连。在一些示例中,所述I/O接口包含网络接口控制器(Network Interface Controller,简称NIC),执行多方安全计算的各两个计算机装置之间利用网络接口控制器彼此连接。所述网络接口控制器又称网络接口卡、网卡、网络适配器等,所述网络接口控制器的传输速率可以为1000Mbps、10Gbps等,所述每一网络接口控制器都有不同的MAC地址用于计算装置之间通信过程中识别所述各计算装置。
在一实施方式中,所述多方安全计算一体机包括4个计算装置S1、S2、Sa、Sb,在其他实施方式中所述计算装置的个数并不限于4个,也可以为2个、3个等。请参阅图2,图2显示为本申请多方安全计算一体机的各计算装置的连接方式在一实施方式中的示意图,如图所示,所述4个计算装置S1、S2、Sa、Sb中每个计算装置都有4个I/O接口,计算装置S1有4个I/O接口N1、N2、N3、N4,I/O接口N1与互联网相连,I/O接口N2与计算装置S2相连,I/O接口N3与计算装置Sa相连,I/O接口N4与计算装置Sb相连;计算装置S2同样有4个I/O接口,一个I/O接口与互联网相连,另外3个I/O接口分别与计算装置S1、Sa、Sb相连;计算装置Sa同样有4个I/O接口,一个I/O接口与互联网相连,另外3个I/O接口分别与计算装置S1、S2、Sb相连;计算装置Sb同样有4个I/O接口,一个I/O接口与互联网相连,另外3个I/O接口分别与计算装置S1、S2、Sa相连。各个计算装置通过I/O接口实现专线连接确保了互不信任的计算系统架构中的多个计算装置在执行多方安全计算过程中所述多个计算装置之间通信的安全性,所述I/O接口的数量也可以多于4个,其余的I/O接口可以与硬件安全模块(未图示)、多方安全计算一体机中的其他硬件等相连。
又如,所述每个计算装置只有1个I/O接口,计算装置S1的I/O接口与计算装置S2、Sa、Sb、互联网相连;计算装置S2的I/O接口与计算装置S1、Sa、Sb、互联网相连;计算装置Sa的I/O接口与计算装置S1、S2、Sb、互联网相连;计算装置Sb的I/O接口与计算装置S1、Sa、Sb、互联网相连。
在另一些实施方式中,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信,确保所述多方安全计算一体机在执行多方安全计算时各计算装置之间通信的安全性。其中,基于一体机中所配置的各计算装置的多方安全计算协议,所述可编程的集成电路被配置成基于两计算装置之间数据通信时所发出的源、目的地址而提供相应的网络连接。其中,所述可编程的集成电路是一种微型电子器件或部件,采用一定的工艺,把一个电路中所需的晶体管、二极管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构,其中所有元件在结构上组成一个整体,其中,所述可编程集成电路中包括有预设的基于多方安全计算协议而编制的程序。所述可编程集成电路可以为FPGA。
计算装置中还包含用于接收分散密文的I/O接口。所述计算装置配置利用网络连接的I/O接口获得分散密文。例如,各计算装置获得的分散密文是通过用于计算装置之间进行网络互连的I/O接口所获得的。所述计算装置配置专用的I/O接口获得分散密文。例如,各计算装置获得的分散密文是通过计算装置中专用I/O接口所获得的。
基于上述提供网络互连的示例,为利用多个一体机实现更高效地执行多方安全计算的目的,多个一体机通过各自计算装置所配置的I/O接口进行数据通信。其中,用于连接外部设备的I/O接口可与一体机中各计算装置内部之间连接的I/O接口的类型相同或不同。例如,各计算装置所配置的用于与外部设备相连的I/O接口为网络控制接口,用于与一体机内部的其他计算装置相连的I/O接口为专线的总线接口。又如,一体机中的各计算装置的I/O接口均为网络控制接口。
在此,根据多个一体机所执行的多方安全计算的数据传输方式和计算过程,所述多个一体机的连接方式包括串联连接方式、和并联连接方式中的至少一种。
其中,多个一体机并联的方式包括利用一数据转发装置与各一体机中具有预设通信连接关系的计算装置进行硬件连接,以供多个一体机通过各自指定的计算装置之间并联的方式实现多个一体机之间具有并联关系的目的。其中,所述数据转发装置举例为交换机。其中,数据转发装置基于通信连接关系为不同一体机中具有预设通信连接关系的计算装置配置专用I/O接口。
以一体机P1和P2中均包含四个计算装置为例,该四个计算装置分别称为S1、S2、Sa、Sb,其中,每个计算装置配置有三个对内的I/O接口用以彼此网络互连。其中计算装置S1和S2还配置有对外的I/O接口。在一实施例中,请参阅图3,图3显示为多个多方安全计算一体机间进行网络互连在一实施例中的示意图,如图所示,一体机P1和一体机P2通过交换机并联。具体地,一体机P1和一体机P2中各自的计算装置S1、S2、Sa和Sb分别通过各自的三个I/O接口2、3、4进行内部两两的单独连接。一体机P1和P2中的各自的计算装置S1和S2均配置I/O接口1,其中,根据预设的各一体机中计算装置S1的I/O接口1彼此通信,以及各一体机中计算装置S2的I/O接口1彼此通信,则利用交换机的I/O接口将彼此通信的各一体机中的计算装置并联在一起。如图3所示,一体机P1中的计算装置S1的I/O接口1通过交换机的I/O接口111与一体机P2中计算装置S1的I/O接口1相连;一体机P1中的计算装置S2的I/O接口1通过交换机的I/O接口112与一体机P2中计算装置S2的I/O接口1相连。
需要说明的是,一方面,上述一体机中各计算装置用于外部连接的I/O接口并不限于上述示例,其数量可有所预留以便扩容。技术人员可依据上述任一示例实现配置有由更多数量并联的一体机所构成的多方安全计算系统。各一体机中的计算装置依据数据通信关系、数据处理关系连接交换机所配置的独立I/O接口,以及交换机还配置有独立的I/O接口,如图3所示的I/O接口113,其用于与外部数据源或互联网中的网络设备(如后续描述的计算任务平台)相连。其中,交换机中的I/O接口113与交换机中的I/O接口111和112连接,以用于进行数据转发。另外,利用交换机并联多个一体机的连接方式与各一体机之间协同执行多方安全计算时的计算方式和/或数据传输方式相关。其中,各一体机之间协同执行多方安全计算的计算方式包括将来自外部的数据进行再分散的步骤。
在一些具体示例中,如图3所示,多个一体机协同执行多方安全计算的数据来源可由交换机的I/O接口113获取,并由所述交换机进行数据分散后通过I/O接口111和112分配给不同一体机中的多个计算装置。其中,所述数据分散方式举例如下:交换机通过I/O接口113获取分散密文x1、y1、x2、y2,其中,分散密文x1、y1、x2、y2是交换机的I/O接口113所连接的外部设备将一数据库中存储的两个隐私数据X和Y进行一次分散后输出的,如x1+x2=X,y1+y2=Y。交换机根据预先配置的所连接的多个一体机进行数据再分配,即将所接收的各分散密文进行再次分散处理。仍以图3所示为例,交换机执行以下二次分散:将分散密文x1再次分散成x11和x12,将分散密文x2再次分散成x21和x22,将分散密文y1再次分散成y11和y12,将分散密文y2再次分散成y21和y22;交换机还根据预设的通信连接关系执行以下分配:将{x11,y11}通过I/O接口111分配给一体机P1的计算装置S1,将{x12,y12}通过I/O接口112分配给一体机P1的计算装置S2,将{x21,y21}通过I/O接口111分配给一体机P2的计算装置S1;将{x22,y22}通过I/O接口112分配给一体机P2的计算装置S2。
在另一具体示例中,仍以图3为例,多个一体机协同执行多方安全计算的数据来源可由交换机的I/O接口113获取,并由所述交换机通过I/O接口111和112将所获取的数据分别提供给预设的用于执行前一示例中数据分散的一台一体机(如一体机P1)中的计算装置S1和S2。其中,交换机的I/O接口113可同时或分时获取全部分散密文,并通过I/O接口111和112转发给相应一体机中的计算装置S1和S2。例如,交换机I/O接口113接收前述示例中的x1、y1、x2、y2,并通过解析封装各分散密文的目的地址,将各分散密文通过I/O接口111和112转发给相应一体机中的计算装置S1和S2。一体机P1中的计算装置S1和S2执行所接收的各分散密文进行再次分散处理的步骤,并将再次分散处理后的各分散密文通过交换机的I/O接口111和112分配给其他一体机,如一体机P2。继续以图3所示为例,一体机P1执行以下二次分散:将分散密文x1再次分散成x11和x12,将分散密文x2再次分散成x21和x22,将分散密文y1再次分散成y11和y12,将分散密文y2再次分散成y21和y22;一体机P1还根据预设的通信连接关系执行以下分配:一体机P1的计算装置S1保留{x11,y11},一体机P1的计算装置S2保留{x12,y12},将{x21,y21}通过I/O接口111分配给一体机P2的计算装置S1;以及将{x22,y22}通过I/O接口112分配给一体机P2的计算装置S2。
需要说明的是,以上各示例中所提及的二次分散仅为举例,分散方式还可举例为Shamir分散等。此外,以上各示例中由交换机或其中的一体机所执行的数据分配方式仅为举例,交换机或其中的一体机还可以执行更复杂的计算任务,例如为多方安全计算系统中的各一体机分配计算角色、协议、计算任务等。
其中,多个一体机串联的连接方式包括利用各一体机中具有预设通信连接关系的计算装置的数据输入接口和数据输出接口进行硬件连接,以供多个一体机通过各自指定的计算装置之间串联的方式实现多个一体机之间具有串联关系的目的。以利用串联的多个一体机组成多方安全计算系统。其中,串联连接的一体机中具有预设通信连接关系的计算装置的I/O接口用于与另一一体机中相对应的具有预设通信连接关系的计算装置的I/O接口进行连接。
以一体机P1、P2、P3中均包含四个计算装置为例,该四个计算装置分别称为S1、S2、Sa、Sb,其中,每个计算装置配置有两个对内的I/O接口用以彼此网络互连。其中,每个计算装置还配置有两个用于外部连接的对外的I/O接口。请参阅图4,图4显示为多个多方安全计算一体机间进行网络互连在另一实施例中的示意图,如图4所示,一体机P1、一体机P2、一体机P3采用串联方式连接。具体地,一体机P1、一体机P2和一体机P3中各自的计算装置S1、S2、Sa和Sb分别通过各自的I/O接口3、I/O接口4进行内部连接。以一体机P1为例,一体机P1中的计算装置S1的I/O接口3与一体机P1中的计算装置Sa的I/O接口3相连,一体机P1中的计算装置S1的I/O接口4与一体机P1中的计算装置S2的I/O接口3相连。同时,一体机P1中的计算装置Sa的I/O接口1、I/O接口2分别作为备用接口。其中,一体机P2和一体机P3中各计算装置的内部连接方式与一体机P1相同或相似(未图示),在此不再赘述。其中,一体机P1、P2、P3中的各计算装置S1之间利用各计算装置S1的I/O接口1与I/O接口2进行串联。具体地,一体机P1中的计算装置S1的I/O接口1连接外部设备的I/O接口114,一体机P1中的计算装置S1的I/O接口2与一体机P2的计算装置S1的I/O接口1相连。一体机P1中的计算装置S2的I/O接口1连接外部设备的I/O接口114,一体机P1中的计算装置S2的I/O接口2与一体机P2的计算装置S2的I/O接口1相连。同时,一体机P2中的计算装置S1的I/O接口2与一体机P3的计算装置S1的I/O接口1相连。一体机P2中的计算装置S2的I/O接口2与一体机P3的计算装置S2的I/O接口1相连。同时,一体机P3中的计算装置S1的I/O接口2连接外部设备的I/O接口117,一体机P3中的计算装置S2的I/O接口2连接外部设备的I/O接口117。所述外部设备包括:外部数据源、数据获取设备或互联网中的网络设备(如后续描述的计算任务平台)。
需要说明的是,一方面,上述一体机进行串联连接的个数并不限于3个,也可以是2个或者多个。技术人员可依据上述示例基于一体机中用于连接外部设备的I/O接口实现配置有由不同数量串联的一体机所构成的多方安全计算系统。如图4所示,一体机P3中计算装置S1、S2的I/O接口2可以分别与另一体机中计算装置S1、S2的I/O接口1相连,以实现更多一体机的串联连接。另外,多个一体机之间串联的连接方式与各一体机之间协同执行多方安全计算时的计算方式和/或数据传输方式相关。其中,各一体机之间协同执行多方安全计算的计算方式包括将来自外部的数据进行再分散的步骤。
在一些具体示例中,如图4所示,多个一体机协同执行多方安全计算的数据来源可通过一体机P1中计算装置S1和S2的I/O接口1与数据源的I/O接口114相连来获取,由所述一体机P1根据预先配置的所连接的多个一体机进行数据再分配,即将所接收的各分散密文进行再次分散处理,并由所述一体机P1将再次分散后的数据通过一体机P1的计算装置S1的I/O接口2和计算装置S2的I/O接口2分配给不同一体机中的多个计算装置。其中,所述数据分散方式举例如下:一体机P1中的计算装置S1通过I/O接口1获取分散密文x1和y1,一体机P1中的计算装置S2通过I/O接口1获取分散密文x2和y2。其中,所述分散密文x1和x2以及y1和y2是所述数据源将隐私数据X和Y分别进行分散后得到的。其中,x1+x2=X,y1+y2=Y。一体机P1将计算装置S1中的分散密文{x1、y1}分散为分散密文{x11、y11}和分散密文{x12、y12}以及分散密文{x13、y13},将分散密文{x11、y11}留在一体机P1中的计算装置S1中,将分散密文{x12、y12}发送到一体机P2中的计算装置S1,将分散密文{x13、y13}通过一体机P2发送到一体机P3中的计算装置S1。一体机P1将计算装置S2中的分散密文{x2、y2}分散为分散密文{x21、y21}和分散密文{x22、y22}以及分散密文{x23、y23},将分散密文{x21、y21}留在一体机P1中的计算装置S2中,将分散密文{x22、y22}发送到一体机P2中的计算装置S2,将分散密文{x23、y23}通过一体机P2发送到一体机P3中的计算装置S2,以供三个一体机同时进行计算并将计算结果汇总到一体机P3,一体机P3的计算装置S1的I/O接口2和计算装置S2的I/O接口2分别与数据获取设备的I/O接口117相连并将计算结果予以输出。其中,各计算装置通过具有目的地址的封装后的分散密文进行获取或转发所述分散密文。其中,x11+x12+x13=x1,y11+y12+y13=y1,x21+x22+x23=x2,y21+y22+y23=y2。
需要说明的是,一方面,基于单个一体机执行一计算任务的计算量,可以由串联连接中的一个一体机完成计算也可以由部分一体机完成计算,其中,所述计算任务将在后续详述。以图4为例,一体机P1能基于获取的分散密文单独完成计算时,可以将单独计算得到的计算结果通过一体机P2发送给一体机P3,一体机P3的计算装置S1和计算装置S2通过各自的I/O接口2将计算结果予以输出。另一方面,以上各示例中所提及的二次分散仅为举例,分散方式还可举例为Shamir分散等。此外,以上示例中一体机所执行的数据分配方式仅为举例,一体机还可以执行更复杂的计算任务,例如为多方安全计算系统中的各一体机分配计算角色、协议、计算任务等。
需要说明的是,图3和图4示例中一体机内部的各计算装置的连接还可以用前述实施方式中所述的可编程的集成电路进行连接。以图3为例,一体机P1中各计算装置中用于内部连接的I/O接口3均与所述可编程的集成电路连接,以实现一体机P1内部的各计算装置的连接。
为了构建一体机中各计算装置在互不信任环境下安全的数据传输和存储。所述一体机中每一计算装置还包括有控制器。所述控制器为计算装置中基于硬件划分的和/或利用软件权限管理的电路模块,其为多方安全计算提供计算数据的密码学操作。
所述控制器可以是一种可执行至少一次写入操作的芯片,例如:一次性可编程芯片、FPGA等。根据一体机中所配置的计算装置的数量、多方安全计算的方式,一体机中各计算装置的控制器中被预先烧录与执行多方安全计算相关的文件。在一些示例中,全部文件均为永久性保存的文件或有效期长于一体机使用寿命的文件,对应的,所述控制器为一次写入操作的芯片。在又一些示例中,至少部分文件为基于有效期限或人为操作而更新的,对应的,所述控制器为多次写入操作的芯片。
所述每一控制器存储有以下至少一种文件:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,以及用于执行密码学操作的密钥和/或证书。
其中,所述用于管理所属计算机装置资源的管理配置是指一体机的管理系统对计算装置的访问控制配置。为防止外部计算设备对一体机中的各计算装置进行攻击,各计算装置中的控制器配置有对所属计算装置的访问控制权限的管理配置信息。不同控制器所存储的管理配置信息不完全相同,甚至完全不同。由此,增强了一体机中各计算装置在互不信任计算架构系统中访问控制的安全性。其中所述资源包括所述各计算装置的软件资源和硬件资源,所述软件资源包括计算装置的操作系统、虚拟机等,所述硬件资源包括计算装置的内存、硬盘、处理器等,所述管理配置包括用于硬盘加密的密钥、限制管理权限的证书等用于管理各计算装置的软件资源和硬件资源的配置信息,使得所述资源只有具有管理权限的主体可以访问,避免了远程的非法访问。
其中,所述多方安全计算协议为基于各计算装置执行多方安全计算的计算角色为相应计算装置提供用于执行一计算任务的多方安全计算。其中,所述多方安全计算协议包含:对应计算角色执行的本地计算和数据通信。其中,所述计算任务将在后续描述。
其中,所述用于执行密码学操作的密钥和/或证书为用于保证各计算装置对所获取的分散密文、执行多方安全计算而产生的中间数据或计算结果、数据通信等提供安全性存储及传输而预设的文件。其中,根据实际设计的密码学操作规则,所述控制器中可存储密钥、证书或密钥和证书。
在此,为使得各计算装置在例如数据通信期间执行基于密码学操作的安全数据通信过程,所述控制器所存储的密钥和/或证书与相应的协议相关联。例如,计算装置S1在执行多方安全计算时欲将计算数据D1传递至另一计算装置Sa,则根据计算装置S1的控制器C1中存储的多方安全计算协议P1,计算装置S1的处理器读取控制器中预存的由认证中心颁发的另一计算装置Sa的认证证书验证通过后则得到计算装置Sa的合法公钥K1。计算装置S1用合法公钥K1对计算数据加密得到密文M1并发送给计算装置Sa,计算装置Sa的处理器读取同一计算装置中控制器C2中存储的计算装置Sa的私钥K2,用私钥K2解密所述密文M1得到计算数据。由此降低在多方安全计算期间一体机内各计算装置被中间人攻击的情况。
又如,计算装置S2在执行多方安全计算时欲将计算数据D2传递至另一计算装置Sb,则根据计算装置S2的控制器C3中存储的多方安全计算协议P2,计算装置S2的处理器读取控制器中预存的计算装置S2的私钥K2对数据进行加密得到密文M1,并将密文M1连同计算数据发送给计算装置Sb,因为除计算装置S2外的计算装置无法生成相同的密文M1,所以密文M1可以看作是计算装置S2对数据的签名。所述计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置S2的公钥K1对接收的密文M1进行解密,如果解密后的信息与接收的数据一致则所接收的数据来自计算装置S2。由此,可对数据的发送者进行认证。
为了在认证数据发送者的基础上对所述数据实现加密传输,计算装置S2的处理器还可读取控制器中预存的计算装置Sb的公钥P1的认证证书,通过验证所述认证证书得到计算装置Sb的合法公钥P1,用合法公钥P1对数据进行加密得到密文M2,将所述密文M1连同密文M2发送到计算装置Sb,密文计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置Sb的私钥P2对接收的密文M2进行解密得到数据L1,密文计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置S2的公钥K1对接收的密文M1进行解密得到数据L2,如果数据L1与L2一致,则所接收的密文来自计算装置S2。
再如,计算装置S2在执行多方安全计算时欲将计算数据D2传递至另一计算装置Sb,则根据计算装置S2的控制器C3中存储的多方安全计算协议P2,计算装置S2的处理器读取控制器中预存的计算装置S2的私钥K2对数据的散列值进行加密得到密文M3,并将密文M3连同计算数据发送给计算装置Sb,因为除计算装置S2外的计算装置无法生成相同的密文M3,所以密文M3可以看作是计算装置S2对数据的签名,所述计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置S2的公钥K1对接收的密文M3进行解密,如果对密文解密后得到的散列值与接收的数据的散列值相同则所接收的数据来自计算装置S2。由此,可对数据的发送者进行认证。
同样为了在认证数据发送者的基础上对所述数据实现加密传输,计算装置S2的处理器还可读取控制器中预存的计算装置Sb的公钥P1的认证证书,通过验证所述认证证书得到计算装置Sb的合法公钥P1,用合法公钥P1对数据进行加密得到密文M4,将所述密文M3连同密文M4发送到计算装置Sb,计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置S2的公钥K1对接收的密文M3进行解密得到散列值L2,密文计算装置Sb的处理器读取同一计算装置中控制器C4中存储的计算装置Sb的私钥P2对接收的密文M4进行解密得到数据,如所述数据的散列值L1与散列值L2一致,则所接收的密文来自计算装置S2。
为了确保互不信任的计算系统架构中的多个计算装置在执行多方安全计算过程中所述多个计算装置之间信息通信和信息存储的安全性,以及降低各计算装置的控制器所存储的密钥、证书被盗取、篡改的风险,请参阅图5,其显示为所述多方安全计算一体机在另一实施方式中的硬件结构示意图。如图5所示,所述多方安全计算一体机还包括硬件安全模块,所述硬件安全模块与各计算装置连接,用于为各所述计算装置执行多方安全计算提供密码学操作。所述硬件安全模块(hardware security module,HSM)是专为保护加密密钥生命周期而设计的专用计算机硬件设备,硬件安全模块通过在可靠且防篡改的设备中安全地管理、处理和保存加密密钥,并基于所述加密密钥提供相关密码学操作。在此,所述硬件安全模块所提供的密码学操作包括以下至少一种:生成密钥对、生成认证证书、派生密钥、更新密钥、生成随机数、以及提供公钥基础设施。对应的,各计算装置中的控制器存储有所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书。其中,所述硬件安全模块和各计算装置中的控制器之间可藉由串行接口或并行接口相连。其中,所述串行接口举例为USB。所述并行接口举例为PCI-E接口等。
每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
其中,所述加密密钥包括但不限于主密钥(Master Key,MK)、基于所述主密钥而衍生出的各种密钥等。其中主密钥是最重要、最上层的密钥,并且所述主密钥的使用周期很长,为保证所述硬件安全模块所提供的密码学操作长期安全有效,在本申请的实施方式中,所述主密钥被随机分散成多个分散密钥并分散存储在所述多方安全计算一体机的多个计算装置中。例如,各计算装置的控制器中存储有所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。由此单一计算装置无法恢复所述主密钥的明文,故而增加了主密钥的安全性。
所述派生密钥是基于主密钥生成的,例如,所述派生密钥是用主密钥加上随机数或者用主密钥减去随机数生成的。所述硬件安全模块在生成密钥对、生成认证证书、更新密钥以及提供公钥基础设施等操作时使用所述派生密钥,不利用存储在各计算装置中的主密钥的分散密文恢复所述主密钥使得主密钥长期地分散存储在各计算装置中,保证了主密钥的安全。
在接收到多方安全计算指令执行多方安全计算时,每一计算装置基于预置的多方安全计算协议,与指定的计算装置进行数据通信。其中,执行数据通信的计算装置的数量和计算装置之间数据通信的方式与所述多方安全计算指令和多方安全计算协议相关,并且在每一计算装置与另一计算装置之间进行数据通信都是基于所述密码学操作进行通信,由此保证了各计算装置之间数据通信的安全性。
所述生成密钥对是所述硬件安全模块基于主密钥为各计算装置生成的公钥和私钥对,所述公钥是对各计算装置公开的密钥,所述私钥是各计算装置私有的密钥不会透露给任何其他计算装置。
所述硬件安全模块基于主密钥(或派生密钥)生成密钥对的公钥密码算法包括但不限于:RSA公钥密码算法、ElGamal方式公钥密码算法、Rabin方式公钥密码算法、椭圆曲线密码公钥密码算法等。以RSA公钥密码算法为例,所述RSA公钥密码算法的加密过程可以用如下公式表示:密文=明文E modN,即密文是明文的E次方除以N的余数,其中,E和N的组合就是公钥;所述RSA公钥密码算法的解密过程可以用如下公式表示:明文=密文D modN,即明文是密文的D次方除以N的余数,其中D和N就是私钥。其中,所述硬件安全模块基于主密钥、或者随机数初始值生成用于确定E、D、N的伪随机数等。
在一实施方式中,硬件安全模块将为一计算装置生成的公钥和私钥对发送给对应的计算装置并保存在相应控制器中。在另一实施方式中,硬件安全模块将私钥发送给各计算装置,将公钥保存到硬件安全模块本地,在各计算装置需要利用公钥进行数据通信时将公钥发送给对应的计算装置并保存在相应控制器中。在执行多方安全计算的一些示例中,利用存储在各控制器中的密钥对,两个计算装置所传输的计算数据均为密文形式。例如,按照多方安全计算协议,作为发送方的计算装置S1利用所获取的接收方的计算装置S2的公钥对待传输的计算数据进行加密,并将加密后的计算数据发送给所述计算装置S2,则计算装置S2利用私钥解密后得到所述计算数据并继续执行多方安全计算。在执行多方安全计算的又一些示例中,利用存储在各控制器中的至少公钥,两个计算装置之间构建安全传输通道以传输计算数据。例如,按照多方安全计算协议,作为发送方的计算装置S1利用所获取的接收方的计算装置S2的公钥对用于建立通信连接的通信请求进行加密,并将加密后的通信请求发送给所述计算装置S2,则计算装置S2利用私钥解密后得到所述通信请求并开始构建计算数据的安全传输通道。
所述生成认证证书是硬件安全模块基于主密钥对所述各计算装置的公钥进行签名后生成的各计算装置公钥的认证证书,其中,所述硬件安全模块采用的签名算法包括RSA、ElGamal、DSA、ECDSA、Rabin等。
在一实施方式中,硬件安全模块将生成的认证证书分别发给各计算装置并保存在控制器中,即每个计算装置都持有自身公钥的认证证书。在另一实施方式中,硬件安全模块将生成的证书全部分发给每个计算装置并保存在控制器中,即每个计算装置有全部计算装置公钥的认证证书。在执行多方安全计算的一些示例中,利用存储在各控制器中的计算装置自身的认证证书,两个计算装置之间基于合法公钥加密的会话密钥加密传输计算数据。例如,按照多方安全计算协议,作为发送方的计算装置S1将带有自身公钥K1的认证证书的发送数据请求发给计算装置Sa,计算装置Sa的控制器预存有所述硬件安全模块所提供的公钥,所述计算装置Sa利用其控制器所存储的公钥对认证证书进行解密得到计算装置S1的合法公钥K1,再利用所述合法公钥K1加密会话密钥K3得到会话密钥的密文,计算装置S1用自身的私钥K2对所述会话密钥K3的密文进行解密得到会话密钥。计算装置S1基于会话密钥K3将本地计算得到的数据进行加密发送给计算装置Sa。在执行多方安全计算的又一些示例中,利用存储在各控制器中的多个计算装置的认证证书,用合法公钥加密传输计算数据,计算装置S1利用所获取的计算装置Sa的认证证书,计算装置S1用所述硬件安全模块的公钥对计算装置Sa的认证证书进行解密得到计算装置Sa的合法公钥Ka,计算装置S1利用所述合法公钥Ka对所述数据进行加密传输。
基于所生成的认证证书,在执行多方安全计算时,计算装置和计算装置之间、或计算装置、硬件安全模块和另一计算装置三者之间基于所述认证证书执行公钥基础设施(Public Key Infrastructure,PKI)的操作,以实现安全的数据通信。其中,PKI又称公开密钥基础架构、公钥基础建设、公钥基础设施、公开密码匙基础建设或公钥基础架构。通常,所述公钥基础设施协助各计算装置通信以达成机密性、消息完整性、以及用户认证,而不用预先交换任何秘密信息。在本申请的实施方式中,所述各计算装置之间基于硬件安全模块进行安全的数据通信的过程就是在公钥基础设施下完成的。在执行多方安全计算的一些示例中,一体机中的各计算装置基于硬件安全模块生成的认证证书和密钥对实现用户认证与数据的加密传输。例如,按照多方安全计算协议,作为发送方的计算装置S1用所述硬件安全模块的公钥对计算装置Sa的认证证书C1进行验证,计算装置S1对认证证书C1验证通过后得到计算装置Sa的合法公钥K1用合法公钥K1对数据进行加密得到密文M1发送给计算装置Sa,计算装置Sa用自身私钥对密文M1进行解密得到所述数据。计算装置S1用认证后得到的计算装置Sa合法的公钥K1对发送的数据进行加密保证了数据传输的机密性。
所述生成随机数的方式是将存储在硬件安全模块中的种子输入伪随机数生成器生成所述随机数。所述伪随机数生成器算法包括:线性同余法、单向散列函数法、密码法、梅森旋转算法等。生成的所述随机数可用于生成密钥对、生成认证证书、派生密钥、更新密钥,还可以用于各计算装置执行的多方安全计算等。在执行多方安全计算的一些示例中,所述一体机中的各计算装置利用所述随机数执行本地计算以得到可供抵消的中间数据或计算结果,由此确保在计算装置之间、计算装置与其他设备之间所传输的数据是无法泄密的。例如,所述一体机中的四个计算装置分别为S1、S2、Sa、Sb,若要计算Z=X+Y时,基于所述多方安全计算协议,计算装置S1和S2之间的随机数生成器共用同样的随机数发生规则,使得基于所述硬件安全模块中的种子计算装置S1和S2之间得到共享随机数r12,计算装置S1、S2在本地分别计算Z1=X1+Y1和Z2=X2+Y2,将Z1+r12和Z2-r12后发送给结果接收者即可解密得到Z,即,Z=Z1+Z2=X1+Y1+X2+Y2+r12-r12=(X1+X2)+(Y1+Y2)=X+Y。上述采用令计算装置S1对随机数做加法,以及令计算装置S2对随机数做减法的方式仅为举例,也可以采用令计算装置S2对随机数做加法,以及令计算装置S1对随机数做减法的方式。
以所述多方安全计算一体机中有4个计算装置S1、S2、Sa、Sb为例描述在多方安全计算过程中基于密码学操作而执行的一次数据通信,其中,计算装置S1向计算装置Sa发送数据前计算装置Sa应认证S1的身份并授权S1向其发送共享密钥加密后的数据,通过上述方式可以确保在多方安全计算一体机中所述计算装置S1和计算装置Sa之间的数据通信是安全的。
在一实施方式中,请参阅图6,图6显示为本申请的多方安全计算一体机中的两个计算装置进行数据通信在一实施方式中的示意图,计算装置S1存储有其自身的公钥K1、私钥K2、硬件安全模块的公钥和经硬件安全模块签名的公钥K1的证书,计算装置Sa存储有其自身的公钥K3、私钥K4、硬件安全模块的公钥和经硬件安全模块签名的公钥K3的证书。计算装置S1将带有自身公钥的认证证书的发送数据请求发给计算装置Sa,计算装置Sa将基于硬件安全模块的公钥解密得到的计算装置S1的合法公钥,计算装置Sa用合法的计算装置S1的公钥K和计算装置Sa的公钥K3生成共享密钥K13并将所述共享密钥用所述计算装置S1的公钥K1进行加密得到K13′,只有计算装置S1的私钥K2才能解密出所述共享密钥K13,所述共享密钥又称会话密钥、工作密钥等,计算装置S1对生成的加密的共享密钥K13′用其私钥K2进行解密可得到所述共享密钥K13,计算装置S1将要发送的数据用共享密钥K13加密后发送给计算装置Sa,除计算装置S1只有计算装置Sa才能解密出所述数据。通过上述方式可以确保在多方安全计算一体机中所述计算装置S1和计算装置Sa之间的数据通信是安全的。
请参阅图7,图7显示为本申请的多方安全计算一体机中的两个计算装置进行数据通信在另一实施方式中的示意图,计算装置S1存储有其自身的公钥K1、私钥K2、硬件安全模块的公钥、经硬件安全模块签名的公钥K3的证书和经硬件安全模块签名的公钥K1的证书,计算装置Sa存储有其自身的公钥K3、私钥K4、硬件安全模块的公钥、经硬件安全模块签名的公钥K3的证书和经硬安全模块签名的公钥K1的证书。计算装置S1用私钥K2对数据请求签名后连同数据请求一起发给计算装置Sa,计算装置Sa用硬件安全模块的公钥验证存储在计算装置Sa控制器中的经硬件安全模块签名的公钥K1的证书,验证成功后计算装置Sa得到了合法公钥K1。计算装置Sa基于合法公钥K1验证经计算装置S1加密的数据请求,验证通过后用合法的计算装置S1的公钥K1和计算装置Sa的公钥K3生成共享密钥K13,并将所述共享密钥用所述计算装置S1的公钥K1进行加密得到K13′,只有计算装置S1的私钥K2才能解密出所述共享密钥K13,所述共享密钥又称会话密钥、工作密钥等,计算装置S1对生成的加密的共享密钥K13′用其私钥K2进行解密可得到所述共享密钥K13,计算装置S1将要发送的数据用共享密钥K13加密后发送给计算装置Sa,除计算装置S1只有计算装置Sa才能解密出所述数据。通过上述方式可以确保在多方安全计算一体机中所述计算装置S1和计算装置Sa之间的数据通信是安全的。
需要说明的是,所述计算装置之间进行安全的数据通信过程并不限于上述实施例。
基于上述任一示例的描述,多方安全计算一体机中的各计算装置基于硬件安全模块预先生成并保存在控制器中的认证证书、密钥对、随机数等中的至少一种在互不信任的计算系统架构中为多方安全计算提供安全的数据通信。为确保各控制器中所保存的密钥对、证书等不被盗取或篡改,所述认证证书和密钥对可以定期或非定期进行更新。
为此,所述硬件安全模块的更新密钥操作是所述硬件安全模块对所述生成的密钥对、生成的认证证书等进行定期或不定期更新后发送给所述各计算装置,所述硬件安全模块更新后的密钥对与认证证书不同于更新前的密钥对与认证证书,并对更新前生成的认证证书和密钥对进行作废。通过更新密钥保证了多方安全计算一体机中各计算装置之间数据通信的长期安全。
基于上述各密码学操作的示例描述,所述一体机中每一计算装置在密码学操作所提供的数据安全性下,执行对应计算任务的多方安全计算。
所述每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。所述秘密分享技术是将隐私数据以适当的方式拆分,拆分后的每一个分散密文由不同的参与者管理,单个参与者无法恢复隐私数据,只有若干个参与者一同协作才能恢复隐私数据。在此,所述参与者为所述一体机中的计算装置。各计算装置依据各自的多方安全计算协议执行多方安全计算。
所述多方安全计算协议基于所述隐私数据的分散方式和所述被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的,所述隐私数据的分散方式和所述被配置于互不信任的计算系统架构中的所述计算装置的数量不同则所述多方安全计算协议也不同。
所述多方安全计算协议为指示并调度多方安全计算一体机中各计算装置执行的对应计算任务的多方安全计算的过程,其包括但不限于:描述加法、减法、乘法或除法等数学计算的计算任务的多方安全计算执行过程,描述逻辑和、或、非、异或、比较等逻辑计算的计算任务的多方安全计算执行过程等。在本申请的实施方式中,所述计算装置的数量为四个,所述多方安全计算指令是任务管理平台基于四个计算装置协同执行的多方安全计算方式来执行计算任务而设计的,其中所述计算任务用于对隐私数据进行数据处理。
其中,所述任务管理平台可为单台计算机设备等。其中,所述单台计算机设备可以是自主配置的用于执行将计算任务转换成多方安全计算指令的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。
所述任务管理平台可包括存储装置、处理装置、接口装置等。事实上,根据任务管理平台实际运行所述处理方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信协同完成。
为此,所述接口装置与处理装置数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述接口装置包括但不限于网卡、移动网络接入模块、通过总线与处理装置相连的总线接口等。所述接口装置还与所述多方安全计算一体机的计算装置通信连接,其中,所述计算装置是由处理装置执行所述处理方法而选定的,所述计算装置可以为一个或多个。所述接口装置通过互联网、移动网络、及局域网络中至少一种与各计算装置进行数据通信,以便向各计算装置发送用于多方安全计算的多方安全计算指令。
所述存储装置用于存储可执行所述处理方法的至少一个程序。所述存储装置可与处理装置位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的接口装置将程序传递给运行所述程序的处理装置。所述存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储装置还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储装置中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理装置可操作地与存储装置耦接。更具体地,处理装置可执行在存储器和/或非易失性存储设备中存储的程序以在任务平台中执行操作。如此,处理装置可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理装置所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于接口装置实现数据通信,以协同地执行将计算任务转换成可供四个计算装置进行多方安全计算的多方安全计算指令,并提供给各计算装置以供执行。
所述任务管理平台用于获取一计算任务,并将所述计算任务转换成多方安全计算指令。其中,所述输入数据为执行计算任务所需的数据,其包括但不限于:来自任务管理平台自身生成的数据,来自用户输入的数据,来自一数据源的数据,或者来自互联网等其他可通信计算机设备中的数据中的至少一种。在一些示例中,所述输入数据为一种隐私数据。其中,所述隐私数据是指以数字化形式存储并且具有不希望被泄露属性的数据,其包括但不限于:个人/企业身份信息、个人/企业账户信息、个人体貌特征信息、个人/企业消费信息(如账单)、个人/企业因使用软件的行为而产生的信息(如移动路线、浏览时长等)、企业收集到的具有商业价值的评价信息、以及企业根据至少上述各信息进行分析后得到的信息等。在此,所述数字化形式存储举例为带有隐私数据标签和/或权限而保存在计算机可读存储介质中的数据,其不希望被泄露的属性表现在所设置的标签和/或权限。其中,所述标签包括但不限于标记在数据库中且对应于数据库中所存储的数据的标志位(如布尔值等)。所述权限包括但不限于:读写数据的权限、获得明文的隐私数据的权限等。
所述计算任务用于对输入数据进行数据处理。在一些示例中,所述输入数据为一种隐私数据;技术人员预先将包含处理隐私数据的业务逻辑的程序存储在任务管理平台中,所述业务逻辑是藉由计算机程序语言来描述对隐私数据的处理过程,该处理过程可包含一个或多个计算任务。所述业务逻辑是指技术人员利用一个或多个计算任务对包含隐私数据进行数据处理、且依据自然规律而得到的流程。例如,一种业务逻辑包括:利用银行B1和B2中用户A的银行存款数量、银行贷款数量、银行还款历史记录等确认用户A的还款能力的评价流程。又如,一种业务逻辑包括:利用用户P1和P2当前的位置信息向用户P1所持终端设备提供P1与P2之间相距距离和相距路线信息的路程提示流程。
所述计算任务是按照业务逻辑中输入数据和输出数据之间的逻辑顺序而划分的。例如,业务逻辑包含将输入数据A1和A2进行乘法计算的处理逻辑并得到处理结果B1,以及将处理结果B1作为又一输入数据A3和输入数据A4进行比较计算的处理逻辑得到处理结果B2;其中,所述计算任务可划分为利用输入数据A1和A2执行乘法计算的计算任务,以及利用输入数据A3和A4执行比较计算的计算任务。
需要说明的是,上述示例仅为举例,根据实际设计需要,业务逻辑中可包含更复杂的计算任务,而应理解,复杂的计算任务可由一个或多个计算单元来执行。其中,所述计算单元包括但不限于:加、减、乘、除等数字计算处理,以及与、或、非等逻辑计算等。
为此,在一些示例中,所述计算任务包括:藉由计算机程序语言编辑界面而获取的程序模块。例如,所述任务管理平台提供用于获取描述业务逻辑的计算机语言程序的编辑界面;技术人员按照编辑界面所提供的程序工具包(如API等)进行业务逻辑设计,并提交给所述任务管理平台,所述任务管理平台将程序分解成多个计算任务。在又一些示例中,所述任务管理平台提供用于获取输入数据的数据源信息及对该输入数据的处理方式的编辑界面。例如,所述任务管理平台提供包含输入编辑框、选择编辑框等的编辑界面;技术人员按照编辑界面所提供的输入提示进行业务逻辑设计,并提交给所述任务管理平台,所述任务管理平台将基于所获取的编辑界面而生成的程序分解成多个计算任务。在另一些示例中,所述计算任务为将前述示例中提及的利用计算机程序语言描述的程序转换成利用计算算式而描述的处理过程。例如,所述处理过程可由计算机程序语言描述,或者利用源码语法结构来描述。其中,所述源码语法结构举例为抽象语法树(Abstract Syntax Tree,AST)。例如,请参阅图8,其显示为利用树状结构描述循环处理操作的计算任务的示意图;其中,将循环处理操作的计算任务描述成通过包含乘法计算得到处理结果的树状结构。所述任务管理平台可根据本申请所提供的多方处理方法来优化图8所示的树状结构,例如,请参阅图9,其显示为将图8所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应循环处理操作的计算任务优化成利用矩阵乘法计算执行循环处理操作的计算任务,并依据优化后的计算任务生成多方安全计算指令。
与此类似地,又如,请参阅图10,其显示为利用树状结构描述提取公因子操作的计算任务的示意图;其中,将提取公因子操作的计算任务描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。请参阅图11,其显示将图10所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应提取公因子操作的计算任务优化处理成通过加法计算所得到的各计算结果级联和乘法计算的计算任务,并依据优化后的计算任务生成多方安全计算指令。
再如,请参阅图12,其显示为利用树状结构描述常用表达提取操作的计算任务的示意图;其中,将常用表达提取操作的计算任务描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。请参阅图13,其显示为将图12所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应常用表达提取操作的计算任务优化成通过矩阵加法计算的计算任务,并依据优化后的计算任务生成多方安全计算指令。
所述任务管理平台按照本申请所提供的多方安全计算一体机中计算装置的数量,将计算任务转换成由多方安全计算一体机中各计算装置协同执行的多方安全计算指令。其中,以图2和图3中显示的四个计算装置为例,本申请所提供的多方安全计算一体机中包含四个计算装置。
在另一些示例中,所述多方安全计算利用四个计算装置协同计算由终端设备直接提供的计算任务及计算角色,按照计算角色,相应计算装置将计算任务转换成多方安全计算指令,并执行所述多方安全计算。其中,所述终端设备可为用户操作的计算机设备,如个人电脑等。例如,终端设备将待多方安全计算的计算任务,以及各自在多方安全计算中的计算角色等内容直接发送给指定的四个计算装置,一并发送的还可以包含用于返回计算结果的数据获取设备。各计算装置基于多方安全计算协议对所接收的计算任务进行翻译处理并得到多方安全计算指令,各计算装置通过执行所述多方安全计算指令执行所述多方安全计算。其中,计算任务与任务管理平台所获得的计算任务相同或相似,在此不再重述。
请参阅图14,其显示为本申请所述多方安全计算一体机执行多方安全计算的流程示意框图。所述多方安全计算由所述多方安全计算一体机中的四个计算装置协同执行。
在步骤S110中,所述多方安全计算一体机获取对应所述计算任务的多方安全计算指令,以及获取隐私数据的分散密文。
其中,所述多方安全计算指令是基于四个计算装置协同执行的多方安全计算方式来执行计算任务而设计的。其中,任务管理平台按照预先构建的对应各计算任务的多方安全计算协议,预先将计算任务转换成所述多方安全计算指令,并发送给一体机。其中,所述多方安全计算协议为指示并调度一体机中各计算装置执行对应计算任务的多方安全计算的过程,其包括但不限于:描述加法、减法、乘法或除法等数学计算的计算任务的多方安全计算执行过程,描述逻辑和、或、非、异或、比较等逻辑计算的计算任务的多方安全计算执行过程,描述秘密传输的多方安全计算执行过程等。
所述多方安全计算指令包括:为采用多方安全计算的方式执行计算任务而指示多方安全计算一体机中四个计算装置进行本地计算的指令,计算装置之间执行数据交互的指令,获取输入数据的指令,生成随机数的指令等。所述多方安全计算指令还可以包含指示计算装置执行本地计算和数据交互的计算角色的指令。所述多方安全计算指令可以由计算机程序语言来描述,或者由机器语言来描述。
根据前述各生成多方安全计算指令的示例,在一种示例中,所述多方安全计算指令直接来自于任务管理平台。在另一种示例中,所述多方安全计算指令基于所获取的计算任务而生成。
在一些示例中,所述多方安全计算一体机中的各计算装置获取对应计算任务的完整的多方安全计算指令,即获取包含有每个计算装置执行的计算指令,为此,为使每个计算装置协同执行,所述步骤包括各所述计算装置获取所述多方安全计算指令及计算角色;以供各计算装置按照所分别获取的计算角色执行所述多方安全计算指令。其中,所述计算角色用于标记所述多方安全计算指令中各执行本地计算的计算装置,以及标记所述多方安全计算指令中执行计算装置之间的数据通信时数据发送方和数据接收方等。
在又一些示例中,多方安全计算一体机中的各计算装置分别获取所述多方安全计算指令中对应本地执行的计算指令。其中,所述本地执行的计算指令包含用于执行本地计算的指令,为执行数据通信而发出本地存储的数据的指令,为执行数据通信而将所接收的数据存储本地的指令,获取经处理的输入数据的指令,生成随机数的指令等。例如,所述多方安全计算指令包含计算装置S1执行生成随机数r12的指令P1,计算装置Sa执行生成随机数rab的指令Pa等,则计算装置S1获取指令P1,计算装置Sa获取指令Pa。
为执行计算任务,所述多方安全计算一体机中的各计算装置还获取输入数据的分散密文。其中,所述分散密文包含来自所述计算任务所需的所有输入数据经随机分散处理而得到的,例如,计算任务需要两个输入数据X和Y,则各计算装置得到的分散密文包含{xi,yj},其中,xi和yj分别为X和Y经随机分散后得到的。在此,对应X的分散密文可以为多个,但不应该多到可通过恢复运算得到输入数据X的程度,同理可类似的还有输入数据Y,在此不予详述。
在此,根据计算任务中输入数据的数据来源,所述多方安全计算一体机可从一个或多个数据源获取输入数据。其中,根据包含输入数据为隐私数据或非隐私数据的计算任务,对应的所述多方安全计算一体机还获取作为输入数据的非隐私数据;以及多方安全计算指令是基于非隐私数据而确定的。换言之,多方安全计算指令不必然一定使用所述多方安全计算一体机中的所有计算装置。可根据输入数据为隐私数据或非隐私数据而设置对应的计算指令。在一些具体示例中,计算任务所涉及的输入数据均为非隐私数据,则对应的多方安全计算指令为指令一个计算装置执行各计算指令。在又一些具体示例中,计算任务所涉及的输入数据包含隐私数据和非隐私数据,则对应的多方安全计算指令包含针对非隐私数据的优化多方安全计算的计算指令。例如,输入数据包含隐私数据A1和非隐私数据A2,计算任务包含计算A1和A2乘积,则多方安全计算指令包含令计算装置S1计算a1×A2的指令,以及令计算装置S2计算a2×A2的指令;其中,a1和a2为A1经随机分散处理后得到的分散密文。在再一些具体示例中,输入数据包含隐私数据A1和A3,计算任务包含计算A1和A3乘积,则多方安全计算指令包含令计算装置S1计算a11×a31的指令,令计算装置S2计算a12×a32的指令,计算装置Sa计算a13×a33的指令,计算装置Sb计算a14×a34的指令,令计算装置S1与Sa进行置换数据的指令,令计算装置S2与Sb进行置换数据的指令,以及令各计算装置基于置换得到的数据和本地计算得到的数据进行计算的指令等;其中,a11和a12,以及a13和a14分别为输入数据A1经随机分散处理得到的分散密文;a31和a32,以及a33和a34分别为输入数据A3经随机分散处理得到的分散密文。由上述各示例可见,所述多方安全计算指令是依据计算任务中输入数据所包含的非隐私数据而确定的。
其中,为符合数据源对所述输入数据的隐私性要求,在一些示例中,任务管理平台根据计算任务向相应数据源发出包含对分散密文分配方式的指令信息。其中,所述任务管理平台根据所述计算任务所对应的多方安全计算指令中分散密文的计算需要,向相应数据源请求将输入数据进行随机分散处理,数据源按照所提供的分配方式将随机分散后的各分散密文分发给所述多方安全计算一体机中的各计算装置。在又一些示例中,用于执行计算任务的输入数据具有相同的随机分散处理方式,则所述任务管理平台可依据预先与各数据源约定的数据分配规则,提供各计算装置设备信息和所对应的分散密文的编号,以便数据源根据编号分配所处理后的各分散密文。在另一些示例中,所述分散密文还可以由多方安全计算一体机中的各计算装置直接向数据源请求而被获取。例如,所述多方安全计算一体机中各计算装置依据所获取的多方安全计算指令所提供的数据源向相应数据源发出包含获取分散密文的数据请求,其中,所述数据请求包含数据源基于预设的多方安全计算一体机中各计算装置而设置的分散密文的编号,由此各计算装置各自获得可执行多方安全计算的分散密文。在再一些示例中,所述输入数据可由计算装置在执行计算指令过程中所产生的中间数据表示,例如,在包含混合计算的多方安全计算指令中,其中一个计算装置按照计算指令将中间数据进行随机分散成分散密文后,分配给另一个或多个计算装置等。
其中所述输入数据可以为整数类型数据或浮点类型数据。其中,数据源可直接将整数类型数据进行随机分散处理。对于浮点类型数据,数据源将浮点类型数据进行二进制化处理,再进行随机分散处理,由此得到多个分散密文。其中,二进制化处理的方式举例包括IEEE754。例如,数据源所提供的输入数据为125.5,其二进制表示为1111101.1,以写成二进制的科学计数为:1.111101*2^6,E=e+127=133,即E的阶码133的二进制格式为10000101,所以125.5的32位二进制浮点数为0 10000101 11110100000000000000000。其中,第一位0表示数值正负符号,由此将125.5转换成32位二进制数0 1000010111110100000000000000000,并将该32位二进制数进行随机分散处理。当计算任务中进行数据计算的多个输入数据包含浮点类型数据时,可采用上述浮点数转二进制格式整数的方式统一各输入数据,再执行计算。
在此,所述随机分散处理是指将输入数据随机生成多个分散密文[xj],其中,分散密文[xj]通过可恢复的数学计算可得到相应的输入数据。在此基础上,分散密文为输入数据基于所述多方安全计算一体机执行多方安全计算所需的随机分散处理方式而得到的;以及分散密文[xj]的数量是基于多方安全计算一体机所执行的多方安全计算指令和/或计算装置的数量而预先设置的。例如,计算任务中加法计算被配置成利用两个计算装置执行,相应输入数据被分散成由随机生成的第一分散密文,以及基于第一分散密文得到的第二分散密文,其中,第一分散密文和第二分散密文可恢复成所述输入数据,该两个分散密文被分配给不同计算装置进行计算。又如,计算任务中包含两个隐私的输入数据的乘法计算,待处理的两个输入数据分别被随机分散成四组分散密文,每组分散密文用于分配给一个计算装置以得到各计算装置的分散密文。
在一些具体示例中,所述随机分散处理方式包括:随机产生至少一个分散密文,按照所产生的分散密文将输入数据进行分散处理。在此,在一些更具体示例中,所述随机分散处理方式可基于执行计算的计算装置的数量而随机产生至少一个分散密文。例如计算任务中包含加法计算,执行该加法计算的计算装置数量为两个,则随机产生一个分散密文a1,并根据该分散密文a1将输入数据进行分散处理得到分散密文a1和a2。在又一些更具体示例中,所述随机分散处理方式可基于统筹计算任务所使用的各种计算而随机产生多个分散密文。例如计算任务中包含输入数据A1和A2的加法计算,以及输入数据A2和A3乘法计算,其中,加法计算由两个计算装置执行,乘法计算由四个计算装置执行,则为减少与数据源的交互次数,可将所有输入数据均随机分散成四个分散密文,由各计算装置根据执行指令提取相应的分散密文。例如,针对每个输入数据,均随机产生两个分散密文,并根据该两个分散密文将相应输入数据进行分散处理得到四个分散密文。在又一些更具体示例中,与前述示例不同的是,所述随机分散处理方式可基于统筹计算任务所使用的各种计算而随机产生一个分散密文,并根据该分散密文将输入数据随机分散成两个分散密文,并分配给不同计算装置,由各计算装置根据所执行的计算指令对所得到的分散密文发送给其他计算装置,或对所接收的分散密文进行再分散后发送给其他计算装置。
基于上述描述,以下举例一些随机分散方式的示例:在一些具体示例中,输入数据的随机分散处理方式包括针对数值的分散处理方式。所述随机分散处理方式包括:随机产生两个分散密文x1和x'1,基于所述分散密文x1和x'1将输入数据X分散成{x1,x'1,x2,x'2,xa,x'a,xb,x'b};其中,x2=X-x1=xa,x1=xb,x'2=X-x'1=x'b,x'1=x'a;各计算装置所获取的对应输入数据X的分散密文分别为{x1,x'1},{x2,x'2},{xa,x'a},{xb,x'b}。以计算任务为两个数相乘且其中一个输入数据是7为例,经随机分散处理输入数据7被分散成:分散密文包括{2,5}和{3,4};其中,2和3为随机生成的,分配给各计算装置的分散密文分别为{2},{5},{3},{4}。在此需要说明的是,该示例仅以其中一个输入数据的随机分散处理为例,而非仅限于两个数相乘的计算任务中仅有一个输入数据被执行随机分散处理。
还需要说明的是,上述随机处理的方式可以数据位n为约束,例如,随机产生的x1和x'1均限制在2n以内,其中,n表示x1和x'1的二进制位数。
在另一些具体示例中,所述输入数据包含比特值C;针对比特值的随机分散处理方式包括:随机产生两个比特位的分散密文c1和c'1,基于所述分散密文c1和c'1将输入数据C分散成用比特位表示的分散密文{c1,c'1,c2,c'2,ca,c'a,cb,c'b};其中, 各计算装置所获取的对应输入数据C的分散密文分别为{c1,c'1},{c2,c'2},{ca,c'a},{cb,c'b}。以计算任务包含输入数据C为比特值1为例,将输入数据1随机分解为0和1,并按照上述公式得到{0,1,1,0}四个分散密文,分配给各计算装置的分散密文分别为{0,1},{1,0},{1,0},{0,1}。
需要说明的是,上述各示例中对输入数据进行随机分散的方式并非仅择一而用,而是可以根据计算任务进行结合。所述多方安全计算一体机中的各计算装置从至少一个数据源或获取各输入数据的分散密文,以执行多方安全计算指令。
另外,借助输入数据包含隐私数据A1和A3,计算任务包含计算A1和A3乘积的示例并推广至其他计算任务,为利用四个计算装置对隐私数据所产生的分散密文进行在线的多方安全计算,两个计算装置利用共享随机数执行本地计算以得到可供抵消的中间数据或计算结果,由此确保计算装置之间、计算装置与其他设备之间所传输的数据是无法泄密的。为此,各计算装置共享用于产生所述共享随机数的种子,所述随机数的种子是保存在所述多方安全计算一体机的硬件安全模块中保证了共享随机数种子的安全,所述共享的随机数种子用于产生所述两个计算装置之间的共享随机数。例如,根据计算任务所生成的多方安全计算指令,计算装置S1和S2共享随机数r12,则硬件安全模块利用计算装置S1和S2共享的随机数种子基于同样的随机数发生规则生成所述共享随机数r12,由此有效避免计算装置S1和S2之间对随机数r12的通信操作。
在步骤S120中,按照所述多方安全计算指令,所述多方安全计算一体机中的至少两个计算装置对各自所获取的分散密文进行本地计算,和/或基于各自的多方安全计算协议其中两个计算装置将本地计算所产生的中间数据进行置换,得到经由各计算装置分别持有的计算结果。
其中,根据计算任务,所述多方安全计算指令可指示两个或多个计算装置仅执行本地计算,并得到计算结果。在一些示例中,所述多方安全计算指令包含基于计算任务中具有同态性的计算而生成的指令;按照所述多方安全计算指令,所述多方安全计算一体机中的计算装置执行本地计算并得到相应的计算结果。其中,所述同态性表示可具有一个封闭的具有结合律的运算,例如,加法计算等。在利用所述多方安全计算一体机执行加法计算时,多方安全计算指令可指示两个计算装置执行输入数据A1和A2的加法计算,并得到各自持有的计算结果。数据获取设备可通过获取该两个计算装置的计算结果得到A1+A2的处理结果。
在又一些示例中,多方安全计算指令包含指令计算装置分别对各自所获取的分散密文进行本地计算的指令,以及将本地计算所产生的中间数据进行交互的指令。在一些具体示例中,多方安全计算指令可对应计算任务中所涉及的每个计算。在又一些具体示例中,所述多方安全计算指令包含基于计算任务中多个计算之间的关联关系而设置的指令。其中,所述多个计算之间的关联关系包括但不限于:计算优先级关系、计算同态性、计算可同步性、计算所需的输入数据的随机分散处理方式等。根据所述关联关系,所述任务管理平台或多方安全计算一体机优化了各计算装置的本地计算和数据交互,由此各计算装置按照优化后的多方安全计算指令执行本地计算的指令,以及计算装置执行数据交互的指令。例如,计算任务中包含(X+Y)×Z,多方安全计算指令包含:指示两个计算装置执行本地计算得到对应(X+Y)多方安全计算的指令,指示该两个计算装置将各自持有的对应(X+Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算装置执行对应(X+Y)×Z多方安全计算的指令等。又如,计算任务中包含提取(X-Y)的最高位,多方安全计算指令包含:指示两个计算装置执行本地计算得到对应(X-Y)多方安全计算的指令,指示该两个计算装置将各自持有的对应(X-Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算装置执行基于所述计算结果执行位提取的多方安全计算的指令等。
在此,在多方安全计算一体机得到对应计算任务的计算结果后,数据获取设备从所述四个计算装置中而选取的至少两个计算装置所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述计算任务处理输入数据的处理结果。
在此,所述多方安全计算一体机通过执行多方安全计算指令得到由各计算装置分别持有的计算结果,其中,每个计算装置所持有的计算结果可以为一个或多个。例如,每个计算装置所持有的计算结果为两个。计算任务的数据获取设备按照计算装置的计算角色,从执行计算任务的四个计算装置中选取部分计算装置所持有的计算结果,并执行利用所得到的计算结果生成所述处理结果的计算指令,由此完成对包含输入数据的计算任务,并得到相应的处理结果。又如,各所述计算装置所持有的计算结果为两个,数据获取设备按照计算装置的计算角色从四个计算装置中选取两个计算装置并获取其持有的所有计算结果,再利用对所得到的四个计算结果进行计算,来得到对应计算任务的处理结果。利用上述示例中的处理方式,数据获取设备所得到的处理结果的数量为两个,若两个处理结果相同,则数据获取设备可认定多方安全计算一体机所执行的计算任务正确,反之,则不正确。由此可见,采用四选二的方式来提取计算结果还具有验证处理结果正确性的作用。
在此,根据实际计算任务的设计需求,所述数据获取设备可以是输入数据的提供方,如数据源,由此避免输入数据被泄露;所述数据获取设备还可以是产生计算任务的终端设备,如用户输入程序所使用的计算机设备;所述数据获取设备还以该计算任务的处理结果为输入数据的新的计算任务执行设备,如任务管理平台或其他计算机设备。
为此,按照多方安全计算协议而生成的多方安全计算指令描述了可提供四选二的多方安全计算方式的多方安全计算过程。
在一些示例中,计算任务中包含对两个输入数据进行数学计算的计算任务,比如,在统计算法中包含汇总两个输入数据的总和的计算任务。再如,在基于输入数据构建的评价算法中包含权重与输入数据进行乘法的计算任务等。
在此,所述步骤S120包括:令四个计算装置基于所获取的分散密文执行本地数学计算,以及令四个所述计算装置利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。其中所述置换数据的数据操作表示两个计算装置互换中间数据。
在一些具体示例中,所述计算任务包含两个输入数据的乘法计算任务,各计算装置所获取的分散密文分别为{x1,y1},{x2,y2},{xa,ya},{xb,yb},其中,x1=xa=X-x2且x2=xb,以及y1=ya=Y-y2且y2=yb,其中,X和Y为两个待进行乘法计算的输入数据;各计算装置分别进行基于乘法的本地计算以得到中间数据,以及通过置换的交互方式获取对方的中间数据,并基于本地生成的和置换得到的中间数据,各计算装置得到分别持有的计算结果。
在另一些具体示例中,四个所述计算装置利用两两共享的随机数和各自所获取的分散密文进行本地计算并产生中间数据,并在四个所述计算装置之间执行一次置换中间数据的数据交互;四个所述计算装置基于交互后的中间数据得到分别持有的计算结果。
其中,以所述多方安全计算一体机中的第一计算装置、第二计算装置、第三计算装置和第四计算装置依次获取分散密文{x1,x'1,y1,y'1},分散密文{x2,x'2,y2,y'2},分散密文{xa,x'a,ya,y'a},以及分散密文{xb,x'b,yb,y'b};其中,{x1,x'1,x2,x'2,xa,x'a,xb,x'b}是输入数据X经随机分散处理得到的,{y1,y'1,y2,y'2,ya,y'a,yb,y'b}是输入数据Y经随机分散处理得到的。其中,各分散密文可满足下述示例的随机分散规则:x2=X-x1=xa,x1=xb,x'2=X-x'1=x'b,x'1=x'a。
在此,各计算装置得到各自的分散密文后,执行以下各步骤,以实现在执行一次置换数据的数据交互情况下得到各自持有的计算结果:
在步骤121中,令所述第一计算装置和第二计算装置共享随机数r12和r'12,以及令所述第三计算装置和第四计算装置共享随机数rab和r'ab。其中,利用共享的随机数可提高计算装置的数据安全性。为了减少各计算装置对于共享的随机数进行数据通信的情况,各随机数可在生成多方安全计算指令时产生,或者多方安全计算指令中包含用于按照同样随机数生成规则生成共享随机数的随机数发生器,如此,第一计算装置和第二计算装置得到相同的随机数r12和r'12,以及所述第三计算装置和第四计算装置得到相同的随机数rab和r'ab。
在步骤S122中,令所述第一计算装置和第二计算装置分别对各自所持有的分散密文进行乘法计算和用于抵消随机数r12和r'12的数学计算,以便第一计算装置得到中间数据t1和t'1,以及第二计算装置得到中间数据t2和t'2。
在此,令第一计算装置执行基于公式t1=x1×y'1-r12,和t'1=x'1×y1-r'12的本地计算并得到中间数据t1和t'1;以及令所述第二计算装置进行基于公式t2=x2×y'2+r12,以及基于公式t'2=x'2×y2+r'12本地计算得到中间数据t2和t'2。
需要说明的是,上述采用令第一计算装置对随机数做减法,以及令第二计算装置对随机数做加法的方式仅为举例,也可以采用令第一计算装置对随机数做加法,以及令第二计算装置对随机数做减法的方式。
在步骤S123中,令所述第三计算装置和第四计算装置分别对各自所持有的分散密文进行乘法计算和用于抵消随机数rab和r'ab的数学计算,以便第一计算装置得到中间数据ta和t'a,以及第二计算装置得到中间数据tb和t'b。
在此,令所述第三计算装置执行基于公式ta=xa×y'a-rab,以及基于公式t'a=x'a×ya-r'ab本地计算得到中间数据ta和t'a;以及令所述第四计算装置执行基于公式tb=xb×y'b+rab,以及基于公式t'b=x'b×yb+r'ab本地计算得到中间数据tb和t'b。
需要说明的是,上述采用令第三计算装置对随机数做减法,以及令第四计算装置对随机数做加法的方式仅为举例,也可以采用令第三计算装置对随机数做加法,以及令第四计算装置对随机数做减法的方式。
在步骤S124中,令第一计算装置和第三计算装置置换各自的一个中间数据,以及第一计算装置和第四计算装置换各自的一个中间数据;令第二计算装置和第三计算装置置换各自的一个中间数据,以及第二计算装置和第四计算装置置换各自的一个中间数据。
在此,利用四个计算装置之间不以抵消随机数为目的而构建的数据交互关系,将参有随机数的中间数据进行置换。
例如,令第一计算装置将中间数据t1发送至第四计算装置,以及将中间数据t'1发送至第三计算装置;令第二计算装置将中间数据t2发送至第三计算装置,以及将中间数据t'2发送至第四计算装置;令第三计算装置将中间数据ta发送至第二计算装置,以及将中间数据t'a发送至第一计算装置;以及令第四计算装置将中间数据tb发送至第一计算装置,以及将中间数据t'b发送至第二计算装置。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算装置执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在此,若分散密文和共享的随机数是在值域内随机得到的,则每个计算装置执行一次置换数据的数据交互,每个计算装置共发出不超过2n位数据。为此,对于包含两个输入数据的数学计算的计算任务来说,所述多方安全计算一体机执行所述计算任务期间产生不多于2×4次基于置换数据的数据通信;以及所述多方安全计算一体机执行所述计算任务期间产生不多于2n×4比特数据量的数据通信。以两个输入数据均为隐私数据为例,所述多方安全计算一体机执行所述计算任务期间产生2×4次基于隐私换数据的数据通信,以及所述多方安全计算一体机执行所述计算任务期间产生2n×4比特数据量的数据通信。以两个输入数据中有一个隐私数据为例,所述多方安全计算一体机执行所述计算任务期间产生少于2×4次基于置换数据的数据通信,以及所述多方安全计算一体机执行所述计算任务期间产生少于2n×4比特数据量的数据通信。
在步骤S125中,令各计算装置分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算装置得到两个包含可抵消随机数的计算结果。
在此,第一计算装置执行基于公式z1=t1+tb和z'1=t'1+t'a的本地计算,得到计算结果z1和z'1;第二计算装置执行基于公式z2=t2+ta和z'2=t'2+tb'的本地计算,得到计算结果z2和z'2;第三计算装置执行基于公式za=ta+t2和z'a=t'a+t'1的本地计算,得到计算结果za和z'a;第四计算装置执行基于公式zb=tb+t1和z'b=t'b+t'2的本地计算,得到计算结果zb和z'b。
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
数据获取设备可依据上述多方安全计算协议所确定的包含可抵消的随机数的两个计算装置,选择第一计算装置和第三计算装置,或者第二计算装置和第四计算装置,并通过加和方式抵消计算装置所生成的随机数,并得到两个对应XY乘法计算任务的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XY乘法计算的处理结果,反之,则表示计算出错。
在另一些示例中,所述计算任务包含三个输入数据进行数学计算,例如,在利用神经网络对输入数据进行分类的算法中包含以权重、输入数据和偏置为三个输入数据进行数学计算的计算任务等。所述步骤S120包括:令四个所述计算装置利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算装置利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算装置基于所述随机数执行本地计算。其中,各自持有的所述计算结果用于处理对输入数据X、Y和Z的计算任务。
在一些具体示例中,所述计算任务包含三个输入数据X、Y和Z的乘法计算任务,各计算装置所获取的分散密文分别为{x1,y1,z1},{x2,y2,z2},{xa,ya,za},{xb,yb,zb},其中,x1=xa=X-x2且x2=xb;y1=ya=Y-y2且y2=yb;以及z1=za=Z-z2且z2=zb;可参考前述示例提供的计算输入数据X和Y的乘法计算任务,四个计算装置利用一次数据交互得到对应输入数据X和Y计算任务的第一计算结果并将其作为中间数据;再以该中间数据和对应Z的分散密文进行基于一次数据交互而执行的多方安全计算,由此得到各自持有的计算结果,其用于生成包含三个输入数据的计算任务的处理结果。
在此,各计算装置得到各自的分散密文后,执行以下各步骤,以计算三个输入数据的乘法计算任务。其中,各计算装置所获取的分散密文包括:{x1,y'1,z1},{x2,y'2,z2},{xa,y'a,za},{xb,y'b,zb};其中,x1=xa=X-x2且x2=xb;y'1=y'a=Y-y'2且y'2=y'b;以及z1=za=Z-z2且z2=zb。
在步骤S121’中,令所述第一计算装置和第二计算装置共享一随机数r12和r'12,以及令所述第三计算装置和第四计算装置共享一随机数rab和r'ab。在此,各随机数的共享方式可与前述示例中提及的方式相同,在此不再重述。
在步骤S122’中,令四个所述计算装置分别对涉及输入数据X和Y的分散密文进行乘法计算和用于抵消随机数和的数学计算,以便第一计算装置得到中间数据t1,第二计算装置得到中间数据t2,第三计算装置得到中间数据ta,第四计算装置得到中间数据tb。
在此,令所述第一计算装置基于公式本地计算得到中间数据t1;令所述第二计算装置分基于公式本地计算得到中间数据t2;令所述第三计算装置基于公式本地计算得到中间数据ta;以及令所述第四计算装置基于公式本地计算得到中间数据tb。
需要说明的是,上述采用令第一计算装置对随机数做减法,以及令第二计算装置对随机数做加法的方式仅为举例,也可以采用令第一计算装置对随机数做加法,以及令第二计算装置对随机数做减法的方式。上述采用令第三计算装置对随机数做减法,以及令第四计算装置对随机数做加法的方式也同样为举例,也可以采用令第三计算装置对随机数做加法,以及令第四计算装置对随机数做减法的方式。
在步骤S123’中,令第一计算装置和第三计算装置置换各自的中间数据;令第二计算装置和第三计算装置置换各自的中间数据。
在此,第一计算装置将中间数据结果t1发送给第三计算装置,以及第三计算装置将中间数据ta发送给第一计算装置;以及第二计算装置将中间数据结果t2发送给第四计算装置,以及第四计算装置将中间数据tb发送给第二计算装置。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算装置执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S124’中,令各计算装置利用所持有的各中间数据和对应输入数据Z的分散密文进行乘法的数学计算,以便第一计算装置得到中间数据s1,第二计算装置得到中间数据s2,第三计算装置得到中间数据sa,第四计算装置得到中间数据sb。
在此,第一计算装置基于公式s1=(t1+ta)×z1的本地计算;第二计算装置基于公式s2=(t2+tb)×z2的本地计算;第三计算装置基于公式sa=(ta+t1)×za的本地计算;第四计算装置基于公式sb=(t2+tb)×zb的本地计算。
在步骤S125’中,令所述第一计算装置和第二计算装置分别对各自所持有的中间数据s1和s2进行乘法计算和用于抵消随机数r12和r'12的数学计算,以便第一计算装置得到中间数据h1和h'1,以及第二计算装置得到中间数据h2和h'2;以及令所述第三计算装置和第四计算装置分别对各自所持有的中间数据sa和sb进行乘法计算和用于抵消随机数rab和r'ab的数学计算,以便第三计算装置得到中间数据ha和h'a,以及第四计算装置得到中间数据hb和h'b;
在此,令第一计算装置执行基于公式h1=s1-r12,和h'1=s1-r'12的本地计算并得到中间数据h1和h'1;以及令所述第二计算装置进行基于公式h2=s2+r12,以及基于公式h'2=s2+r'12本地计算得到中间数据h2和h'2。令第三计算装置执行基于公式ha=sa-rab,和h'a=sa-r'ab的本地计算并得到中间数据ha和h'a;以及令所述第四计算装置进行基于公式hb=sb+rab,以及基于公式h'b=sb+r'ab本地计算得到中间数据hb和h'b。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算装置执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S126’中,令第一计算装置和第三计算装置置换各自的一个中间数据,以及第一计算装置和第四计算装置置换各自的一个中间数据;令第二计算装置和第三计算装置置换各自的一个中间数据,以及第二计算装置和第四计算装置置换各自的一个中间数据。
在此,令第一计算装置和第四计算装置置换中间数据h1和hb;令第一计算装置和第三计算装置置换中间数据h'1和h'a;令第二计算装置和第三计算装置置换中间数据h2和ha;以及令第二计算装置和第四计算装置置换中间数据h'2和h'b。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算装置执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S127’中,令各计算装置分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算装置得到两个包含可抵消随机数的计算结果。
在此,第一计算装置执行基于公式z1=h1+hb和z'1=h'1+h'a的本地计算,得到计算结果z1和z'1;第二计算装置执行基于公式z2=h2+ha和z'2=h'2+h'b的本地计算,得到计算结果z2和z'2;第三计算装置执行基于公式za=ha+h2和z'a=h'a+h'1的本地计算,得到计算结果za和z'a;第四计算装置执行基于公式zb=hb+h1和z'b=h'b+h'2的本地计算,得到计算结果zb和z'b。
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
数据获取设备可依据上述多方安全计算协议所确定的包含可抵消的随机数的两个计算装置,选择第一计算装置和第三计算装置,或者第二计算装置和第四计算装置,并通过加和方式抵消计算装置所生成的随机数,并得到两个对应XYZ乘法计算任务的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XYZ乘法计算的处理结果,反之,则表示计算出错。
在此,若分散密文和共享的随机数是在值域内随机得到的,则在第一次置换数据时,每个计算装置发出不多于n个比特数据量,以及在第二次置换数据时,每个计算装置发出不多于2n个比特数据量。为此,所述计算任务包含三个输入数据的数学计算的计算任务,所述多方安全计算一体机执行所述计算任务期间产生不超过3×4次基于置换数据的数据通信,以及所述多方安全计算一体机执行所述计算任务期间产生不多于3n×4比特数据量的数据通信。以三个输入数据均为隐私数据为例,所述多方安全计算一体机执行所述计算任务期间产生3×4次基于置换数据的数据通信,以及所述多方安全计算一体机执行所述计算任务期间产生3n×4比特数据量的数据通信。以三两个输入数据中有至少一个隐私数据为例,所述多方安全计算一体机执行所述计算任务期间产生少于3×4次基于置换数据的数据通信,以及所述多方安全计算一体机执行所述计算任务期间产生少于3n×4比特数据量的数据通信。
在又一些示例中,根据业务逻辑的设计,计算任务中还可能包含位提取。例如按照通信协议提取某一位比特的计算任务。所述步骤S120包括:四个所述计算装置利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述计算任务中输入数据X的待提取的二进制位数。在此,四个计算装置通过本地进行位计算生成包含有可抵消1比特随机数的中间数据(1比特),并通过k轮次的中间数据的数据交互得到计算结果。
在一些具体示例中,所述多方安全计算任务包括提取输入数据X中二进制位的计算任务;所述多方安全计算一体机中的第一计算装置、第二计算装置、第三计算装置和第四计算装置依次获取分散密文{x1},分散密文{x2},分散密文{xa},以及分散密文{xb};其中,{x1,x2,xa,xb}是输入数据X经随机分散处理得到的二进制表示的分散密文,其中,各分散密文与输入数据X具有相同的二进制位数k。所述步骤S120包括以下步骤:
在步骤S1211中,各计算装置分别初始化用于输出的比特位值{c1,c'1},{c2,c'2},{ca,c'a},{cb,c'b};以及令所述第一计算装置和第二计算装置共享随机数r12和b12;以及令所述第三计算装置和第四计算装置共享随机数bab;其中,初始化的各比特位值举例为0。所述随机数r12、b12和bab是基于提取位数k而生成的二进制随机数。其中,所述随机数共享和生成方式与前述示例中提及的方式相同或相似,在此不再重述。
在步骤S1212中,令第一计算装置和第二计算装置利用随机数r12对各自持有的分散密文x1和x2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u1和u2。
在此,令第一计算装置进行基于公式的本地计算得到中间数据u1;并提供给第三计算装置;以及令第二计算装置进行基于公式u2=x2[1:k]∧r12本地计算得到中间数据u2。
需要说明的是,根据实际设计需要,上述各计算装置的逻辑处理可以被调整,其他为k轮次循环而进行预处理,并得到具有第k位统一的二进制中间数据u1和u2的方式应视为基于本申请所提供的示例而进行数学计算调整得到的一种具体示例。
在步骤S1213中,令第一计算装置将中间数据u1发送给第三计算装置,并由第三计算装置进行基于公式u1∧xa的逻辑计算并得到中间数据ua。
在步骤S1214中,基于k值而设置以下循环计算:各计算装置对分散密文x1的第i位和输出比特位置进行带有基于所共享的随机数b12或bab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算装置与第三计算装置进行中间数据的置换处理,以及第二计算装置与第四计算装置进行中间数据的置换处理。
例如,参见如下利用程序语言习惯来描述的基于k值而设置的循环计算:
For(i=1;i<=k-1;i=i+1){
S1计算并将t'1发送至Sa
S2计算并将t'2发送至Sb
Sa计算并将t'a发送至S1
Sb计算并将t'b发送至S2
S1赋值S2赋值Sa赋值Sb赋值
其中,S1、S2、Sa和Sb依次表示第一计算装置、第二计算装置、第三计算装置和第四计算装置。
在步骤S1215中,各计算装置利用被赋值的输出比特位、随机数对各自持有的分散密文的第k位比特值进行逻辑计算得到计算结果。
例如,第一计算装置基于公式的本地计算得到计算结果c'1;第二计算装置进行基于公式本地计算得到计算结果c'2;第三计算装置进行基于公式本地计算得到计算结果ca;第四计算装置进行基于公式本地计算得到计算结果cb。
需要说明的是,上述示例中的公式与前述k轮次的处理方式相关,并可根据实际k轮次的位处理方式进行调整。
在步骤S1216中,第一计算装置将计算结果c'1提供给第三计算装置;第二计算装置将计算结果c'2提供给第四计算装置;第三计算装置将计算结果ca提供给第二计算装置;第四计算装置将计算结果cb提供给第一计算装置,以便各计算装置持有得到便于校验处理结果的两个计算结果。
例如,第一计算装置将计算结果c'1提供给第三计算装置,使得第三计算装置的计算结果包含ca和c'a,其中,令c'a=c'1;第二计算装置将计算结果c'2提供给第四计算装置,使得第四计算装置的计算结果包含cb和c'b,其中,令c'b=c'2;第三计算装置将计算结果ca提供给第二计算装置,使得第二计算装置的计算结果包含c2和c'2,其中,令c'2=ca;第四计算装置将计算结果cb提供给第一计算装置,使得第一计算装置的计算结果包含c1和c'1,其中,令c'1=cb。
数据获取设备可依据上述多方安全计算协议所确定的计算装置对,选择一对计算装置的计算结果,并通过逻辑计算的方式抵消计算装置所生成的随机数,并得到提取输入数据X的第k位的计算任务的处理结果,或者所得到的处理结果的倍数。其中,所得到的处理结果可以为两个,若两个处理结果相同,则表示处理结果正确,反之,则表示计算出错。
在此,每个计算装置产生不多于k+1次数据通信;以及每个计算装置产生不多于2k比特数据量的数据通信。其中,根据步骤S1213的数据通信可知,每个所述计算装置在k轮次1比特置换数据的数据交互时,每个计算装置共发出k比特。另外,第一计算装置还产生k比特数据量的一次数据通信,故而第一计算装置总共产生k+1次数据通信和2k比特数据量的数据通信。
在一些更具体示例中,根据前述步骤S1211-S1215的描述,我们通过让S1和Sb在步骤S1211-S1213中共享x1[1:k]∧x2[1:k]中一半份额来进一步优化通信复杂性。在这种情况下,每个计算装置产生不多于1.5k比特位的数据通信。
利用位提取的多方安全计算指令可用于计算任务包括比较两个输入数据的计算任务。在一些示例中,比较两输入数据A1和A3的计算任务先被转换成计算(A1-A3)的计算任务以及提取二进制表示(A1-A3)的计算结果中最高位值的计算任务。为此,按照转换后的计算任务所生成的多方安全计算指令,多方安全计算一体机按照基于两个输入数据减法计算任务和位提取计算任务而设置的多方安全计算指令,令四个所述计算装置执行本地计算和数据交互,得到各自持有的比特值。例如,多方安全计算一体机依据多方安全计算指令,利用部分计算装置执行减法计算,并得到各自持有的减法计算结果,再以各自持有的减法计算结果作为位提取计算的分散密文,利用一次(k=1)比特位置换的数据交互执行最高位提取,得到位提取的计算结果。该位提取的计算结果可作为用于得到A1和A3比较结果的计算结果反馈给数据获取方。
在另一些示例中,根据计算任务获得比较结果中数据较大(或较小)者,则可以在多方安全计算一体机得到用于表示比较结果的位提取的计算结果的基础上,通过多方安全计算一体机的不经意传输将相应输入数据进行传输。由此避免数据获取方和多方安全计算一体机有信息泄露的可能。所述步骤S120包括利用四个计算装置执行基于不经意传输协议而设置的多方安全计算指令并得到各自持有的计算结果。
在此,不经意传输协议是一种可保护隐私的双方通信协议,能使通信双方以一种选择模糊化的方式传送消息。不经意传输协议是密码学的一个基本协议,它使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护数接收方的隐私不被发送方所知道。
在一些具体示例中,所述利用四个计算装置执行基于不经意传输协议而设置的多方安全计算指令并得到各自持有的计算结果包括:令四个所述计算装置确定用于表示传输/不传输相应分散密文的权值,并利用本地计算和数据交互得到各自持有的计算结果;其中,所述计算结果包含用于表示传输相应分散密文的结果,或用于表示不传输相应分散密文的结果。例如,所述计算任务包括不经意传输输入数据X的计算任务,利用输入的比特值c,随机初始化各计算装置的比特值{c1,c'1},{c2,c'2},{ca,c'a},{cb,c'b},并分配给各计算装置;其中,c2=ca,c'1=c'a,c'2=c'b,c1=cb。以初始化比特值c=1为例,基于比特值c,分配给第一计算装置的随机比特值c1=1和c'1=0,则分配给第二计算装置的比特值{0,1},分配给第三计算装置的比特值{0,0},分配给第四计算装置的比特值{1,1}。各计算装置以所得到的比特值为权值,利用本地计算对传输或不传输分散密文进行数学计算,并利用数据交互得到各自持有的计算结果。
根据每个计算装置所获得的分散密文的数量,每个计算装置得到对应数量计算结果,用于表示传输或不传输其中的分散密文。以每个计算装置获得两个分散密文为例,其中,输入数据X随机分散处理成多个分散密文{x1,x'1,x2,x'2,xa,x'a,xb,x'b},其中,x2=X-x1=xa,x1=xb,x'2=X-x'1=x'b,x'1=x'a;各计算装置所获取的分散密文依次为{x1,x'1},{x2,x'2},{xa,x'a},{xb,x'b}。本步骤S120的执行过程如下:
在步骤S1211’中,令所述第一计算装置和第二计算装置共享第一类随机数r12和r'12;所述第一计算装置和第三计算装置共享第二类随机数r'1a;所述第一计算装置和第四计算装置共享第二类随机数r1b;令所述第二计算装置和第三计算装置共享第二类随机数r2a;所述第二计算装置和第四计算装置共享第二类随机数r'2b;令所述第三计算装置和第四计算装置共享第一类随机数rab和r'ab。在此,各随机数的共享方式可与前述的共享方式相同或相似,在此不再重述。
在步骤S1212’中,令各计算装置利用各自配置的比特值对是否传输分散密文进行带有第一类随机数的数学计算,以及利用各自配置的比特值对是否传输第一类随机数进行带有第二类随机数的数学计算。
例如,第一计算装置基于公式t1=x1×c'1-r12、t'1=x'1×c1-r'12本地计算得到携带有第一类随机数的中间数据t1和t'1,以及基于公式e1=(1-2c'1)×r12+r1a和e'1=(1-2c1)×r'12+r'1a本地计算得到携带有第二类随机数的中间随机数e1和e'1。类似地,第二计算装置基于公式t2=x2×c'2-r12和t'2=x'2×c2-r'2得到中间数据t2和t'2,基于公式e2=(1-2c'2)×r12+r2a和e'2=(1-2c2)×r'12+r'2a得到中间随机数e2和e'2。第三计算装置基于公式ta=xa×c'a-rab和t'a=x'a×ca-r'ab得到中间数据ta和t'a,基于公式ea=(1-2c'a)×rab+r2a和ea'=(1-2ca)×rab'+r1a'得到中间随机数ea和e'a。第四计算装置基于公式tb=xb×c'b-rab和t'b=x'b×cb-r'ab得到中间数据tb和t'b,基于公式ea=(1-2c'a)×rab+r2a和e'a=(1-2ca)×r'ab+r'1a得到中间随机数eb和e'b。
在步骤S1213’中,令第一计算装置和第二计算装置分别与第三计算装置和第四计算装置进行中间数据和中间随机数的置换操作。
例如,令第一计算装置和第三计算装置置换{t'1,e1}和{t'a,ea},第一计算装置和第四计算装置置换{t1,e'1}和{tb,e'b};令第二计算装置和第三计算装置置换{t'2,e2}和{ta,e'a},以及第二计算装置和第四计算装置置换{t2,e'2}和{t'b,eb}。
在步骤S1214’中,令各计算装置执行包含抵消第二类随机数的数学计算,并得到各自持有的计算结果。
例如,令第一计算装置基于公式y1=(1-2c'1)tb+c'1x1+ea-r1b和y'1=(1-2c1)t'a+c1x'1+e'b-r'1a得到计算结果y1和y'1;令第二计算装置基于公式y2=(1-2c'2)ta+c'2x2+eb-r2a和y'2=(1-2c2)t'b+c2x'2+e'a-r'2b得到计算结果y2和y'2;令第三计算装置基于公式ya=(1-2c'a)t2+c'axa+e1-r2a和y'a=(1-2ca)t'1+cax'a+e'1-r'1a得到计算结果ya和y'a;令第四计算装置基于公式yb=(1-2c'b)t1+c'bxb+e2-r1b和y'b=(1-2cb)t2'1+cbx'b+e'2-r'2b得到计算结果yb和y'b。
数据获取设备可依据上述多方安全计算协议所确定的两个计算装置,选择一对计算装置的计算结果,并通过逻辑计算的方式抵消计算装置所生成的第一类随机数,并得到不经意传输输入数据X的计算任务的处理结果,或处理结果的倍数。其中,所得到的处理结果可以为两个,若两个处理结果相同,则表示处理结果正确,反之,则表示计算出错。
需要说明的是,上述各公式仅为举例,事实上,基于上述示例可通过调整实际权值设置规则或者调整随机数的正负符号来调整数学计算以及数据交互,在上述示例的基础上的数学变形应视为基于本方案技术思想下的具体示例。在此不一一详述。
在此,若分散密文和共享的随机数是在值域内随机得到的,则每个计算装置在执行一次置换数据时所发出的数据量不超过2n,每个计算装置执行两次置换数据的操作,故而每个计算装置在执行一次不经意传输协议时发出不超过4n个比特数据量。为此,所述多方安全计算一体机执行所述计算任务期间产生不多于4×4次基于置换数据的数据通信;以及所述多方安全计算一体执行所述计算任务期间产生不多于4n×4比特数据量的数据通信。
基于上述描述,本申请所提供的由四个计算装置构成的多方安全计算一体机及多方安全计算协议,利用适用于计算任务的分散密文进行本地和装置之间交互,由此实现多方安全计算。所述四个所述计算装置基于各自的多方安全计算协议可协同执行基于加法、乘法、位提取、数值类型转换、不经意传输中至少一种或多种组合的多方安全计算。其中,利用计算装置之间共享随机数参与计算的方式,使得各计算装置所得到的计算结果不会以明码形式返回,由此保证了数据安全性。另外,利用本申请所描述的多方安全计算协议进行多方安全计算有效减少了计算装置之间传输的数据量。
本申请另一实施例中,还公开一种计算机可读的存储介质,所述计算机可读的存储介质存储至少一种程序,所述至少一种程序在被调用时参与执行所述多方安全计算。其中,所述计算机为前述提及的任一计算装置。所述多方安全计算方法参阅图14及关于图14的相关描述,在此不加赘述。
由上可知,如图1和2所示,本申请公开的多方安全计算一体机,包括被配置于互不信任的计算系统架构中的多个计算装置,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
在某些实施例中,所述多方安全计算指令包括构建索引的操作指令,如此,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括:对所获得的多个分散密文创建索引。
其中,所述多个分散密文是对应同一输入数据的,即,所述多个分散密文是对某一输入数据进行多方隐私加密后形成的。
在某些实施例中,所述多方安全计算一体机包括多个第一存储装置。请参阅图15,显示为本申请的多方安全计算一体机在一实施方式中的示意图。如图所示,所述多方安全计算一体机还可包括多个第一存储装置,其中,每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接,这些第一存储装置用于分散保存对应同一输入数据的多个分散密文。如此,每一个计算装置可从对应连接的第一存储装置中获得分散密文,这样,多个计算装置就可从多个第一存储装置中获得多个分散密文,所述获得的多个分散密文是对应同一输入数据的。在某些实施例中,第一存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。
其中,每一个计算装置根据所述多方安全计算协议与相应的第一存储装置连接。具体地,在一实施方式中,如图2所示,所述多方安全计算一体机包括四个计算装置S1、S2、Sa、Sb,在其他实施方式中所述计算装置的个数并不限于四个,也可以为二个、三个或更多个等。所述四个计算装置S1、S2、Sa、Sb中每个计算装置都有1个第一存储装置,即,计算装置S1与第一存储装置连接,计算装置S2与第一存储装置连接,计算装置Sa与第一存储装置连接,计算装置Sb与第一存储装置连接。
这些存储于第一存储装置中的多个分散密文是通过对输入数据进行多方隐私加密后形成的。
在某些实施方式中,对所述输入数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。
在某些实施例中,多个分散密文是由多个计算装置从对应连接的多个第一存储装置中获得的,在这种情形下,多个分散密文可通过多个计算装置对某一输入数据进行多方隐私加密后形成。
针对通过多个计算装置对输入数据进行多方隐私加密以形成多个分散密文的多方隐私加密的方式,以下以采用四个计算装置为例进行相关功能的介绍。
隐私加密存储:
通过四个计算装置将输入数据X进行多方隐私加密形成分散密文(shares)X1、X2、Xa、以及Xb。在某些实施方式中,分散密文X1、X2、Xa、以及Xb是通过随机分散处理方式获得的,即,基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。例如,分散密文X1为随机选取的大整数,分散密文X2满足X1+X2=X(mod 2^256),分散密文Xa=X1+R,分散密文Xb=X2-R,其中R=random(seed)是基于计算装置S1、S2之间共享的随机数种子seed生成的随机数。各计算装置利用随机数种子seed生成的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算装置配置有产生所述随机数的随机数发生器。
经多方隐私加密形成的多个分散密文可分散存储于各个第一存储装置中。
以基于四个计算装置S1、S2、Sa、以及Sb对输入数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、以及Xb为例,分散密文X1存储于计算装置S1对应的第一存储装置中,分散密文X2存储于计算装置S2对应的第一存储装置中,分散密文Xa存储于计算装置Sa对应的第一存储装置中,分散密文Xb存储于计算装置Sb对应的第一存储装置中。
通过将输入数据经多方隐私加密后形成的多个分散密文分散存储于各个第一存储装置中,可抵御所有第一存储装置都被黑客入侵后可能面临的攻击。
另外,在将形成的分散密文存储于各个第一存储装置之前,还可包括对所述多个分散密文进行再加密的步骤。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital SignatureAlgorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。如此,多个经再加密的分散密文即可分别存储于各个第一存储装置中。
各个第一存储装置设置或关联有相应的数据库,即,每一个第一存储装置设置或关联有一个数据库。所述数据库可用于保存相应的第一存储装置中的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(或输入数据标识ID)及相应的分散密文,其中,所述分散密文可为经再加密的分散密文。如下表一所示。
表一
SN/ID | (再加密的)分散密文 |
001 | X1、X2、Xa、Xb |
002 | Y1、Y2、Ya、Yb |
在某些实施例中,各个第一存储装置所存储的分散密文的记录序号SN(或输入数据标识ID)可以采用连续或是自增的。例如,第一条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个第一存储装置中并分别作为四个第一存储装置记录序号SN(或输入数据标识ID)为“001”。例如,结合图2和图15,与计算装置S1对应连接的第一存储装置存储分散密文X1,与计算装置S2对应连接的第一存储装置存储分散密文X2,与计算装置Sa对应连接的第一存储装置存储分散密文Xa,与计算装置Sb对应连接的第一存储装置存储分散密文Xb。第二条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个第一存储装置中并分别作为四个第一存储装置记录序号SN(或输入数据标识ID)为“002”。例如,结合图2和图15,与计算装置S1对应连接的第一存储装置存储分散密文Y1,与计算装置S2对应连接的第一存储装置存储分散密文Y2,与计算装置Sa对应连接的第一存储装置存储分散密文Ya,与计算装置Sb对应连接的第一存储装置存储分散密文Yb。第三条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个第一存储装置中并分别作为四个第一存储装置记录序号SN(或输入数据标识ID)为“003”。若后续有第四条输入数据,那么所述第四条输入数据经隐私加密后会形成四个分散密文,而这四个分散密文将分别存储于四个第一存储装置中并分别作为四个第一存储装置记录序号SN(或输入数据标识ID)为“004”。按此方式,后续的分散密文的记录序号SN(或输入数据标识ID)为于当前最后一个记录序号SN(或输入数据标识ID)的加一(+1)操作。
在某些实施例中,各个第一存储装置所存储的分散密文的记录序号SN(或输入数据标识ID)可以采用其他方式,例如,增量排序或乱序等。
以增量排序为例,第一条输入数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个第一存储装置中,其中,第一个分散密文在第一个第一存储装置中的记录序号SN(或输入数据标识ID)可为“001”,第二个分散密文在第二个第一存储装置中的记录序号SN(或输入数据标识ID)可为“003”,第三个分散密文在第三个第一存储装置中的记录序号SN(或输入数据标识ID)可为“005”,第四个分散密文在第四个第一存储装置中的记录序号SN(或输入数据标识ID)可为“007”。第二条输入数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个第一存储装置中,其中,第一个分散密文在第一个第一存储装置中的记录序号SN(或输入数据标识ID)可为“002”,第二个分散密文在第二个第一存储装置中的记录序号SN(或输入数据标识ID)可为“004”,第三个分散密文在第三个第一存储装置中的记录序号SN(或输入数据标识ID)可为“006”,第四个分散密文在第四个第一存储装置中的记录序号SN(或输入数据标识ID)可为“008”。当然,上述记录序号SN(或输入数据标识ID)仅为一示例性说明,在实际应用中,分散密文在第一存储装置中的记录序号SN(或输入数据标识ID)仍可作其他的变化。
以乱序为例,第一条输入数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个第一存储装置中,其中,第一个分散密文在第一个第一存储装置中的记录序号SN(或输入数据标识ID)可为“001”,第二个分散密文在第二个第一存储装置中的记录序号SN(或输入数据标识ID)可为“002”,第三个分散密文在第三个第一存储装置中的记录序号SN(或输入数据标识ID)可为“007”,第四个分散密文在第四个第一存储装置中的记录序号SN(或输入数据标识ID)可为“004”。第二条输入数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个第一存储装置中,其中,第一个分散密文在第一个第一存储装置中的记录序号SN(或输入数据标识ID)可为“002”,第二个分散密文在第二个第一存储装置中的记录序号SN(或输入数据标识ID)可为“001”,第三个分散密文在第三个第一存储装置中的记录序号SN(或输入数据标识ID)可为“003”,第四个分散密文在第四个第一存储装置中的记录序号SN(或输入数据标识ID)可为“006”。当然,上述记录序号SN(或输入数据标识ID)仅为一示例性说明,在实际应用中,分散密文在第一存储装置中的记录序号SN(或输入数据标识ID)仍可作其他的变化。
隐私计算:
四个计算装置S1、S2、Sa、Sb在互不合谋的前提下,遵守隐私运算协议,利用四个计算装置协同计算来计算对应于一计算任务的多方安全计算。例如,计算任务可包含两个或多个输入数据的数学计算任务。各个计算装置利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,由此确保在计算装置之间、计算装置与其他设备之间所传输的数据是无法泄密的。
以两个输入数据的数学计算任务为例,基于分散密文可以在不恢复明文输入数据X、Y的情况下计算X+Y,XY,X>Y等基本运算。在某些示例中,若要计算Z=X+Y时,只需要计算装置S1、S2在本地分别计算Z1=X1+Y1和Z2=X2+Y2,将Z1、Z2加上随机数后发送给结果接收者即可解密得到Z,即,Z=Z1+Z2=X1+Y1+X2+Y2=(X1+X2)+(Y1+Y2)=X+Y。
在某些示例中,若要计算Z=XY=(X1+X2)(Y1+Y2)时,可将公式展开:Z=XY=(X1+X2)(Y1+Y2)=X1Y1+X1Y2+X2Y1+X2Y2,其中,非交叉项(X1Y1,X2Y2)和交叉项(X2Y1,X1Y2)。基于初次隐私加密的分散密文,计算装置S1、S2可分别在本地计算非交叉项(X1Y1,X2Y2),基于再次隐私加密的分散密文,计算装置Sa、Sb可分别在本地计算交叉项(X2Y1,X1Y2)。将非交叉项(X1Y1,X2Y2)和交叉项(X2Y1,X1Y2)加上随机数后发送给结果接收者即可解密得到Z。从数学上可证明结果正确性,而且任一计算装置不与对应节点合谋不可能恢复出X/Y/Z,从而保证了基本隐私计算的安全性。
由上述图15及其相关描述可知,利用多个计算装置,基于多方隐私加密产生的随机数,可对输入数据进行随机分散处理后形成多个分散密文,所有的数据自始至终不以明文显示,确保了数据的安全可靠。
进一步地,当所述输入数据中包含至少一字段的信息时,对输入数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实施方式中,可对所述输入数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实施方式中,可对所述输入数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述输入数据中包含多个字段时,则可对所述输入数据中的多个字段的字段内容进行多方隐私加密以分别形成与所述多个字段中每一个字段对应的多个分散密文。
以所述输入数据中包含一字段为例,可对所述输入数据中所述字段的字段内容进行多方隐私加密,具体包括:对所述输入数据中所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述输入数据中包含多个字段(包括两个字段或两个以上字段)为例,可对所述输入数据中多个字段中的至少一字段的字段内容进行多方隐私加密。现以所述输入数据中包含两个字段(例如,第一字段和第二字段)为例说明,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对输入数据中与至少一字段对应的多个分散密文进行再加密。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。如此,多个经再加密的分散密文即可分别存储于各个第一存储装置中。
各个第一存储装置设置或关联有相应的数据库,即,每一个第一存储装置设置或关联有一个数据库。所述数据库可用于保存相应的第一存储装置中的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(或输入数据标识ID)及相应的至少一字段的分散密文,其中,所述分散密文可为经再加密的分散密文。
以所述输入数据中包含第一字段和第二字段为例,形成的数据库中的记录可如下表二所示。
表二
SN/ID | (再加密的)第一字段的分散密文 | (再加密的)第二字段的分散密文 |
001 | X1f1、X2f1、Xaf1、Xbf1 | X1f2、X2f2、Xaf2、Xbf2 |
002 | Y1f1、Y2f1、Yaf1、Ybf1 | Y1f2、Y2f2、Yaf2、Ybf2 |
其中,针对各个第一存储装置所存储的至少一字段的分散密文的记录序号SN(或输入数据标识ID)可以采用连续或是自增的,也可以是增量排序或乱序等,具体可参见前述针对表一的描述,在此不再赘述。
以具体的业务应用来说,作为输入数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述输入数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、或电子卡等。在某些示例中,所述密码信息可例如为6位或8位或更多位的数字密码,但并不以此为限,若终端设备能提供相应的技术支持的话,所述密码信息也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息可以与用户的身份信息相关联、或者与用户的手机号关联等,例如,所述密码信息可以为身份证号中的部分或全部、或者手机号、或者是身份证号、手机号以及其他信息中某种组合等。
当然,所述字段并不以此为限,例如,所述字段也可包括生物信息。所述生物信息具有人体所固有的不可复制的唯一性,生物密钥无法复制,失窃或被遗忘。利用生物识别技术进行身份认证,具有安全可靠及准确便捷等优点。包括人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等在内的生物信息都属于人体生物特征,随着光电技术、微计算机技术、图像处理技术与模式识别等技术的快速发展,生物信息应用于业务实现也得到了应用。
例如,在门禁业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行多方隐私加密。
例如,在考勤业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)进行多方隐私加密。
例如,在票务业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行多方隐私加密。
在某些实施例中,以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。因此,在某些实现方式中,可对所述业务数据中的第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第二字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密。如此,通过对第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密,从而实现包括第一字段和第二字段中的隐私数据的保护,也能保护隐私数据之间(例如第一字段的隐私数据和第二字段的隐私数据之间)的关联关系,确保了业务数据的安全可靠。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据可包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息进行多方隐私加密,形成多个银行卡信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息和支付口令都进行多方隐私加密,形成多个银行卡信息的分散密文和多个支付口令的分散密文。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息进行多方隐私加密,形成多个密码信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的生物信息进行多方隐私加密,形成多个生物信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息和生物信息都进行多方隐私加密,形成多个密码信息的分散密文和多个生物信息的分散密文。
以无卡支付业务中的刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的人脸信息进行多方隐私加密,形成多个人脸信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令和人脸信息都进行多方隐私加密,形成多个支付口令的分散密文和多个人脸信息的分散密文。
仍以无卡支付业务为例,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。
业务账户为金融机构针对账户申请人开设的一个能实现各种金融交易的账户。金融机构可例如为银行、证券公司、保险公司、资金管理公司等,以银行为例,银行为账户申请人开设的业务账户可例如为至少一银行卡号。
所述密码信息可与业务账户关联。在某些示例中,所述密码信息可例如为支付口令,所述支付口令可例如为6位或8位的数字密码,但并不以此为限,所述支付口令也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息也可为其他形式,例如手势密码等。
所述生物信息具有人体所固有的不可复制的唯一性,生物密钥无法复制,失窃或被遗忘。利用生物识别技术进行身份认证,具有安全可靠及准确便捷等优点。包括人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等在内的生物信息都属于人体生物特征。
在某些示例中,当用户在某一金融机构申请业务账户时,金融机构即可采集与申请的业务账户关联的密码信息和生物信息。
金融机构端利用设置或关联的密码信息采集装置(例如纯数字键盘、电脑键盘键盘、触控屏幕等)采集密码信息(例如支付口令)
对采集的密码信息进行多方隐私加密的方式可包括:对密码信息X进行多方隐私加密,形成多个密码信息的分散密文。
关于对密码信息进行多方隐私加密的工作原理可参阅前述的内容描述。
以四个计算装置为例,对采集的密码信息进行多方隐私加密的方式可包括:对密码信息X进行多方隐私加密,形成密码信息的分散密文X1、X2、Xa、Xb。
如此,通过对密码信息进行多方隐私加密后可形成多个密码信息的分散密文。这些密码信息的分散密文可存储于各个第一存储装置中,从而可确保密码信息的安全性。
金融机构端利用设置或关联的生物信息采集装置采集业务账户申请人的生物信息。
常见地,可应用于生物识别技术的生物信息可包括但不限于:人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等,它们所对应的生物识别技术则分别为人脸识别技术、指纹识别技术、掌纹识别技术、虹膜识别技术、心率识别技术等。
一般地,所涉及的生物信息,无论属于哪一类,均可分为自然意义的生物原始数据和对生物原始数据进行特征提取后的生物特征数据。
在某些示例中,以所述生物信息采用人脸信息为例,所述人脸信息可包括作为生物原始数据的人脸图像和作为生物特征数据的人脸特征,其中,所述人脸特征是通过对人脸图像进行特征提取后得到的。
在某些示例中,以所述生物信息采用指纹信息为例,所述指纹信息可包括作为生物原始数据的指纹图像和作为生物特征数据的指纹特征,其中,所述人脸特征是通过对指纹图像进行特征提取后的得到的。
在某些示例中,以所述生物信息采用掌纹信息为例,所述掌纹信息可包括作为生物原始数据的掌纹图像和作为生物特征数据的掌纹特征,其中,所述掌纹特征是通过对掌纹图像进行特征提取后的得到的。
在某些示例中,以所述生物信息采用虹膜信息为例,所述虹膜信息可包括作为生物原始数据的虹膜图像和作为生物特征数据的虹膜特征,其中,所述虹膜特征是通过对虹膜图像进行特征提取后的得到的。
在这些生物识别技术中,人脸识别技术相比于其它类型的生物识别技术,具有如下特点:非强制性:用户不需要专门配合人脸采集设备,几乎可以在无意识的状态下就可获取人脸图像;非接触性:用户不需要和设备直接接触就能获取人脸图像;简单便利性:人脸采集设备简单易推广,人脸采集方式简单易实现。
以应用人脸识别技术的刷脸支付为例,一般地,在金融机构端设置或关联有摄像头作为人脸采集设备。在某些示例中,所述摄像头可例如为3D摄像头,相比于普通的2D摄像头,可以获取拍摄对象的深度信息,即三维的位置与尺寸信息,以增强摄像机的面部和对象识别功能。
如前所述,所述生物信息可包括自然意义的生物原始数据和对生物原始数据进行特征提取后的生物特征数据。
在某些实施例中,对采集到的生物信息进行多方隐私加密。
现以对业务数据中的生物信息进行多方隐私加密为例进行说明。实际上,所述对业务数据中的生物信息进行多方隐私加密是指对生物信息中的生物特征数据进行多方隐私加密。
在对生物信息进行多方隐私加密之前还可包括对生物信息采集设备生物原始数据进行特征提取以形成生物特征的步骤。
在某些示例中,以人脸识别为例,可对作为生物原始数据的人脸图像进行特征提取以得到人脸特征。
在某些示例中,以指纹识别为例,可对作为生物原始数据的指纹图像进行特征提取以得到指纹特征。
在某些示例中,以掌纹识别为例,可对作为生物原始数据的掌纹图像进行特征提取以得到掌纹特征。
在某些示例中,以虹膜识别为例,可对作为生物原始数据的虹膜图像进行特征提取以得到虹膜特征。
对业务数据中的生物信息进行多方隐私加密的方式可包括:对生物信息Y进行多方隐私加密,形成多个生物信息的分散密文。
以四个计算装置为例,对采集的生物信息进行多方隐私加密的方式可包括:对生物信息Y进行多方隐私加密,形成生物信息的分散密文Y1、Y2、Ya、Yb。其中,这里的生物信息实际上指的是对生物原始数据进行特征提取后的生物特征数据。其中,这里的生物信息指的是对生物原始数据进行特征提取后得到的生物特征数据。
以对采集的人脸信息进行多方隐私加密为例,通过人脸特征提取得到人脸图像中出现的人脸的人脸特征。对采集的人脸信息进行多方隐私加密即包括对提取得到的人脸特征进行多方隐私加密。具体地,对提取得到的人脸特征进行多方隐私加密可包括:对人脸特征Y进行多方隐私加密,形成人脸特征的分散密文Y1、Y2、Ya、Yb。
在某些实施方式中,以利用卷积神经网络模型从人脸图像中提取人脸特征为例,可利用卷积神经网络模型,对业务请求中的人脸图像进行人脸特征向量的提取。如此,对通过卷积神经网络模型提取得到的人脸特征向量进行多方隐私加密可包括:对人脸特征向量Y进行多方隐私加密,形成人脸特征向量的分散密文Y1、Y2、Ya、Yb。
如此,通过对生物信息进行多方隐私加密后可形成多个生物信息的分散密文。
该种对生物信息的处理方式,安全性较高,能满足隐私保护的需求,可以消除金融机构对数据安全和隐私保护的顾虑,而且效率和准确性均可满足应用需求。
在完成业务数据的多方隐私加密之后,还可包括将经多方隐私加密后形成的多个分散密文存储于对应的多个第一存储装置中。
若所述业务数据包括至少一字段时,则将经多方隐私加密后形成与至少一字段对应的多个分散密文存储于对应的多个第一存储装置中。
以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,将业务账户、多个第一字段的分散密文、以及第二字段的字段内容予以存储。在某些示例中,业务数据中的第二字段经多方隐私加密而形成多个第二字段的分散密文。因此,将业务账户、第一字段的字段内容、以及多个第二字段的分散密文予以存储。在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,将业务账户、多个第一字段的分散密文和多个第二字段的分散密文予以存储。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,业务数据中的银行卡信息是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息、以及支付口令予以存储。在某些示例中,业务数据中的支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储将业务账户、银行卡信息、以及经多方隐私加密的支付口令予以存储。在某些示例中,业务数据中的银行卡信息和支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息和支付口令予以存储。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的密码信息经多方隐私加密而形成多个密码信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个密码信息的分散密文、以及生物信息予以存储。在某些示例中,业务数据中的生物信息经多方隐私加密而形成多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、密码信息、以及多个生物信息的分散密文予以存储。在某些示例中,业务数据中的密码信息和生物信息经多方隐私加密而形成多个生物信息的分散密文和多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个生物信息的分散密文和多个生物信息的分散密文予以存储。
仍以刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的支付口令经多方隐私加密而形成多个支付口令的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文、以及人脸信息予以存储。在某些示例中,业务数据中的人脸信息经多方隐私加密而形成多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、支付口令、以及多个人脸信息的分散密文予以存储。在某些示例中,业务数据中的支付口令和人脸信息经多方隐私加密而形成多个支付口令的分散密文和多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文和多个人脸信息的分散密文予以存储。
如前所述,在将形成的分散密文存储于各个第一存储装置之前,还可对所述多个分散密文进行再加密。
若所述业务数据包括至少一字段时,则对经多方隐私加密后形成与至少一字段对应的多个分散密文进行再加密。
仍以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。
在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及第二字段的字段内容进行再加密。
在某些示例中,业务数据中的第二字段的字段内容经多方隐私加密而形成多个第二字段的分散密文。因此,所述再加密包括对业务账户、第一字段的字段内容、以及多个第二字段的分散密文进行再加密。
在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及多个第二字段的分散密文进行再加密。
如此,以所述业务数据所形成的数据库中的记录可如下表三所示。
表三
SN/ID | (再加密的)第一字段的分散密文 | (再加密的)第二字段的分散密文 | (再加密的)业务账户 |
001 | X1f1、X2f1、Xaf1、Xbf1 | X1f2、X2f2、Xaf2、Xbf2 | Account 001 |
002 | Y1f1、Y2f1、Yaf1、Ybf1 | Y1f2、Y2f2、Yaf2、Ybf2 | Account 002 |
由上可知,通过对输入数据进行多方隐私加密,从而实现其中隐私数据的保护,确保隐私数据的安全可靠。
本申请多方安全计算一体机,包括多个计算装置,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
在本实施例中,所述多方安全计算指令包括构建索引的操作指令,那么,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括:对所获得的多个分散密文创建索引。
一般地,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本实施例中,可利用多个计算装置基于多方安全计算协议为各个数据建立索引,以提升数据检索速度。
利用计算装置基于多方安全计算协议对所获得的多个分散密文创建索引的方式可根据获得多个分散密文的方式而有不同的变化。
在某些示例中,所述输入数据可采用数据记录形式。所述获得输入数据的方式包括以数据记录形式逐条接收输入数据,并对获得的输入数据逐条进行多方隐私加密以形成多个分散密文,那么,利用计算装置对多个分散密文创建索引的方式可包括逐个对与所述输入数据对应的多个分散密文创建索引,实现边获得分散密文边创建索引。当然,并不以此为限,也可以是获得若干个与输入数据对应的多个分散密文后再对这些分散密文进行批处理。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用文件形式。那么,可利用计算装置对文件中与所述输入数据对应的多个分散密文逐一创建索引。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用数据库形式。那么,可利用计算装置对数据库中与所述输入数据对应的多个分散密文逐一创建索引。
在某些实施例中,所述多方安全计算一体机包括第二存储装置。其中,所述第二存储装置是与所述多个计算装置连接,用于存储所述多个计算装置所创建的索引。在某些实施例中,所述第二存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。
所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于多方安全计算协议而对多个分散密文创建索引的方式可包括通过创建哈希表或查找树等对多个分散密文创建索引。
在某些实施例中,利用计算装置基于多方安全计算协议而对多个分散密文创建哈希表的步骤可包括:
首先,利用计算装置通过哈希函数对多个分散密文进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述索引是基于多个分散密文而创建的哈希表。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据经多方隐私加密而形成多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文对应的槽值。
以图2中显示的四个计算装置为例,利用四个计算装置对输入数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
接着,将输入数据的索引标识存入与槽值对应的分组中。
通过将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与所述槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。其中,所述输入数据的索引标识可例如为记录序号SN或输入数据标识ID。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中的步骤更可包括如下步骤:
将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的方式是通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在各第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文与至少一分组的某一分组中已存入的索引标识所关联的分散密文相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图16所示。如图16所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
创建的哈希表即可存储于第二存储装置中。在实际应用中,在某些实施例中,每当完成对一条输入数据的索引创建后,即对新的哈希表进行更新和存储。
本申请提供的多方安全计算一体机,利用计算装置基于多方安全计算协议对获得的分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括针对每一个字段均创建与所述字段对应的哈希表。
在本实施例中,通过创建哈希表对多个分散密文中的每一个字段创建与所述字段对应的哈希表的步骤包括:
首先,通过哈希函数对所述多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的某一字段而创建的哈希表。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于利用计算装置进行多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。
在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。那么,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第一字段的字段内容,多个分散的第一密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第一字段的字段内容对应的槽值。同样地,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第二字段的字段内容,多个分散的第二密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第二字段的字段内容对应的槽值。
以图2中显示的四个计算装置为例,利用四个计算装置对输入数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
接着,将输入数据的索引标识存入与槽值对应的分组中。
通过将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与所述槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中更可包括如下步骤:
将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。其中,在某些实施方式中,所述将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将多个(所述字段的)分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的(所述字段的)分散密文中所述字段的字段内容进行隐私比较的。
例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
对于所述分散密文中其他的字段的信息,也可按照上述流程创建与其他的字段对应的哈希表。如此,若所述输入数据对应的多个分散密文中包含有至少一字段的信息时,可按照上述流程创建与至少一字段对应的至少一哈希表,其中,每一字段对应的哈希表可如图17所示。
如图17所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,以输入数据包含一个字段为例,可对所述输入数据中所述字段的字段内容进行多方隐私加密以形成多个所述字段的分散密文,因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述流程,针对多个所述字段的分散密文创建与所述字段对应的哈希表。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文,与第二字段对应的分散密文也可称为第二字段的分散密文(包含第一字段和第二字段的所述输入数据形成的数据库中的记录可参见表二)。因此,对所述多个分散密文创建索引的方式可包括分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
本申请提供的多方安全计算一体机,利用计算装置基于多方安全计算协议对获得的分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
在本实施例中,利用计算装置创建与所述至少一字段对应的复合哈希表的步骤包括:
首先,通过哈希函数对多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽标识和槽值,所述槽标识与至少一字段的字段标识对应,每一个分组均对应所述槽值,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。
在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。那么,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第一字段的字段内容,多个分散的第一密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第一字段的字段内容对应的槽值。同样地,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第二字段的字段内容,多个分散的第二密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第二字段的字段内容对应的槽值。
以图2中显示的四个计算装置为例,利用四个计算装置对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,将至少一字段的字段标识存入槽值对应的槽中作为槽的槽标识,并将输入数据的索引标识存入与槽标识及槽值对应的分组中。
其中,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识的步骤可包括:根据通过哈希函数对多个分散密文中至少一字段的字段内容进行哈希运算所获得的复合哈希表的槽值,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,将所述字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。
其中,将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中的步骤更可包括如下步骤:
判断在复合哈希表中是否存在与槽标识及槽值对应的分组。该步骤中,可先在复合哈希表中定位到与所述槽标识和槽值对应的槽,再判断是否与所述槽的槽值对应的分组。
若不存在与槽标识及槽值对应的分组,则在复合哈希表中新建一与槽标识及槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与槽标识及槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中的步骤更可包括如下步骤:
将多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。
例如,若在复合哈希表中与槽标识和经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中与所述槽标识对应的所述字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中与所述槽标识对应的所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中与所述槽标识对应的所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在复合哈希表中新建一与槽标识和槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图18所示。
如图18所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,所述槽标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,槽标识“0”对应于多个分散密文中第一字段的字段标识,槽标识“1”对应于多个分散密文中第二字段的字段标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述第一字段的字段标识或第二字段的字段标识对应的槽标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽标识(银行卡信息)和槽值对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽标识(支付口令)和槽值对应的分组中,
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽标识(密码信息)和槽值对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽标识(生物信息)和槽值对应的分组中。
本申请提供的多方安全计算一体机,利用计算装置基于多方安全计算协议对获得的分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
在本实施例中,利用计算装置创建与所述至少一字段对应的复合哈希表的步骤包括:
首先,通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽值,每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述分组标识即是用于唯一标识对应的所述分组的分组类型,所述分组类型由其存储的输入数据中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。那么,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第一字段的字段内容,多个分散的第一密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第一字段的字段内容对应的槽值。同样地,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中第二字段的字段内容,多个分散的第二密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中第二字段的字段内容对应的槽值。
以图2中显示的四个计算装置为例,利用四个计算装置对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识,并将输入数据的索引标识存入分组中。
其中,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识的步骤可包括:根据通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算所获得的复合哈希表的槽值,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MODTablesize获得复合哈希表的槽值,将所述字段的字段标识存入所述槽值对应的分组中作为分组的分组标识。
将输入数据的索引标识存入分组中的步骤更可包括如下步骤:
判断在复合哈希表中是否存在与槽值及分组标识对应的分组。该步骤中,可先在复合哈希表中定位到与所述槽值对应的槽,再判断是否与所述槽的槽值及分组标识对应的分组。
若不存在与槽值及分组标识对应的分组,则在复合哈希表中新建一与槽值对应且带有分组标识的分组,将输入数据的索引标识存入新建的分组中;若存在与槽值及分组标识对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中更可包括如下步骤:
将多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。
例如,若在复合哈希表中与经哈希运算的槽值和分组标识对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中与所述分组标识对应的所述字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中与所述分组标识对应的所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述分组标识对应的所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述分组标识对应的所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中与所述分组标识对应的所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在复合哈希表中新建一与槽值和分组标识对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图19所示。
如图19所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1。所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。
每一个分组具有与某一字段的字段标识对应的分组标识,在某些实施例中,所述分组标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,分组标识“0”对应于多个分散密文中第一字段的字段标识,分组标识“1”对应于多个分散密文中第二字段的字段标识。
所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述输入数据中某一字段的字段标识对应于所述分组中的分组标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽值和分组标识(银行卡信息)对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽值和分组标识(支付口令)对应的分组中。
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽值和分组标识(密码信息)对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽值和分组标识(生物信息)对应的分组中。
本申请提供的多方安全计算一体机,利用计算装置基于多方安全计算协议对获得的分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
本申请公开的多方安全计算一体机,包括被配置于互不信任的计算系统架构中的多个计算装置,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
在某些实施例中,所述多方安全计算指令包括检索存储数据的操作指令,如此,计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括:从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据检索结果。其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
在某些实施例中,所述多方安全计算一体机包括多个第一存储装置。如图15所示,多方安全计算一体机还可包括多个第一存储装置,其中,每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接,这些第一存储装置用于分散保存对应同一存储数据的多个分散密文。如此,每一个计算装置可从对应连接的第一存储装置中获得分散密文,这样,多个计算装置就可从多个第一存储装置中获得多个分散密文,所述获得的多个分散密文是对应同一存储数据的。在某些实施例中,第一存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。
其中,每一个计算装置根据所述多方安全计算协议与相应的第一存储装置连接。所述连接的方式与前文所述的相同或相似,在此不再详述。
这些存储于第一存储装置中的多个分散密文是通过对存储数据进行多方隐私加密后形成的。
所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。如前所述,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本申请中,为各个数据建立索引,以提升数据检索速度。
因此,本申请多方安全计算一体机包括预先对存储数据创建索引。具体地,本申请多方安全计算一体机中的计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括:对所获得的多个分散密文创建索引。
所述对存储数据的多个分散密文创建索引的方式可包括通过创建哈希表或查找树对多个分散密文创建索引。其中,所述对存储数据创建哈希表的实现方式可参见前文描述,在此不再赘述。
当对存储数据的多个分散密文创建索引(例如哈希表)之后,将创建的索引(例如哈希表)存储于第二存储装置中。
在某些实施例中,当所述计算装置在接收到多方安全计算指令为检索存储数据的操作指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文从第二存储装置所存储的索引(例如哈希表)中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据检索结果。
在进行检索时,由多方安全计算一体机接收待验证数据。
在某些实施例中,多方安全计算一体机接收的是待验证数据的多个分散密文,所述待验证的多个分散密文已预先通过对待验证数据进行多方隐私加密而形成。
在某些实施例中,多方安全计算一体机接收的是待验证数据,因此,多方安全计算一体机还包括对所述待验证数据进行多方隐私加密以形成多个分散密文。其中,对所述待验证数据进行多方隐私加密以形成多个分散密文是通过多方安全计算一体机中的多个计算装置执行的。
根据待验证数据的数据类型及获取方式,多方安全计算一体机可执行不同的操作。
在某些示例中,所述待验证数据可采用数据记录形式。所述多方安全计算一体机获得待验证数据的方式包括以数据记录形式逐条接收待验证数据,由各计算装置对获得的待验证数据逐条进行多方隐私加密。
在某些示例中,所述待验证数据可采用文件形式。所述多方安全计算一体机获得待验证数据的方式包括获得包含待验证数据的文件,由各计算装置从文件中提取相应的待验证数据并对提取的待验证数据进行多方隐私加密。
在某些示例中,所述待验证数据可采用数据库形式。所述多方安全计算一体机获得待验证数据的方式包括获得包含待验证数据的数据库,由各计算装置从数据库中提取相应的待验证数据并对提取的待验证数据进行多方隐私加密。
在某些实施方式中,所述计算装置对所述待验证数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。
针对上述多方隐私加密的方式,具体可参见本申请图2及相关的内容。简言之,以四个计算装置为例,待验证数据经四个计算装置隐私加密后可形成四个分散密文X1、X2、Xa、以及Xb,这些分散密文是通过随机分散处理方式获得的,即,基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。例如,分散密文X1为随机选取的大整数,分散密文X2满足X1+X2=X(mod 2^256),分散密文Xa=X1+R,分散密文Xb=X2-R,其中R=random(seed)是基于计算装置S1、S2之间共享的随机数种子seed生成的随机数。各计算装置利用随机数种子seed生成的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算装置配置有产生所述随机数的随机数发生器。
利用各计算装置对所述待验证数据进行多方隐私加密后,可使得所述待验证数据形成待验证的多个分散密文,所述待验证的多个分散密文可分散存储于各个第一存储装置中。
以基于四个计算装置S1、S2、Sa、以及Sb对待验证数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、以及Xb为例,分散密文X1存储于计算装置S1对应的第一存储装置中,分散密文X2存储于计算装置S2对应的第一存储装置中,分散密文Xa存储于计算装置Sa对应的第一存储装置中,分散密文Xb存储于计算装置Sb对应的第一存储装置中。
通过将待验证数据经多方隐私加密后形成的多个分散密文分散存储于各个第一存储装置中,可抵御所有第一存储装置都被黑客入侵后可能面临的攻击。
另外,在某些实施方式中,在将形成的多个分散密文存储于各第一存储装置之前,还可通过例如为加密机(未在图式中显示)对所述多个分散密文进行再加密。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。
因此,若在第一存储装置中存储的分散密文是经再加密的二次分散密文,则当从多个第一存储装置中获得相应的多个二次分散密文后,还需利用加密机对多个二次分散密文进行解密以获得多个分散密文。
在某些实施方式中,当所述待验证数据中包含至少一字段的信息时,对待验证数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实现方式中,可对所述待验证数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实现方式中,可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述待验证数据中包含多个字段时,则可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密以分别形成与所述至少一字段对应的多个分散密文。
以所述待验证数据中包含一字段为例,可对所述待验证数据中的所述字段的字段内容进行多方隐私加密,具体包括:对所述待验证数据中的所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述待验证数据中包含第一字段和第二字段为例,可对所述待验证数据中的第一字段和第二字段中的至少一字段的字段内容进行多方隐私加密。其中,若是对所述待验证数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述待验证数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述待验证数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对待验证数据中与至少一字段对应的多个分散密文进行再加密。
如此,以所述待验证数据中包含第一字段和第二字段为例,形成的数据库中的记录可参见前述中表五所示。
以具体的业务应用来说,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、或电子卡等。在某些示例中,所述密码信息可例如为6位或8位或更多位的数字密码,但并不以此为限,若终端设备能提供相应的技术支持的话,所述密码信息也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息可以与用户的身份信息相关联、或者与用户的手机号关联等,例如,所述密码信息可以为身份证号中的部分或全部、或者手机号、或者是身份证号、手机号以及其他信息中某种组合等。
当然,所述字段并不以此为限,例如,所述字段也可包括生物信息。所述生物信息与前文所述的相同或相似,在此不再详述。
例如,在门禁业务场景中、考勤业务场景中、票务业务场景中对业务数据进行多方隐私加密的方式与前文所述的相同或相似,在此不再详述
在某些实施例中,以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。因此,在某些实现方式中,可对所述业务数据中的第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第二字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密。如此,通过对第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密,从而实现包括第一字段和第二字段中的隐私数据的保护,也能保护隐私数据之间(例如第一字段的隐私数据和第二字段的隐私数据之间)的关联关系,确保了业务数据的安全可靠。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据可包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息进行多方隐私加密,形成多个银行卡信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息和支付口令都进行多方隐私加密,形成多个银行卡信息的分散密文和多个支付口令的分散密文。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息进行多方隐私加密,形成多个密码信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的生物信息进行多方隐私加密,形成多个生物信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息和生物信息都进行多方隐私加密,形成多个密码信息的分散密文和多个生物信息的分散密文。
以无卡支付业务中的刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的人脸信息进行多方隐私加密,形成多个人脸信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令和人脸信息都进行多方隐私加密,形成多个支付口令的分散密文和多个人脸信息的分散密文。
仍以无卡支付业务为例,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。
业务账户为金融机构针对账户申请人开设的一个能实现各种金融交易的账户。金融机构可例如为银行、证券公司、保险公司、资金管理公司等,以银行为例,银行为账户申请人开设的业务账户可例如为至少一银行卡号。
所述密码信息可与业务账户关联。在某些示例中,所述密码信息可例如为支付口令,所述支付口令可例如为6位或8位的数字密码,但并不以此为限,所述支付口令也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息也可为其他形式,例如手势密码等。
所述生物信息具有人体所固有的不可复制的唯一性,生物密钥无法复制,失窃或被遗忘。利用生物识别技术进行身份认证,具有安全可靠及准确便捷等优点。包括人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等在内的生物信息都属于人体生物特征。
在某些示例中,当用户在某一金融机构申请业务账户时,金融机构即可采集与申请的业务账户关联的密码信息和生物信息。
金融机构端利用设置或关联的密码信息采集装置(例如纯数字键盘、电脑键盘键盘、触控屏幕等)采集密码信息(例如支付口令)
对采集的密码信息进行多方隐私加密的方式可包括:对密码信息X进行多方隐私加密,形成多个密码信息的分散密文。
关于对密码信息进行多方隐私加密的工作原理可参阅图3及其对应的内容描述。
以四个计算装置为例,对采集的密码信息进行多方隐私加密的方式可包括:对密码信息X进行多方隐私加密,形成密码信息的分散密文X1、X2、Xa、Xb。
如此,通过对密码信息进行多方隐私加密后可形成多个密码信息的分散密文。这些密码信息的分散密文可存储于各个第一存储装置中,从而可确保密码信息的安全性。
金融机构端利用设置或关联的生物信息采集装置采集业务账户申请人的生物信息。
常见地,可应用于生物识别技术的生物信息可包括但不限于:人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等,它们所对应的生物识别技术则分别为人脸识别技术、指纹识别技术、掌纹识别技术、虹膜识别技术、心率识别技术等。
一般地,所涉及的生物信息,无论属于哪一类,均可分为自然意义的生物原始数据和对生物原始数据进行特征提取后的生物特征数据。
在某些示例中,以所述生物信息采用人脸信息为例,所述人脸信息可包括作为生物原始数据的人脸图像和作为生物特征数据的人脸特征,其中,所述人脸特征是通过对人脸图像进行特征提取后得到的。
在某些示例中,以所述生物信息采用指纹信息为例,所述指纹信息可包括作为生物原始数据的指纹图像和作为生物特征数据的指纹特征,其中,所述人脸特征是通过对指纹图像进行特征提取后的得到的。
在某些示例中,以所述生物信息采用掌纹信息为例,所述掌纹信息可包括作为生物原始数据的掌纹图像和作为生物特征数据的掌纹特征,其中,所述掌纹特征是通过对掌纹图像进行特征提取后的得到的。
在某些示例中,以所述生物信息采用虹膜信息为例,所述虹膜信息可包括作为生物原始数据的虹膜图像和作为生物特征数据的虹膜特征,其中,所述虹膜特征是通过对虹膜图像进行特征提取后的得到的。
在这些生物识别技术中,人脸识别技术相比于其它类型的生物识别技术,具有如下特点:非强制性:用户不需要专门配合人脸采集设备,几乎可以在无意识的状态下就可获取人脸图像;非接触性:用户不需要和设备直接接触就能获取人脸图像;简单便利性:人脸采集设备简单易推广,人脸采集方式简单易实现。
以应用人脸识别技术的刷脸支付为例,一般地,在金融机构端设置或关联有摄像头作为人脸采集设备。在某些示例中,所述摄像头可例如为3D摄像头,相比于普通的2D摄像头,可以获取拍摄对象的深度信息,即三维的位置与尺寸信息,以增强摄像机的面部和对象识别功能。
如前所述,所述生物信息可包括自然意义的生物原始数据和对生物原始数据进行特征提取后的生物特征数据。
在某些实施例中,对采集到的生物信息进行多方隐私加密。
现以对业务数据中的生物信息进行多方隐私加密为例进行说明。实际上,所述对业务数据中的生物信息进行多方隐私加密是指对生物信息中的生物特征数据进行多方隐私加密。
在对生物信息进行多方隐私加密之前还可包括对生物信息采集设备生物原始数据进行特征提取以形成生物特征的步骤。
在某些示例中,以人脸识别为例,可对作为生物原始数据的人脸图像进行特征提取以得到人脸特征。
在某些示例中,以指纹识别为例,可对作为生物原始数据的指纹图像进行特征提取以得到指纹特征。
在某些示例中,以掌纹识别为例,可对作为生物原始数据的掌纹图像进行特征提取以得到掌纹特征。
在某些示例中,以虹膜识别为例,可对作为生物原始数据的虹膜图像进行特征提取以得到虹膜特征。
对业务数据中的生物信息进行多方隐私加密的方式可包括:对生物信息Y进行多方隐私加密,形成多个生物信息的分散密文。
以四个计算装置为例,对采集的生物信息进行多方隐私加密的方式可包括:对生物信息Y进行多方隐私加密,形成生物信息的分散密文Y1、Y2、Ya、Yb。其中,这里的生物信息实际上指的是对生物原始数据进行特征提取后的生物特征数据。其中,这里的生物信息指的是对生物原始数据进行特征提取后得到的生物特征数据。
以对采集的人脸信息进行多方隐私加密为例,通过人脸特征提取得到人脸图像中出现的人脸的人脸特征。对采集的人脸信息进行多方隐私加密即包括对提取得到的人脸特征进行多方隐私加密。具体地,对提取得到的人脸特征进行多方隐私加密可包括:对人脸特征Y进行多方隐私加密,形成人脸特征的分散密文Y1、Y2、Ya、Yb。
在某些实施方式中,以利用卷积神经网络模型从人脸图像中提取人脸特征为例,可利用卷积神经网络模型,对业务请求中的人脸图像进行人脸特征向量的提取。如此,对通过卷积神经网络模型提取得到的人脸特征向量进行多方隐私加密可包括:对人脸特征向量Y进行多方隐私加密,形成人脸特征向量的分散密文Y1、Y2、Ya、Yb。
如此,通过对生物信息进行多方隐私加密后可形成多个生物信息的分散密文。
该种对生物信息的处理方式,安全性较高,能满足隐私保护的需求,可以消除金融机构对数据安全和隐私保护的顾虑,而且效率和准确性均可满足应用需求。
在完成业务数据的多方隐私加密之后,还可包括将经多方隐私加密后形成的多个分散密文存储于对应的多个第一存储装置中。
若所述业务数据包括至少一字段时,则将经多方隐私加密后形成与至少一字段对应的多个分散密文存储于对应的多个第一存储装置中。
以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,将业务账户、多个第一字段的分散密文、以及第二字段的字段内容予以存储。在某些示例中,业务数据中的第二字段经多方隐私加密而形成多个第二字段的分散密文。因此,将业务账户、第一字段的字段内容、以及多个第二字段的分散密文予以存储。在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,将业务账户、多个第一字段的分散密文和多个第二字段的分散密文予以存储。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,业务数据中的银行卡信息是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息、以及支付口令予以存储。在某些示例中,业务数据中的支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储将业务账户、银行卡信息、以及经多方隐私加密的支付口令予以存储。在某些示例中,业务数据中的银行卡信息和支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息和支付口令予以存储。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的密码信息经多方隐私加密而形成多个密码信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个密码信息的分散密文、以及生物信息予以存储。在某些示例中,业务数据中的生物信息经多方隐私加密而形成多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、密码信息、以及多个生物信息的分散密文予以存储。在某些示例中,业务数据中的密码信息和生物信息经多方隐私加密而形成多个生物信息的分散密文和多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个生物信息的分散密文和多个生物信息的分散密文予以存储。
仍以刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的支付口令经多方隐私加密而形成多个支付口令的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文、以及人脸信息予以存储。在某些示例中,业务数据中的人脸信息经多方隐私加密而形成多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、支付口令、以及多个人脸信息的分散密文予以存储。在某些示例中,业务数据中的支付口令和人脸信息经多方隐私加密而形成多个支付口令的分散密文和多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文和多个人脸信息的分散密文予以存储。
如前所述,在将形成的分散密文存储于各第一存储装置之前,还可对所述多个分散密文进行再加密。
若所述业务数据包括至少一字段时,则对经多方隐私加密后形成与至少一字段对应的多个分散密文进行再加密。
仍以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及第二字段的字段内容进行再加密。
在某些示例中,业务数据中的第二字段的字段内容经多方隐私加密而形成多个第二字段的分散密文。因此,所述再加密包括对业务账户、第一字段的字段内容、以及多个第二字段的分散密文进行再加密。
在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及多个第二字段的分散密文进行再加密。
如此,以所述业务数据所形成的数据库中的记录可参见前述中表六所示。
由上可知,通过对待验证数据进行多方隐私加密,从而实现其中隐私数据的保护,确保隐私数据的安全可靠。
多方安全计算一体机用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果。
在某些实施例中,以索引为存储于第二存储装置中的哈希表为例,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据可包括从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图16所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用多方安全计算一体机从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文进行哈希运算,得到对应哈希表的槽值。
在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这待验证的多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(待验证的多个分散密文)MODTablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于待验证的多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据经多方隐私加密而形成待验证的多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对待验证数据创建哈希表的过程中,将待验证的多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(待验证的多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述待验证的多个分散密文对应的槽值。
以图2中显示的四个计算装置为例,利用四个计算装置对待验证数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
接着,在哈希表中定位到与槽值对应的分组,从分组中获得与待验证数据对应的存储数据。
在实际应用中,在哈希表中定位到与槽值对应的分组并从分组中获得与待验证数据对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则输出没有获得与待验证数据对应的存储数据的验证结果;若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与待验证数据对应的存储数据。
其中,通过隐私比较从对应的分组中获得与待验证数据对应的存储数据的步骤更可包括如下步骤:
将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较,以判断待验证的多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将待验证的多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则从对应的分组中获得与所述待验证数据对应的存储数据。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文不相同时,则输出没有获得与待验证数据对应的存储数据的验证结果。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图16所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用多方安全计算一体机从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图2中显示的四个计算装置为例,利用四个计算装置对待验证数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
接着,在哈希表中定位到与槽值对应的分组,从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
在实际应用中,在哈希表中定位到与槽值对应的分组并从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
其中,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤更可包括如下步骤:
将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将待验证的多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则从对应的分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则输出没有获得与待验证数据中所述字段的字段内容对应的存储数据的验证结果。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图18所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用多方安全计算一体机从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图2中显示的四个计算装置为例,利用四个计算装置对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,在复合哈希表中定位到与槽标识及槽值对应的分组,从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
在实际应用中,在复合哈希表中定位到与所述槽标识及所述槽值对应的分组并从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤根据复合哈希表中的分组结构而有不同的实施方式:判断在复合哈希表中是否存在与槽标识及槽值对应的分组;若不存在与所述槽标识及所述槽值对应的分组,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果;若存在与所述槽标识及所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
其中,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤更可包括如下步骤:
将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同。
在某些实施方式中,所述将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的。例如,若在复合哈希表中与槽标识和经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较比较具体包括:将待验证的多个分散密文中至少一字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中至少一字段的字段内容与其他分散密文中至少一字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的复合哈希表。其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述第一字段或所述第二字段的字段标识对应的槽标识。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述银行卡信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述支付口令的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户相关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文和多个生物信息的分散密文创建复合哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述密码信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述生物信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图19所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1。所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。
每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述存储数据中某一字段的字段标识对应于所述分组中的分组标识。
因此,利用多方安全计算一体机从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个第一存储装置中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图2中显示的四个计算装置为例,利用四个计算装置对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,在复合哈希表中定位到与槽值及分组标识对应的分组,从分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
在实际应用中,在复合哈希表中定位到与所述槽值及所述分组标识对应的分组并从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤根据复合哈希表中的分组结构而有不同的实施方式:判断在所述复合哈希表中是否存在与槽值及分组标识对应的分组;若不存在与槽值及分组标识对应对应的分组,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果;若存在与槽值及分组标识对应对应的至少一分组,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
其中,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤更可包括如下步骤:
将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同。
在某些实施方式中,所述将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的。例如,若在复合哈希表中与经哈希运算的槽值和分组标识对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较比较具体包括:将待验证的多个分散密文中至少一字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中至少一字段的字段内容与其他分散密文中至少一字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在第一存储装置中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述银行卡信息的字段标识或支付口令的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述银行卡信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述支付口令的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户相关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文和多个生物信息的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述密码信息的字段标识或生物信息的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述密码信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述生物信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
由上可知,如图1和2所示,本申请公开的多方安全计算一体机,包括被配置于互不信任的计算系统架构中的多个计算装置,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
在某些实施例中,所述多方安全计算指令包括基于数据库检索语句而得到的指令,如此,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算包括:根据一存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;所获取的分散密文为隐私数据为经所述存储配置而分散形成的;按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
其中,所述隐私数据被分散存储在多个第一存储装置中。为此,破解单个第一存储装置中所存储的分散密文不会泄露隐私数据明文。如此,隐私数据以高安全性被存储。
为了将以金融交易数据为示例的隐私数据分散存储,隐私数据被依据存储配置分散为分散密文,并存储在多个第一存储装置中。各第一存储装置提供相同或不同的数据库及数据库管理系统。其中,所述数据库指的是长期储存在计算机内、有组织的、可共享的大量数据的集合。所述数据库管理系统(Database Management System,DBMS)是一种管理数据库的大型软件,用于建立、使用和维护数据库。数据库管理系统对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。数据库管理系统将抽象的逻辑数据进行处理,以转换为能被计算机识别和处理的具体的物理数据,实现对数据的建立、修改、查询、追加、删除等操作。所述数据库管理系统举例但不限于MySQL、SQL Server、XQuery、Oracle等。
在此,所述每个第一存储装置可以是一个或者多个存储设备,所述存储设备可包括高速随机存取存储器、并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储设备还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储设备还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问,读取所述存储器中的分散密文。其中,存储在存储设备中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。所述第一存储装置还包括数据库存储引擎,所述数据库存储引擎用于向所述第一存储装置写入所述隐私数据的分散密文,以及从第一存储装置读取对应隐私数据的分散密文。
所述第一存储装置可位于单台计算机设备、或位于基于云架构的服务系统中被使用的实体设备、虚拟设备或上述提及的一体机等。所述单台计算机设备可位于私有机房或位于公共机房中的某个被租用的机位中。所述实体设备或虚拟设备的形态和所设置的地理位置不做限定。例如,多个第一存储装置可以位于同一实体服务器的不同虚拟设备上且通过管理权限进行单独管理。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述第一存储装置中存储有可供读取的分散密文,所述分散密文是将隐私数据以适当的方式进行分散,所述分散密文存储在对应的多个第一存储装置中,并且单个第一存储装置中对应于同一个隐私数据的分散密文无法恢复该隐私数据,只有读取若干个第一存储装置的分散密文才能恢复所述隐私数据。其中,所述每个第一存储装置中所存储的分散密文为一隐私数据经一存储配置处理得到的。
其中,所述存储配置至少用于描述隐私数据的分散方式,对应地,存储配置也表示各第一存储装置所存储的分散密文与隐私数据之间的分散关系。在一些示例中,所述存储配置可以预先设置在配置文件(或日志文件等)中,并保存在第一存储装置或输出装置中;其中,所述配置文件至少包括隐私数据的分散方式。在另一示例中,所述存储配置内置于程序中,藉由运行所述程序,隐私数据被分散处理成分散密文,并分别保存在不同第一存储装置中。
在一实施例中,所述存储配置包括基于秘密分享技术而设置的第一分散方式。其中,所述秘密分享技术是将隐私数据以适当的方式进行分散,分散后的分散密文存储在对应的多个第一存储装置中,单个第一存储装置中对应于同一个隐私数据的分散密文无法恢复该隐私数据,只有若干个第一存储装置一同协作才能恢复所述隐私数据。
其中,所述第一分散方式包括以下至少一种:基于加法计算而设置的分散方式、基于Shamir秘密共享算法而设置的分散方式。
在一实施例中,所述存储配置中的第一分散方式为基于加法计算而设置的分散方式,其中,基于加法计算而设置的分散方式包含将隐私数据随机分散成预设数量的分散方式,所述数量对应于用于存储分散密文的第一存储装置的数量。在一些具体示例中,各第一存储装置所保存的分散密文来自于将隐私数据随机分散成n份后得到的分散密文。以n为4为例,存储隐私数据X的四个第一存储装置中的其中三个第一存储装置P1、P2和P3分别存储随机产生的分散密文{x1},{x2},{x3},以及另一个第一存储装置P4存储根据公式:x4=X-x1-x2-x3而得到的分散密文{x4}。在另一些具体示例中,所述基于加法计算而设置的分散方式还包括利用共享随机数对所分散后的成对的分散密文进行可抵消计算处理的处理方式。仍以n为4为例,存储隐私数据X的四个第一存储装置中的其中两个第一存储装置P1和P2分别存储随机产生的分散密文{x1},{x2},第一存储装置P3存储将一随机产生的分散密文x3与共享随机数s的和{s+x3},其中,以及另一个第一存储装置P4存储根据公式:x4=X-x1-x2-x3所得到的分散密文x4与共享随机数s的差值{x4-s}{x4-s}。
在另一实施例中,所述隐私数据的第一分散方式为基于Shamir秘密共享算法而设置的分散方式,其中,基于Shamir秘密共享算法而设置的分散方式包含将隐私数据基于构造的多项式分散成预设数量的分散方式,所述数量大于等于可恢复隐私数据所需分散密文的最小数量。其中,所分散的数量大于所述最小数量可有效防止部分第一存储装置出现异常时,不影响恢复隐私数据,进而不影响整个系统执行输出操作。在一些具体示例中,令隐私数据S为构造的k-1次多项式的常数项,各第一存储装置所保存的分散密文来自于基于隐私数据构造的k-1次多项式上的n个点。以n为4为例,任取随机数a1,a2,…,ak-1,构造k-1次多项式f(x)=a0+a1x+a2x2+…+ak-1xk-1,2≤k≤4,其中a0=S,任取4个数x1,x2,x3,x4,分别带入多项式得到f(x1),f(x2),f(x3),f(x4),四个第一存储装置P1、P2、P3和P4分别存储(x1,f(x1)),(x2,f(x2)),(x3,f(x3)),(x4,f(x4)),这4个点即为隐私数据S的分散密文。需要说明的是,读取单个第一存储装置的分散密文不能恢复出隐私数据,至少读取4个分散密文中的k个分散密文才能恢复所述多项式f(x),进而恢复所述隐私数据S。例如,一隐私数据为11,随机构造多项式f(x)=11+x+2x2,任取四个数1,2,3,4,分别带入多项式得到14,21,32,47,四个第一存储装置P1、P2、P3和P4分别存储(1,14),(2,21),(3,32),(4,47),这四个点即为隐私数据11的分散密文,至少读取其中三个点才可恢复随机构造的二阶多项式,进而恢复所述隐私数据11。
所述存储配置还可以包括加密所述分散密文的方式。所述加密分散密文的方式可由各第一存储装置单独设置,或各第一存储装置经统一配置而定。各第一存储装置依据加密分散密文的方式对所接收的分散密文进行加密存储,以增加数据安全性。所述加密分散密文的方式包括以下至少一种:利用密钥加密分散密文的方式,利用地址标签映射方式存储分散密文的方式,利用秘密分享技术加密分散密文的方式。
在某些实施例中,所述加密分散密文的方式为利用密钥加密分散密文的方式,所述利用密钥加密分散密文的方式可以是对称加密方式或者非对称加密方式。采取对称加密方式对所述分散密文进行加密后存储,读取所述加密后的分散密文后,需利用与加密时相同的密钥进行解密后才能获取所述隐私数据的分散密文。采取非对称加密方式对所述分散密文进行加密后存储,加密时利用一对匹配密钥中的其中一个进行加密,读取所述加密后的分散密文后需用加密时利用的一对匹配密钥中的另外一个进行解密后才能获取所述隐私数据的分散密文。
在一些实施例中,所述加密分散密文的方式为利用地址标签映射方式存储分散密文的方式,所述利用地址标签映射的方式是指第一存储装置依据预设的数据保存顺序和随机设置的地址标签之间的映射关系将所接收的分散密文进行存储的方式;其中,不同第一存储装置对应同一字段下的相同地址标签(如自增长的ID序号)的各分散密文未必可恢复成隐私数据,而依据各第一存储装置所设置的映射关系,同一字段下不同地址标签的各分散密文恢复成隐私数据。例如,隐私数据X被分散成分散密文x1和x2,并由第一存储装置P1和P2分别存储,其中,第一存储装置将分散密文x1存储在字段A下第0021地址标签的位置,第一存储装置将分散密文x2存储在字段A下第0031地址标签的位置,为便于读取可恢复成隐私数据X的各分散密文,第一存储装置P1还保存有分散密文x1的地址标签0021与保存隐私数据的保存顺序005之间的映射关系,第一存储装置P2还保存有分散密文x2的地址标签0031与保存隐私数据的保存顺序005之间的映射关系;其中,所述保存顺序005表示隐私数据被依序保存的自增长顺序编号。
在又一些实施例中,所述加密分散密文的方式为利用秘密分享技术加密分散密文的方式。在此,秘密分享技术可与前述第一分散方式所提及的分散技术相同或相似,在此不再详述。例如,将第一存储装置中的分散密文进行再分散使得一个分散密文生成多个加密后的分散密文,将所述加密后的分散密文分散到与所述第一存储装置相关联的多个存储装置中,实现对所述隐私数据分散密文进行加密的目的。
以上,对于无索引表、且分散存储的隐私数据来说,为了保证隐私数据的安全性,隐私数据的读取操作一方面需满足不泄漏明文的隐私需求,另一方面需从多个第一存储装置中读取可恢复隐私数据的分散密文,并在不必须暴露明文的情况下,以不恢复明文的方式执行数据库操作。
有鉴于此,本申请提供一种隐私数据的数据库操作方法,用于对分散存储的隐私数据的多个分散密文进行数据库操作,以供外部计算设备据此获得对经分散存储的隐私数据的处理结果。所述数据库操作方法可由多方安全计算一体机来执行,其旨在保证多方安全计算一体机中的任一计算装置在执行数据库操作期间且在不必要的情况下,不暂存或长期保存隐私数据的明文或隐私数据的密文。
在此,所述多方安全计算一体机包括多个计算装置。各所述计算装置至少包含存储器和处理器等。所述存储器与前文所述的相同或相似,在此不再详述。所述处理器与所述存储器相连,用于调用所述至少一个程序并协调所述存储器和I/O接口执行所述多方安全计算。所述处理器可操作地与存储器耦接。更具体地,处理器可执行在存储器中存储的程序以在处理装置中执行操作。如此,处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。
请参阅图20,其显示为本申请隐私数据的数据库操作方法在一实施例中的流程示意图。如图所示,本申请提供的隐私数据的数据库操作方法包括:
步骤S11,根据一存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;所获取的分散密文为隐私数据为经所述存储配置而分散形成的;
步骤S12,按照所述多方安全计算筛选处理指令分别对各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
在此,为了让多方安全计算一体机执行筛选条件语句中的字段筛选条件的逻辑表达,所述多方安全计算筛选处理指令还包括按照筛选条件中的字段筛选条件经解析而成的用于对隐私数据进行隐私筛选处理的计算指令(集)。以多方安全计算一体机包含四个计算装置为例,所述多方安全计算筛选处理指令基于四个计算装置执行秘密分享运算的计算协议中各计算装置的角色而生成的计算指令(集)。其中,所述基于四个计算装置执行秘密分享运算的计算协议包括:利用至少两个计算装置执行秘密分享技术中加法计算的计算协议,利用四个计算装置执行秘密分享技术中乘法计算的计算协议,利用四个计算装置执行秘密分享技术中位提取计算的计算协议,利用四个计算装置执行秘密分享技术中不经意传输的计算协议等。
所述步骤S12包括:步骤S21,按照每个多方安全计算筛选处理指令分别对各第一存储装置中相应字段关联的各分散密文进行单独地隐私筛选处理,得到被分散处理的多个子计算结果集;其中,每个子计算结果集表示相应字段所关联的各分散密文经所述多方安全计算筛选指令计算而得到的子计算结果的集合。
所述多方安全计算一体机还执行步骤S22,根据各多方安全计算筛选处理指令之间的逻辑关系,对所述各子计算结果集进行隐私逻辑处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述各字段所关联的隐私数据所在条目命中或者未命中各所述筛选条件语句及其之间的逻辑关系。
上述利用多方安全计算一体机对分散密文的数据库操作方法能确保在不必要暴露明文的情况下,实现对数据库中分散密文进行数据检索的方式。另外,利用基于秘密分享的多方安全计算一体机执行所述数据库操作过程,可确保单一计算装置不保存隐私数据的明文、或隐私数据的统计结果的明文的情况。
本申请还提供一种隐私数据的数据库操作系统,用于执行前述隐私数据的数据库操作方法。请参阅图21,显示为本申请隐私数据的数据库操作系统在一实施例中的结构示意图,如图所示,所述隐私数据的数据库操作系统20包括多个第一存储装置201、语句解析设备202和多方安全计算一体机203。
其中,所述第一存储装置201以及每个第一存储装置中存储的经一存储配置处理得到的分散密文以及得到所述分散密文的方式与前文所述的相同或相似,在此不再详述。
所述语句解析设备用于将一数据库检索语句中的筛选条件语句对应解析成由多方安全计算一体机所执行的多方安全计算筛选处理指令。
所述语句解析设备可为一单独配置的计算机设备,或者位于基于云架构的服务系统中被使用的实体设备或虚拟设备等。所述语句解析设备用来获得包含筛选条件语句的数据库检索语句,并将其解析成可供多方安全计算一体机执行的计算指令(集)。在一些示例中,所述语句解析设备与应用服务器通信,用以获得来自应用服务器的数据库检索语句,其中,应用服务器举例为提供互联网应用服务的服务器,例如,提供股票交易服务的服务器、提供线上商品销售服务的服务器等。例如,应用服务器基于用户操作产生包含“selectTradingInformation from Business where Company like“A””的数据库检索语句,其表示从Business表单中查询A公司当天交易清单,则所述语句解析设备根据多方安全计算一体机基于秘密分享技术而设计的计算协议将数据库检索语句转换成多方安全计算一体机执行的计算指令(集),其中包括对应筛选条件语句的多方安全计算筛选处理指令。
在此,所述数据库检索语句是一种供数据库执行以将数据从数据库中指定表单、指定字段中读取出来的机器语言。其中,数据库检索语句包含筛选条件语句,用于指明所读取的数据所在字段,以及可读取的数据的条件。所述筛选条件语句举例为包含字段及字段筛选条件的逻辑表达;其中,所述字段筛选条件包括但不限于:比较条件、范围条件、集合条件、匹配条件、空值条件等,例如,字段筛选条件包含字段名和以下任一种符号或逻辑描述:“>”、“!>”、“≥”、“<”、“!<”、“≤”“=”、“!=”、“IS NULL”、“IS NOT NULL”、“IN”、“NOT IN”等。例如,数据库检索语句A1为Select*from Userdata where age>10,其中,Userdata为表单名,age为Userdata表单中一字段名,age>10为筛选条件语句。
所述多方安全计算筛选处理指令是基于多方安全计算将筛选条件语句转换成可供多方安全计算一体机执行的计算指令(集)。其中,多方安全计算是用以解决互不信任的参与方之间隐私保护问题的协同计算方式,其包括但不限于:秘密分享技术。所述多方安全计算筛选处理指令为一种可供所述多方安全计算一体机执行的计算指令(集),用于执行筛选条件语句所对应的筛选计算。其中,所述多方安全计算筛选处理指令中包含根据存储配置及数据库检索语句中所指定的表单及其字段从至少两个第一存储装置中分别读取相应字段下的分散密文的数据库操作指令。所述多方安全计算筛选处理指令中还包括依据分散配置而确定的第一存储装置的数量及多方安全计算一体机中的各计算装置与第一存储装置的读取对应关系。
在此,为便于举例多方安全计算一体机对多方安全计算筛选处理指令的执行过程,所述语句解析设备基于所述数据库操作语句而解析的其他计算指令(集)将在后续多方安全计算一体机执行时对应描述。
在此,所述多方安全计算一体机包括多个计算装置。各所述计算装置至少包含存储器和处理器等。所述存储器和处理器与前文所述的相同或相似,在此不再详述。
所述多方安全计算一体机203与所述语句解析设备202和各第一存储装置201通信连接,用于所接收的所述多方安全计算筛选处理指令执行以下步骤:根据存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
其中,以存储配置表示各第一存储装置所存储的分散密文是隐私数据经基于加法计算而设置的分散方式分散得到的为例,按照多方安全计算筛选处理指令,多方安全计算一体机中的各计算装置对应读取部分第一存储装置中指定表单及其字段下对应同一隐私数据的分散密文,使得各计算装置存储的分散密文可被恢复为所述隐私数据。例如,存储配置表示将隐私数据基于加法计算而设置的分散方式分散成四个分散密文,根据预先配置的各第一存储装置的配置信息,所述多方安全计算筛选处理指令包含多方安全计算一体机中四个计算装置与四个第一存储装置之间的读取对应关系,以及各计算装置单独读取相应第一存储装置中对应同一隐私数据的分散密文的数据库操作指令。多方安全计算一体机执行所述多方安全计算筛选处理指令以得到可恢复成隐私数据的四个分散密文。所述多方安全计算一体机继续执行前述隐私数据的数据库操作方法以对分别读取的各分散密文进行隐私筛选处理。
以存储配置表示各第一存储装置所存储的分散密文是隐私数据经基于Shamir秘密共享算法而设置的分散方式分散得到的为例,所述多方安全计算筛选处理指令包含基于待读取的第一存储装置的数量而设置的指令;其中,所述数量是根据所述Shamir秘密共享算法而设置的分散方式中与读取数量相关的参数而确定的。例如,所述数量是基于Shamir秘密共享算法中多项式最高幂次n加1而确定的,所述多方安全计算筛选处理指令包括指令多方安全计算一体机中(n+1)个计算装置分别读取(n+1)第一存储装置中指定表单及其字段下对应同一隐私数据的分散密文,使得各计算装置存储的分散密文可被恢复为所述隐私数据。
所述多方安全计算一体机执行根据存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文的步骤包括:所述多方安全计算一体机根据所述数量从对应数量的第一存储装置中读取相应字段关联的分散密文。例如,所述多方安全计算一体机中的(n+1)个计算装置随机且无重叠地(或根据多方安全计算筛选处理指令)从m个存储有分散密文的第一存储装置中选择(n+1)个第一存储装置,并分别读取第一存储装置中表单及其字段下对应同一隐私数据的分散密文,其中,m≥(n+1)。所述多方安全计算一体机将所读取的各分散密文转换成可供所述多方安全计算筛选处理指令处理的分散密文。在此,按照前述提及的基于Shamir秘密共享算法将隐私数据分散成分散密文的示例,所述多方安全计算一体机所读取的分散密文为一多项式函数所描述的曲线上的坐标,为此,所述多方安全计算一体机中的多计算装置将所读取的分散密文转换成可供所述多方安全计算筛选处理指令处理的分散密文。例如,所述多方安全计算一体机中的多计算装置将所读取的分散密文转换成基于加法计算而设置的分散方式所对应的分散密文。
以基于Shamir秘密共享算法而设置的分散方式中的多项式函数模型为:f(x)=a0+a1x+a2x2+…+akxk-1为例,其中,a1,a2,…,ak为随机数,a0为隐私数据S。根据所述多项式函数模型,所述隐私数据S被分散存储在至少k个第一存储装置上。读取预先设定的参数(k-1),根据所述参数(k-1)确定任取n个数x1,x2,…,xn,分别代入所述多项式得到f(x1),f(x2),…,f(xn),从而获得S1=(x1,f(x1)),S2=(x2,f(x2)),…,Sn=(xn,f(xn));其中n≥k。以k=3且n=6为举例说明,隐私数据经所述多项式函数模型f(x)=a0+a1x+a2x2分散处理了后得到的分散密文分别为S1=(x1,f(x1)),S2=(x2,f(x2)),S3=(x3,f(x3)),S4=(x4,f(x4)),S5=(x5,f(x5)),S6=(x6,f(x6)),并存储在6个第一存储装置中;其中,a0为所述隐私数据S,a1和a2为随机数。多方安全计算一体机执行多方安全计算筛选处理指令,从6个第一存储装置中任意读取三个分散密文S1,S3,S5,藉由基于读取数量而设置的拉格朗日插值函数得到形式为li=cix2+bix+ai的三个多项式,i=1,3,或5;其中,a1×f(x1),a3×f(x3),a'5×f(x5)即为可供所述多方安全计算筛选处理指令处理的分散密文。所述多方安全计算一体机将对分别读取的各分散密文进行隐私筛选处理。
需要说明的是,在一些示例中,所述多方安全计算一体机可将所选取的各第一存储装置中相应字段下的所有分散密文全部取出,得到由不同计算装置分别持有的分散密文集,以便执行前述隐私数据的数据库操作方法对分别读取的各分散密文进行隐私筛选处理。在另一些示例中,多方安全计算一体机可逐个读取对应同一隐私数据的各分散密文,并针对所读取的各分散密文进行隐私筛选处理。
在实际应用中,数据库检索语句中的筛选条件语句的数量为多个,对应地,所述多方安全计算筛选处理指令为多个,且每个多方安全计算筛选处理指令对应一个筛选条件语句。
例如,所述数据库检索语句中的筛选条件语句包括“年龄不等于22岁”和“工资不小于2000元”;多方安全计算一体机按照经解析两个筛选条件语句而得到的两组多方安全计算筛选处理指令分别从多个第一存储装置中读取字段为“年龄”和“工资”下的分散密文。
又如,所述隐私数据为金融交易数据,所述数据库检索语句中的筛选条件语句包含:“交易时间在5月至6月期间”、“交易金额在200万元以下”和“公司注册地址在上海”;对应的,按照各筛选条件语句所对应的多方安全计算筛选处理指令以及逻辑关系,分别读取“交易时间”、“交易金额”、“公司注册地址”三个字段下的各分散密文。
在此,按照多组多方安全计算筛选处理指令分别读取分散密文的方式与前述按照一组多方安全计算筛选处理指令和存储配置从至少两个第一存储装置读取分散密文的方式相同或相似,在此不再重述。
为了让多方安全计算一体机执行筛选条件语句中的字段筛选条件的逻辑表达,所述多方安全计算筛选处理指令还包括按照筛选条件中的字段筛选条件经解析而成的用于对分散密文进行隐私筛选处理的计算指令(集)。以字段筛选条件为“age>10”,读取对应同一隐私数据的分散密文的数量为3,以及可执行多方安全计算一体机计算的分散密文为基于加法计算而分散得到的分散密文为例,多方安全计算筛选处理指令中包含用以对分散密文进行单独隐私筛选计算的计算指令,所述计算指令举例包含(age1-2),(age2-3),(age3-5)等计算指令,其中,age1、age2和age3分别为从三个第一存储装置读取的对应同一隐私数据的分散密文,数字2、3和5为数字10经随机分散而得到的,多方安全计算一体机中的三个计算装置分别执行包含上述计算指令的计算,以得到对各分散密文进行隐私筛选处理得到的计算结果。
需要说明的是,上述筛选条件语句及其对应的多方安全计算筛选处理指令仅为举例,事实上筛选条件语句中的条件可基于多种运算而设置,如基于乘法、加法及混合运算等,所对应的多方安全计算筛选处理指令也不仅仅包含各计算装置所执行的本地计算指令(集),根据秘密分享技术及多方安全计算一体机中计算装置数量而设置的计算协议,所述多方安全计算一体机执行多方安全计算筛选处理指令后所得到的多个计算结果集与各第一存储装置中相应字段所存储的各分散密文并非一定存在一一对应关系,但是,多个计算结果集仍协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
藉由上述示例可见,多方安全计算一体机逐一计算所读取的字段下所有分散密文,得到经隐私筛选处理后,相应字段所关联的所有分散密文的计算结果集,多个所述计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
在一些实际应用中,所述多方安全计算一体机利用合并部分分散密文、再分散部分或全部分散密文、利用共享随机数对分散密文进行可抵消的加法计算中至少一种,对待处理的对应同一隐私数据的多个分散密文进行可恢复明文的预处理,得到数量与所读取的分散密文的数量相同或不同的加密分散密文,再通过执行前述隐私数据的数据库操作方法得到多个计算结果集,其中,各计算结果集表示经隐私筛选处理相应字段所关联的加密分散密文和/或分散密文的计算结果的集合。
例如,所述多方安全计算一体机中的两个计算装置利用共享随机数r将所读取的分散密文x1和x2进行可抵消的加法计算,得到加密分散密文(x1+r),(x2-r),并分配给另外两个计算装置,并藉由四个计算装置对所读取的分散密文x1、x2以及加密分散密文(x1+r)、(x2-r)进行隐私筛选处理,得到四个计算结果。该四个计算结果由不同计算装置所持有,由此避免在不必要恢复明文的情况下,多方安全计算一体机获得隐私数据命中或未命中字段筛选条件的筛选结果。
多方安全计算一体机利用上述任一示例对同一字段下对应所有隐私数据进行隐私筛选处理,得到由不同计算装置持有的多个计算结果集。
其中,每个计算结果集包含标识信息;所述标识信息用于标识依据所述多方安全计算筛选处理指令而执行的各计算结果。仍以前述字段筛选条件为“age>10”示例为例,计算结果集中包含age字段所关联的所有分散密文执行(age1-2)的计算结果,每个计算结果中的标识信息可由以下至少一种描述:相应计算结果本身,由相应分散密文执行(age1-2)后的计算结果为正或负的比特值。
在此,为便于外部计算装置基于所得到的多个计算结果集得到对应数据库检索语句的检索结果,在一些示例中,每个计算结果集中的各计算结果按照同一隐私数据的多个分散密文在各第一存储装置中的存储顺序而排序的,由此,外部计算装置可依序对各计算结果集中的各计算结果进行计算,以得到所述检索结果。
例如,隐私数据S1,S2,…,SN以角标顺序被分散存入多个第一存储装置P1,P2,…,PM,其中,各第一存储装置所保存的分散密文的顺序与所述角标顺序相同,多方安全计算一体机藉由前述隐私数据的数据库操作方法得到的多个计算结果集中各计算结果的顺序与相应第一存储装置中各分散密文的存储顺序一一对应。
在又一些示例中,每个计算结果集中各计算结果基于同一隐私数据的多个分散密文在各第一存储装置中存储标签的顺序而排序的。其中,所述存储标签标记分散密文在相应字段中的顺序标签,例如,所述存储标签为用于标记存储位置的编号ID。
例如,仍以隐私数据S1,S2,…,SN以角标顺序被分散存入多个第一存储装置P1,P2,…,PM为例,其中,各第一存储装置为增加所存储的分散密文的安全性,各自对所保存的分散密文的顺序进行乱序处理,并记录存储分散密文的存储顺序与各分散密文所对应的存储标签之间的对应关系,多方安全计算一体机藉由前述隐私数据的数据库操作方法得到的多个计算结果集中各计算结果的顺序与相应第一存储装置中各分散密文的存储标签的顺序一一对应。
又如,仍以隐私数据S1,S2,…,SN以角标顺序被分散存入多个第一存储装置P1,P2,…,PM为例,其中,各第一存储装置为增加所存储的分散密文的安全性,各自对所保存的分散密文的顺序进行乱序处理,并记录存储分散密文的存储顺序与各分散密文所对应的存储标签之间的对应关系,多方安全计算一体机按照所述对应关系统一所读取的各分散节点中分散密文的顺序,并藉由前述隐私数据的数据库操作方法得到的每个计算结果集中各计算结果的顺序均与某一第一存储装置中各分散密文的存储标签的顺序一一对应。
在承前所述的应用中,当所述筛选条件语句的数量为多个时,对应地,所述多方安全计算筛选处理指令为多个,且每组多方安全计算筛选处理指令对应一条筛选条件语句。
在一些示例中,数据库检索语句中的筛选条件语句的数量为多个且筛选条件语句之间具有逻辑关系,所述语句解析设备还将多个所述筛选条件语句之间具有逻辑关系转换成多个多方安全计算筛选处理指令之间的逻辑关系。所述多方安全计算一体机按照多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行单独地隐私筛选处理,得到每个字段所关联的各隐私数据的子计算结果集。
在此,为区分于单一筛选条件语句所对应的计算结果集,当数据库检索语句中包含多个筛选条件语句时,将每个字段所关联的分散密文经隐私筛选处理后得到的计算结果集称为子计算结果集。
实际上,当所述筛选条件语句的数量为多个时,各筛选条件语句之间具有逻辑关系。其中,所述逻辑关系举例为以下至少一种:“AND”、“OR”、“NOT”等。
在一些示例中,多个筛选条件语句中的字段属于同一表单,多个筛选条件语句及其逻辑关系描述了对表单下任一条目中不同字段所关联的隐私数据进行筛选的方式。例如,表单User中包含Name和Age字段,所述筛选条件语句包含筛选条件语句A为“Name like‘Dave’”和筛选条件语句B为“age>10”,且筛选条件语句A和B的逻辑关系为逻辑与,所述多个筛选条件语句及其逻辑关系描述了筛选User表单下姓名包含“Dave”以及年龄大于10的条目。
在另一些示例中,多个筛选条件语句中的字段不属于同一表单,且不同表单之间依据共同字段具有关联关系,多个筛选条件语句及其逻辑关系描述了对依据多个表单的关联关系而构建的条目中不同字段所关联的隐私数据进行筛选的方式。例如,表单User中包含UserID、Name和Age字段,表单Expenses record中包含UserID和Amount字段,依据UserID该两个表单被关联在一起,当筛选条件语句C为“Name like‘Dave’”和筛选条件语句D为“Amount>1000”,且筛选条件语句C和D的逻辑关系为逻辑与,所述多个筛选条件语句及其逻辑关系描述了筛选User和Expenses record表单下姓名包含“Dave”以及消费金额大于1000的条目,其中,该条目至少包括User表单下的Name字段以及Expenses record表单中的Amount字段。
对应地,为了使多方安全计算一体机执行包含多个筛选条件语句且各筛选条件语句之间具有逻辑关系的数据检索语句,配置在多方安全计算一体机中的各所述多方安全计算筛选处理指令之间也具有对应的逻辑关系。
为此,所述多方安全计算一体机还根据各多方安全计算筛选处理指令之间的逻辑关系,对所述各子计算结果集进行隐私逻辑处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述各字段所关联的隐私数据所在条目命中或者未命中各所述筛选条件语句及其之间的逻辑关系。
在一些示例中,所述多方安全计算筛选处理指令之间的逻辑关系描述了将不同字段所关联的子计算结果集之间进行逻辑计算的计算指令(集)。以逻辑关系为逻辑或为例,筛选条件语句A与筛选条件语句B之间的逻辑关系为逻辑或,则所述多方安全计算筛选处理指令之间的逻辑关系包含从多个子结果集中将同一条目中的不同字段所关联的各子计算结果进行比特位的或计算的计算指令(集)。更示例性地,以前述表单User中包含UserID、Name和Age字段,表单Expenses record中包含UserID和Amount字段的示例为例,其中,按照筛选条件语句C为“Name like‘Dave’”所对应的多方安全计算筛选处理指令得到Name字段所关联的3个子计算结果集N1、N2和N3,按照筛选条件语句D为“Amount>1000”所对应的多方安全计算筛选处理指令得到Amount字段所关联的3个子计算结果集Am1、Am2和Am3,多方安全计算一体机按照所述多方安全计算筛选处理指令之间的逻辑关系执行将子计算结果集N1与Am1、子计算结果集N2与Am2、子计算结果集N3与Am3分别进行比特位的逻辑或计算,得到计算结果集R1、R2和R3。其中,所述多个计算结果集R1、R2和R3协同描述一个条目中字段Name和Amount所关联的各隐私数据命中或者未命中各所述筛选条件语句及其之间的逻辑关系的结果。
在又一些示例中,所述多方安全计算筛选处理指令之间的逻辑关系描述了基于不同字段各自所关联的子计算结果集而确定的相应字段所关联的各隐私数据的隐私数据计算结果集,而执行各隐私数据计算结果集之间的逻辑计算的计算指令(集)。仍以逻辑关系为逻辑或为例,筛选条件语句A与筛选条件语句B之间的逻辑关系为逻辑或,则所述多方安全计算筛选处理指令之间的逻辑关系包含:根据筛选条件语句A和B中各自字段,分别将相应子计算结果集恢复成各字段下各隐私数据的隐私数据计算结果集的计算指令(集),以及根据所述逻辑关系,对应同一条目将所得到的两个隐私数据计算结果集中各隐私数据计算结果进行逻辑或以得到被分散处理的多个计算结果集的计算指令(集)。更详细地,以前述表单User中包含UserID、Name和Age字段,表单Expenses record中包含UserID和Amount字段的示例为例,其中,按照筛选条件语句C为“Name like‘Dave’”所对应的多方安全计算筛选处理指令得到Name字段所关联的3个子计算结果集N1、N2和N3,按照筛选条件语句D为“Amount>1000”所对应的多方安全计算筛选处理指令得到Amount字段所关联的3个子计算结果集Am1、Am2和Am3。多方安全计算一体机按照所述逻辑或的逻辑关系,将子计算结果集N1、N2和N3恢复成Name字段下所有隐私数据的隐私数据计算结果集N,以及将子计算结果集Am1、Am2和Am3恢复成Amount字段下所有隐私数据的隐私数据计算结果集Am;其中,隐私数据计算结果集N为基于同一隐私数据将子计算结果集N1、N2和N3中各自子计算结果加和后形成的结果集,隐私数据计算结果集Am为基于同一隐私数据将子计算结果集Am1、Am2和Am3中各自子计算结果加和后形成的结果集。所述多方安全计算一体机按照同一条目下Name字段和Amount字段之间逻辑或的逻辑关系,将隐私数据计算结果集Am和N进行多方的比特位的逻辑或计算,得到被分散处理的多个计算结果集。
在此,各计算结果集中包含标识信息;所述标识信息用于标识依据所述多方安全计算筛选处理指令及其逻辑关系而执行的各计算结果。以前述表单User中包含UserID、Name和Age字段,表单Expenses record中包含UserID和Amount字段的示例为例,计算结果集中每个标识信息包含以下至少一种:执行比特位的逻辑或计算的计算结果本身,或者将用于描述所述逻辑关系的且被分散处理的比特值。
在此被分散处理的多个计算结果集可供外部计算装置恢复成对应数据检索语句的检索结果集。
在一些示例中,请参阅图22,显示为本申请隐私数据的数据库操作系统在另一实施例中的结构示意图,如图所示,所述隐私数据的数据库操作系统30包括第一存储装置301、语句解析设备302、多方安全计算一体机303,还包括第一输出设备304。所述第一输出设备304用于按照外部计算装置所提供的输出配置,将所述计算结果集予以输出。
其中,所述输出配置用于描述外部计算设备对待输出的计算结果集的需求。其中,所述输出配置可包含默认需求或者指示需求。例如,所述多方安全计算一体机与外部计算设备的输出配置为预设固定的,所述输出配置预先内置于多方安全计算一体机中各计算装置的配置文件(或日志文件等)中,多方安全计算一体机中的计算装置根据所获取的读取指令中的设备识别标识(如IP等),从所保存的配置文件中获得相应的输出配置。又如,所述输出配置是外部计算设备的读取指令中所携带的。所述多方安全计算一体机中的计算装置通过获取读取指令为来获得输出配置。
所述输出配置包括:基于秘密分享技术而设置的分散方式,或者输出明文,或者输出明文的加密。
其中,所述输出明文是指向外部计算设备提供计算结果集中各计算结果的明文的方式。
其中,所述输出明文的加密是指在输出配置中指定将计算结果集中个计算结果的明文进行加密的方式。所述加密方式例如可以包括利用与外部计算设备匹配的密钥进行加密的方式,或者基于同态加密的方式,或者利用共享随机数对输出数据进行可抵消计算的方式进行加密的方式等。以基于密钥加密的方式为例,所述输出配置中包含与外部计算设备匹配的密钥。以基于同态加密对相应的计算结果集进行加密的方式为例,所述输出配置中包含基于同态加密而设置的加密函数。以基于共享随机数而设置的加密方式为例,所述输出配置中包含用于生成共享随机数的随机数发生器,以及使用所述共享随机数进行可抵消计算的计算方式。
其中,所述基于秘密分享技术而设置的分散方式包括但不限于基于加法计算而设置的分散方式,基于Shamir秘密共享算法而设置的分散方式等。例如,所述分散方式包括:将三个计算结果集转换成基于加法计算的分散方式而得到的四个计算结果集的方式。又如,所述分散方式包括:将四个可利用加和方式恢复明文的计算结果集转换成基于2阶Shamir秘密共享算法的分散方式而得到的三个计算结果集的方式。
需要说明的是,上述计算结果集的数量和分散方式仅为举例。事实上,根据由外部计算设备所构成的多方安全计算一体机的数据格式需求,上述输出配置提供匹配其需求的分散方式而配置下相应的计算结果集。
由于数据库检索语句还能提供对所筛选出的数据进行数据统计处理的能力,为此,所述多方安全计算一体机还基于多方安全计算统计处理指令对所述计算结果集进行隐私统计处理,得到统计结果的步骤。
其中,所述多方安全计算统计处理指令是通过所述语句解析设备对数据库检索语句中的数据处理语句进行解析而获得的。
在此,所述数据处理语句用于描述对依据所述筛选条件语句而筛选出的隐私数据进行统计处理的方式。其中,所述统计处理包括但不限于:求和、平均值、中位数、标准差、方差等或其中至少一种的统计处理。对应地,所述多方安全计算统计处理指令被解析为可供多方安全计算一体机执行所述数据处理语句的计算指令(集)。例如,所述数据处理语句包含对符合筛选条件语句的隐私数据进行求和的数据处理方式,所述多方安全计算统计处理指令包含对各计算结果集中对应同一隐私数据的计算结果进行多方加和计算,以及将多方加和结果进行分散保存,以得到分散处理的统计结果。
与前述将计算结果集输出至外部计算装置类似地,所述隐私数据的数据库操作系统还可以包括第二输出设备,所述第二输出设备也可按照外部计算装置所提供的输出配置,将所述统计结果予以输出。
请参阅图23,显示为本申请隐私数据的数据库操作系统在又一实施例中的结构示意图,如图所示,所述隐私数据的数据库操作系统40包括第一存储装置401、语句解析设备402、多方安全计算一体机403,还包括第二输出设备404,所述第二输出设备404用于按照外部计算装置所提供的输出配置,将所述统计结果集予以输出。在此,所述输出配置和输出方式与前述第一输出设备将计算结果集输出至外部计算装置相同或相似,在此不再详述。
上述利用隐私数据的数据库操作系统对分散密文的数据库操作能确保在不必要暴露明文的情况下,实现对数据库中分散密文进行数据检索的方式。另外,利用基于秘密分享的多方安全计算一体机执行所述数据库操作过程,可确保单一计算装置不保存隐私数据的明文、或隐私数据的统计结果的明文的情况。
在某些实施方式中,请参阅图4,所述多方安全计算一体机包括多个计算装置。各所述计算装置至少包含存储器和处理器等。所述存储器和处理器与前文所述的相同或相似,在此不再详述。
在某些实施例中,所述多方安全计算一体机还封装有多个第一存储装置。请参阅图15,显示为本申请的多方安全计算一体机在一实施方式中的示意图。如图所示,所述多方安全计算一体机还可包括多个第一存储装置,其中,每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接,这些第一存储装置用于分散保存对应同一输入数据的多个分散密文。如此,每一个计算装置可从对应连接的第一存储装置中获得分散密文,这样,多个计算装置就可从多个第一存储装置中获得多个分散密文,所述获得的多个分散密文是对应同一输入数据的。在某些实施例中,第一存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备等。
其中,每一个计算装置根据所述多方安全计算协议与相应的第一存储装置连接。所述连接的方式与前文所述的相同或相似,在此不再详述。
所述多方安全计算一体机实现如前述实施例所述的隐私数据的数据库操作方法:根据存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
其中,所述第一存储装置与前文所述的相同或相似,在此不再详述。
其中,所述存储配置与前文所述的相同或相似,在此不再详述。
以上,对于无索引表、且分散存储的隐私数据来说,为了保证隐私数据的安全性,隐私数据的读取操作一方面需满足不泄漏明文的隐私需求,另一方面需从多个第一存储装置中读取可恢复隐私数据的分散密文,并在不必须暴露明文的情况下,以不恢复明文的方式执行数据库操作。
基于上述多方安全计算一体机所描述的各示例所反映的技术框架下,本申请公开以下技术方案:
1.一种多方安全计算一体机,其中,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算。
2.根据实施方式1所述的多方安全计算一体机,其中,还包括硬件安全模块,与各计算装置连接,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
3.根据实施方式2所述的多方安全计算一体机,其中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
4.根据实施方式1所述的多方安全计算一体机,其中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
5.根据实施方式4所述的多方安全计算一体机,其中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
6.根据实施方式2所述的多方安全计算一体机,其中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
7.根据实施方式6所述的多方安全计算一体机,其中,所述控制器为一种可执行至少一次写入操作的芯片。
8.根据实施方式1-7中任一所述的多方安全计算一体机,其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
9.根据实施方式8所述的多方安全计算一体机,其中,所述计算装置的数量为四个;至少两个计算装置执行所述多方安全计算的方式包括:各计算装置对所获取的分散密文进行本地计算,和/或基于各自的多方安全计算协议其中两个计算装置将本地计算所产生的中间数据进行置换,得到经由各计算装置分别持有的计算结果。
10.根据实施方式9所述的多方安全计算一体机,其中,所述两个计算装置利用共享随机数执行本地计算以得到可供抵消的中间数据或计算结果;其中,各计算装置共享用于产生所述共享随机数的种子。
11.根据实施方式9所述的多方安全计算一体机,其中,四个所述计算装置基于各自的多方安全计算协议协同执行基于加法、乘法、位提取、数值类型转换、不经意传输中至少一种或多种组合的多方安全计算。
12.一种多方安全计算一体机,其中,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算;
其中,所述多方安全计算指令包括构建索引的操作指令,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括以下步骤:
对所获得的多个分散密文创建索引;其中所述分散密文是对待存储数据进行多方隐私加密后形成的。
13.根据实施方式12所述的多方安全计算一体机,其中,还包括多个第一存储装置,用于分散保存对应同一输入数据的多个分散密文;每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接。
14.根据实施方式13所述的多方安全计算一体机,其中,还包括第二存储装置,与各计算装置相连,用于存储多个计算装置所创建的索引。
15.根据实施方式12所述的多方安全计算一体机,其中,所述多个计算装置执行对多个分散密文创建索引的步骤包括:通过创建哈希表或查找树对所述多个分散密文创建索引;并将所创建的存入所述第二存储装置。
16.根据实施方式12所述的多方安全计算一体机,其中,还包括硬件安全模块,与各计算装置连接,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
17.根据实施方式16述的多方安全计算一体机,其中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
18.根据实施方式16述的多方安全计算一体机,其中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
19.根据实施方式18的多方安全计算一体机,其中,所述控制器为一种可执行至少一次写入操作的芯片。
20.根据实施方式12所述的多方安全计算一体机,其中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
21.根据实施方式20的多方安全计算一体机,其中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
22.根据实施方式12-21中任一所述的多方安全计算一体机,其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
23.一种多方安全计算一体机,其中,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算;
其中,所述多方安全计算指令包括:检索存储数据的操作指令,所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议以及所获得的分散密文执行多方安全计算包括以下步骤:
从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据检索结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
24.根据实施方式23所述的多方安全计算一体机,其中,还包括多个第一存储装置,用于分散保存对应同一存储数据的多个分散密文;每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接。
25.根据实施方式24所述的多方安全计算一体机,其中,还包括第二存储装置,用于存储所述索引。
26.根据实施方式23方计算一体机,其中,所述索引是基于存储数据的多个分散密文而创建的哈希表;在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
27.根据实施方式23的多方安全计算一体机,其中,还包括硬件安全模块,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
28.根据实施方式27的多方安全计算一体机,其中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
29.根据实施方式27的多方安全计算一体机,其中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
30.根据实施方式29全多方安全计算一体机,其中,所述控制器为一种可执行至少一次写入操作的芯片。
31.根据实施方式23所述的多方安全计算一体机,其中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
32.根据实施方式31全多方安全计算一体机,其中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
33.根据实施方式23-32中任一所述的多方安全计算一体机,其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
34.一种多方安全计算一体机,其中,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算;
其中,所述多方安全计算指令包括基于数据库检索语句而得到的指令;
所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算包括以下步骤:
根据一存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;所获取的分散密文为隐私数据经所述存储配置而分散形成的;
按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
35.根据实施方式34所述的多方安全计算一体机,其中,还封装有多个所述第一存储装置,用于分散保存对应同一输入数据的多个分散密文;每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接。
36.根据实施方式34所述的多方安全计算一体机,其中,所述筛选条件语句的数量为多个且筛选条件语句之间具有逻辑关系,对应地,所述多方安全计算筛选处理指令为多个,且多方安全计算筛选处理指令之间具有对应的逻辑关系;所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算的步骤包括:
按照多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行单独地隐私筛选处理,得到每个字段所关联的各隐私数据的子计算结果集;
根据各多方安全计算筛选处理指令之间的逻辑关系,对各子计算结果集进行隐私逻辑处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述各字段所关联的隐私数据所在条目命中或者未命中各所述筛选条件语句及其之间的逻辑关系。
37.根据实施方式34所述的多方安全计算一体机,其中,还包括硬件安全模块,与各计算装置连接,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
38.根据实施方式37述的多方安全计算一体机,其中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
39.根据实施方式37述的多方安全计算一体机,其中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
40.根据实施方式39的多方安全计算一体机,其中,所述控制器为一种可执行至少一次写入操作的芯片。
41.根据实施方式34所述的多方安全计算一体机,其中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
42.根据实施方式41的多方安全计算一体机,其中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
43.根据实施方式34-42中任一所述的多方安全计算一体机,其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
44一种多方安全计算系统,其中,包括至少两个多方安全计算一体机,其中,所述多方安全计算一体机如实施方式1-11、12-22、23-33、34-43中任一所述;其中,两个多方安全计算一体机通过串联或并联的方式连接。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (11)
1.一种多方安全计算一体机,其特征在于,包括多个计算装置,各所述计算装置被配置于互不信任的计算系统架构中;其中,每一计算装置中预置有多方安全计算协议,并在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算;
其中,所述多方安全计算指令包括基于数据库检索语句而得到的指令;
所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算包括以下步骤:
根据一存储配置以及多方安全计算筛选处理指令中所包括的字段,分别从其中的至少两个第一存储装置中读取相应字段关联的分散密文;其中,所述多方安全计算筛选处理指令是通过对数据库检索语句中的筛选条件语句进行解析而获得的;所获取的分散密文为隐私数据经所述存储配置而分散形成的;
按照所述多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行隐私筛选处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述相应字段关联的隐私数据是否命中所述筛选条件语句。
2.根据权利要求1所述的多方安全计算一体机,其中,还封装有多个所述第一存储装置,用于分散保存对应同一输入数据的多个分散密文;每一计算装置根据所述多方安全计算协议与相应的第一存储装置连接。
3.根据权利要求1所述的多方安全计算一体机,其中,所述筛选条件语句的数量为多个且筛选条件语句之间具有逻辑关系,对应地,所述多方安全计算筛选处理指令为多个,且多方安全计算筛选处理指令之间具有对应的逻辑关系;所述计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述多方安全计算协议执行多方安全计算的步骤包括:
按照多方安全计算筛选处理指令分别对读取自各第一存储装置中相应字段关联的各分散密文进行单独地隐私筛选处理,得到每个字段所关联的各隐私数据的子计算结果集;
根据各多方安全计算筛选处理指令之间的逻辑关系,对各子计算结果集进行隐私逻辑处理,得到被分散处理的多个计算结果集;其中,所述多个计算结果集协同描述各字段所关联的隐私数据所在条目命中或者未命中各所述筛选条件语句及其之间的逻辑关系。
4.根据权利要求1所述的多方安全计算一体机,其中,还包括硬件安全模块,与各计算装置连接,用于为各所述计算装置执行的多方安全计算提供密码学操作;每一计算装置在接收到多方安全计算指令时与至少另一计算装置基于所述密码学操作、预置的多方安全计算协议以及所获得的分散密文执行多方安全计算。
5.根据权利要求4所述的多方安全计算一体机,其中,所述密码学操作包括以下至少一种:生成密钥对、生成随机数、生成认证证书、派生密钥、更新密钥、以及提供公钥基础设施。
6.根据权利要求4所述的多方安全计算一体机,其中,每一计算装置包括有控制器;每一控制器存储有以下至少一种:所述多方安全计算协议,用于管理所属计算机装置资源的管理配置,所述硬件安全模块所生成的用于执行密码学操作的密钥和/或证书,以及所述硬件安全模块用于执行密码学操作的主密钥的分散密钥。
7.根据权利要求6的多方安全计算一体机,其中,所述控制器为一种可执行至少一次写入操作的芯片。
8.根据权利要求1所述的多方安全计算一体机,其中,所述多个计算装置中的每一计算装置包括有I/O接口;执行多方安全计算的至少两个计算装置的I/O接口通过网络互连的连接方式连接。
9.根据权利要求8的多方安全计算一体机,其中,每一计算装置中的I/O接口包含网络接口控制器,所述至少两个计算机装置之间利用网络接口控制器连接;或者,所述多方安全计算一体机还包括可编程的集成电路,各所述I/O接口均连接所述集成电路,所述集成电路基于多方安全计算协议选择其中两个I/O接口通信。
10.根据权利要求1-8中任一所述的多方安全计算一体机,其中,所述多方安全计算协议为基于秘密分享技术以及被配置于互不信任的计算系统架构中的所述计算装置的数量而设置的。
11.一种多方安全计算系统,其中,包括至少两个多方安全计算一体机,其中,所述多方安全计算一体机如权利要求1-10中任一所述;其中,两个多方安全计算一体机通过串联或并联的方式连接。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019106246915 | 2019-07-11 | ||
CN201910624691 | 2019-07-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931250A CN111931250A (zh) | 2020-11-13 |
CN111931250B true CN111931250B (zh) | 2024-03-22 |
Family
ID=73282803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911012844.7A Active CN111931250B (zh) | 2019-07-11 | 2019-10-23 | 多方安全计算一体机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931250B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112580071B (zh) * | 2020-12-09 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 一种数据处理方法及装置 |
CN112688779B (zh) * | 2021-03-09 | 2021-07-13 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN113157402B (zh) * | 2021-05-24 | 2021-12-14 | 深圳联创和科技有限公司 | 一种基于分区操作系统的虚拟化权限控制通信方法 |
CN113343283B (zh) * | 2021-07-30 | 2021-10-15 | 深圳前海微众银行股份有限公司 | 一种数据处理方法 |
CN113780530B (zh) * | 2021-09-09 | 2024-05-24 | 浙江数秦科技有限公司 | 一种三角式隐私计算方法 |
CN114239064A (zh) * | 2021-12-20 | 2022-03-25 | 杭州趣链科技有限公司 | 隐私计算方法、装置、电子设备及计算机可读存储介质 |
CN114584294B (zh) * | 2022-02-28 | 2024-04-16 | 淘宝(中国)软件有限公司 | 不经意分散排列方法及装置 |
CN114726514B (zh) * | 2022-03-21 | 2024-03-22 | 支付宝(杭州)信息技术有限公司 | 数据的处理方法和装置 |
TWI824517B (zh) * | 2022-05-12 | 2023-12-01 | 技嘉科技股份有限公司 | 身分驗證方法及身分驗證系統 |
CN115580414B (zh) * | 2022-12-08 | 2023-05-30 | 太极计算机股份有限公司 | 基于隐私计算的数据开放系统及方法 |
CN116028969B (zh) * | 2022-12-15 | 2024-05-03 | 江苏金信天信息技术有限公司 | 一种基于数据加密技术的隐私计算方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101385041A (zh) * | 2006-02-14 | 2009-03-11 | 微软公司 | 计算机主存多安全执行环境 |
WO2017190795A1 (en) * | 2016-05-06 | 2017-11-09 | Rwe International Se | System for evaluating telemetry data |
CN109615378A (zh) * | 2019-01-24 | 2019-04-12 | 上海点融信息科技有限责任公司 | 基于区块链的安全多方计算方法、装置及可读存储介质 |
WO2019101243A2 (en) * | 2019-03-18 | 2019-05-31 | Alibaba Group Holding Limited | Preventing misrepresentation of input data by participants in a secure multi-party computation |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017220115A1 (en) * | 2016-06-20 | 2017-12-28 | Rwe International Se | Software defined networking system |
WO2018006072A1 (en) * | 2016-06-30 | 2018-01-04 | Clause, Inc. | Systems and method for forming, storing, managing,and executing contracts |
US10579437B2 (en) * | 2016-12-01 | 2020-03-03 | International Business Machines Corporation | Migrating a logical partition with a native logical port |
US10547592B2 (en) * | 2017-01-19 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Computing a global sum that preserves privacy of parties in a multi-party environment |
SG11201908666VA (en) * | 2017-03-21 | 2019-10-30 | Tora Holdings Inc | Secure order matching by distributing data and processing across multiple segregated computation nodes |
-
2019
- 2019-10-23 CN CN201911012844.7A patent/CN111931250B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101385041A (zh) * | 2006-02-14 | 2009-03-11 | 微软公司 | 计算机主存多安全执行环境 |
WO2017190795A1 (en) * | 2016-05-06 | 2017-11-09 | Rwe International Se | System for evaluating telemetry data |
CN109615378A (zh) * | 2019-01-24 | 2019-04-12 | 上海点融信息科技有限责任公司 | 基于区块链的安全多方计算方法、装置及可读存储介质 |
WO2019101243A2 (en) * | 2019-03-18 | 2019-05-31 | Alibaba Group Holding Limited | Preventing misrepresentation of input data by participants in a secure multi-party computation |
Non-Patent Citations (1)
Title |
---|
基于直连以太网络的高性能计算集群测试与分析;叶政晟;黄贞云;张彦彬;肖熠琳;任豪;许华倚;林铭杰;;机电工程技术(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111931250A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111931250B (zh) | 多方安全计算一体机 | |
Yu et al. | A blockchain-based shamir’s threshold cryptography scheme for data protection in industrial internet of things settings | |
EP3788523B1 (en) | System and method for blockchain-based cross-entity authentication | |
Nagaraju et al. | Trusted framework for online banking in public cloud using multi-factor authentication and privacy protection gateway | |
CN105516201B (zh) | 一种多服务器环境下轻量级匿名认证与密钥协商方法 | |
CN111027087B (zh) | 应用区块链助记词加密的企业信息管理系统及方法 | |
US10635824B1 (en) | Methods and apparatus for private set membership using aggregation for reduced communications | |
CN111967038B (zh) | 数据处理系统、方法、设备、编辑器及存储介质 | |
CN104158827B (zh) | 密文数据共享方法、装置、查询服务器和上传数据客户端 | |
US10609010B2 (en) | System, methods and software application for sending secured messages on decentralized networks | |
CN111914264A (zh) | 索引创建方法及装置、数据验证方法及装置 | |
KR102465467B1 (ko) | Did 기반의 탈중앙화된 사용자 데이터 저장 및 공유 시스템 | |
US20220020020A1 (en) | Methods, systems, and devices for managing digital assets | |
WO2020199784A1 (zh) | 输入数据的计算方法、计算引擎及存储介质 | |
CN112000979B (zh) | 隐私数据的数据库操作方法、系统及存储介质 | |
Huynh et al. | A reliability guaranteed solution for data storing and sharing | |
Cai et al. | Privacy of outsourced two‐party k‐means clustering | |
CN112003690B (zh) | 密码服务系统、方法及装置 | |
US11853466B2 (en) | Systems and methods for use in segregating data blocks to distributed storage | |
US20220366381A1 (en) | System and method for distributed storage of transactions | |
Khan et al. | Confirming Secure Interoperability in Mobile Financial Services: Challenges of Data Federation and Cryptography-Based Solution | |
AU2022263492B2 (en) | Method and system for performing cryptocurrency asset transactions | |
CN113746829B (zh) | 多源数据的关联方法、装置、设备及存储介质 | |
Take et al. | E-certificate generation using blockchain for p2p network: An overview | |
JP2019101392A (ja) | 照合システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |