CN111914264A - 索引创建方法及装置、数据验证方法及装置 - Google Patents

索引创建方法及装置、数据验证方法及装置 Download PDF

Info

Publication number
CN111914264A
CN111914264A CN201910523129.3A CN201910523129A CN111914264A CN 111914264 A CN111914264 A CN 111914264A CN 201910523129 A CN201910523129 A CN 201910523129A CN 111914264 A CN111914264 A CN 111914264A
Authority
CN
China
Prior art keywords
ciphertexts
field
data
scattered
index
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.)
Pending
Application number
CN201910523129.3A
Other languages
English (en)
Inventor
王蜀洪
李艺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huakong Tsingjiao Information Technology Beijing Co Ltd
Original Assignee
Huakong Tsingjiao Information Technology Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huakong Tsingjiao Information Technology Beijing Co Ltd filed Critical Huakong Tsingjiao Information Technology Beijing Co Ltd
Publication of CN111914264A publication Critical patent/CN111914264A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting personal data, e.g. for financial or medical purposes

Abstract

本申请公开一种索引创建方法、装置及系统、数据验证方法、装置及系统、计算机设备、以及计算机可读存储介质,其中,所述索引创建方法包括如下步骤:获得多个分散密文,所述分散密文是对输入数据进行多方隐私加密后形成的;对所述多个分散密文创建索引。本申请通过对输入数据经多方隐私加密后形成的多个分散密文创建索引,不仅可确保数据的安全可靠,更可通过创建索引来大幅提升数据查询及验证的速度,满足快速查询场景的应用。

Description

索引创建方法及装置、数据验证方法及装置
技术领域
本申请涉及数据处理技术领域,特别是涉及一种索引创建方法、装置及系统、数据验证方法、装置及系统、计算机设备、以及计算机可读存储介质。
背景技术
现在随着电子技术和通信网络的应用,通过数字化系统实施业务的方式正得到广泛应用,所述业务可例如为门禁、考勤、公共交通、票务、金融支付等。随着业务功能越来越强大,其所涉及的数据也越来越多。
一般地,在实际应用中,接收用户提交的业务请求,并对所述业务请求中的待验证数据进行数据验证,在验证通过后,即可实施相应的业务。
但在上述数据验证过程中,存在如下缺失:验证数据会因为需要频繁使用而长期驻留在验证平台或数据中心的服务器内存中,存在被IT管理员或者黑客盗取,或者被攻击而盗取验证数据的风险。特别地,所述验证数据若是以明文形式验证平台或数据中心的服务器内存中,则存在更大的安全隐患。当存储的数据为海量时,进行数据验证若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于公开一种索引创建方法、装置及系统、数据验证方法、装置及系统、计算机设备、以及计算机可读存储介质,用于解决现有技术中业务数据安全的风险防控及数据验证效率等问题。
为实现上述目的及其他相关目的,本申请第一方面公开一种索引创建方法,包括以下步骤:获得多个分散密文,所述分散密文是对输入数据进行多方隐私加密后形成的;对所述多个分散密文创建索引。
本申请第二方面公开一种索引创建装置,包括:数据获取模块,用于获得多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;索引创建模块,用于对所述多个分散密文创建索引。
本申请第三方面公开一种索引创建系统,包括:多个存储节点,用于分散存储多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;如前所述的索引创建装置,用于对所述多个分散密文创建索引。
本申请第四方面公开一种计算机设备,包括:通信接口;存储器,用于存储至少一种程序;处理器,与所述存储器和通信接口相连,其中,所述处理器被配置于一可信任的处理环境中,所述处理环境按照所存储的至少一个程序,执行并实现如前所述的索引创建方法。
本申请第五方面公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被调用时与执行并实现如前所述的索引创建方法。
本申请第六方面公开一种数据验证方法,包括以下步骤:获得待验证的多个分散密文,所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
本申请第七方面公开一种数据验证装置,包括:数据获取模块,用于获得待验证的多个分散密文;所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;数据验证模块,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
本申请第八方面公开一种数据验证系统,包括:多个存储节点,用于分散存储多个分散密文;所述分散密文是对存储数据进行多方隐私加密后形成的;如前所述的数据验证装置,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述预设的索引是基于存储数据的多个分散密文而创建的。
本申请第九方面公开一种计算机设备,包括:通信接口;存储器,用于存储至少一种程序;处理器,与所述存储器和通信接口相连,其中,所述处理器集成有一可信任的处理环境,所述处理环境按照所存储的至少一个程序,执行并实现如前所述的数据验证方法。
本申请第十方面公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述指令被调用时与执行并实现如前所述的数据验证方法。
由上可知,本申请公开的索引创建方法、装置及系统、数据验证方法、装置及系统、计算机设备、以及计算机可读存储介质,可对输入数据经多方隐私加密后形成的多个分散密文创建索引,并对待验证数据经多方隐私加密后形成的多个分散密文进行数据验证,不仅可确保数据的安全可靠,更可通过创建索引来大幅提升数据查询及验证的速度,满足快速查询场景的应用。
附图说明
图1显示为申请索引创建方法所应用的数据处理平台在一实施例中的架构示意图。
图2显示为本申请索引创建方法在一实施例中的流程示意图。
图3显示为隐私加密存储及隐私计算架构在一实施例中的示意图。
图4显示为通过创建哈希表对多个分散密文创建索引在一实施例中的流程示意图。
图5显示为图4中步骤S303的细化步骤的流程示意图。
图6显示为图5中步骤S3035的细化步骤的流程示意图。
图7显示为按照图4至图6的流程对多个分散密文创建哈希表所形成的哈希表的结构示意图。
图8显示为通过创建哈希表对多个分散密文创建索引在另一实施例中的流程示意图。
图9显示为图8中步骤S503的细化步骤的流程示意图。
图10显示为图9中步骤S5035的细化步骤的流程示意图。
图11显示为按照图8至图10的流程对多个分散密文创建哈希表所形成的哈希表的结构示意图。
图12显示为通过创建哈希表对多个分散密文创建索引在又一实施例中的流程示意图。
图13显示为图12中步骤S703的细化步骤的流程示意图。
图14显示为图13中步骤S7035的细化步骤的流程示意图。
图15显示为按照图12至图14的流程对多个分散密文创建哈希表所形成的哈希表的结构示意图。
图16显示为通过创建哈希表对多个分散密文创建索引在再一实施例中的流程示意图。
图17显示为图16中步骤S903的细化步骤的流程示意图。
图18显示为图17中步骤S9035的细化步骤的流程示意图。
图19显示为按照图16至图18的流程对多个分散密文创建哈希表所形成的哈希表的结构示意图。
图20显示为本申请索引创建装置在一实施例中的结构示意图。
图21显示为本申请索引创建装置在另一实施例中的结构示意图。
图22显示为本申请索引创建系统在一实施例中的结构示意图。
图23显示为本申请计算机设备在一实施例中的结构示意图。
图24显示为申请数据验证方法所应用的数据处理平台在一实施例中的架构示意图。
图25显示为本申请数据验证方法在一实施例中的流程示意图。
图26显示图25中步骤S104在一实施例中的流程示意图。
图27显示图26中步骤S203的细化步骤的流程示意图。
图28显示图27中步骤S2035的细化步骤的流程示意图。
图29显示图25中步骤S104在一实施例中的流程示意图。
图30显示为图29步骤S403的细化步骤的流程示意图。
图31显示为图30中步骤S4035的细化步骤的流程示意图。
图32显示图25中步骤S104在一实施例中的流程示意图。
图33显示为图32步骤S603的细化步骤的流程示意图。
图34显示为图33中步骤S6035的细化步骤的流程示意图。
图35显示图25中步骤S104在一实施例中的流程示意图。
图36显示为图35步骤S803的细化步骤的流程示意图。
图37显示为图36中步骤S8035的细化步骤的流程示意图。
图38显示为本申请数据验证装置在一实施例中的结构示意图。
图39显示为本申请数据验证装置在另一实施例中的结构示意图。
图40显示为本申请数据验证系统在一实施例中的结构示意图。
图41显示为本申请计算机设备在一实施例中的结构示意图。
具体实施方式
以下由特定的具体实施例说明本申请的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本公开的精神和范围的情况下进行组成以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由本申请的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。比如本申请中的“至少一用户端”则包括一个用户端以及多个用户端的情况。再比如本申请中的“至少一字段”则表示为一个字段以及多个字段的情况。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。
在一些业务实现的应用中,会涉及到利用业务数据进行数据验证等操作,这些业务数据可能是些敏感数据,对敏感数据的保护需要提供这些数据的数据提供方、中间验证平台、数据使用方等多方协同执行。
为使得敏感数据所涉及的各方在保护敏感数据的基础上实现对敏感数据的处理,在一些方式中,将敏感数据进行传统的加密处理,然而,该加密数据在处理设备进行数据处理时,是需解密的。这使得敏感数据在处理设备上不存在隐私可言,存在很大的安全隐患。在另一些方式中,当存储的数据为海量时,进行数据验证若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。
为此,本申请公开一种索引创建方法、索引创建装置及索引创建系统、数据验证方法、数据验证装置及数据验证系统,通过对涉及的数据进行多方隐私加密后形成的多个分散密文创建索引,在数据验证时则是以将待验证数据进行多方隐私加密形成的多个分散密文通过创建的索引进行数据验证,所有的数据自始至终不以明文显示,在确保数据的安全可靠的情形下,可大幅提升数据查询及验证的速度,满足快速查询场景的应用。
本申请公开一种索引创建方法。在某些实施方式中,所述索引创建方法可应用于一数据处理平台中,利用数据处理平台针对输入数据创建索引。
请参阅图1,显示为本申请索引创建方法所应用的数据处理平台在一实施例中的架构示意图。
图1所示的数据处理平台是用于对接收的输入数据创建索引。需要说明的是,根据图1所示的硬件系统而执行的各过程仅为举例,在不同应用场景下,其可单独执行或与基于实际设计需要而与其他执行过程配合执行。
数据处理平台1可为包含通信接口、存储器、处理器等的电子设备,所述电子设备可为单台计算机设备、计算机集群、或基于云架构的服务系统等。其中,所述单台计算机设备可以是自主配置的可执行本申请各方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述计算机集群可以是一组相互独立的、通过高速网络互联的计算机设备,它们构成了一个群组并以单一系统的模式加以管理。所述云架构的服务系统包括公共云(Public Cloud)服务端与私有云(Private Cloud)服务端,其中,所述公共或私有云服务端包括Software-as-a-Service(软件即服务,简称SaaS)、Platform-as-a-Service(平台即服务,简称PaaS)及Infrastructure-as-a-Service(基础设施即服务,简称IaaS)等。所述私有云服务端例如阿里云计算服务平台、亚马逊(Amazon)云计算服务平台、百度云计算平台、腾讯云计算平台等。
根据实际运行上述各方法的硬件装置,构成所述电子设备的各器件可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信协同完成。
所述通信接口与所述处理器数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述通信接口包括但不限于网卡、移动网络接入模块、通过总线与处理器相连的总线接口等。
所述存储器用于存储可执行上述任一种或多种方法的至少一个程序。对应同一电子设备的所述存储器可与处理器位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的通信接口将程序传递给运行所述程序的处理器。所述存储器可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储器还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储器中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理器可操作地与存储器耦接。更具体地,处理器可执行在存储器和/或非易失性存储设备中存储的程序以在数据处理平台中执行操作。如此,处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理器所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于通信接口实现数据通信,以协同地执行各方法的各步骤。
数据处理平台1用于对输入数据创建索引。其中,所述输入数据包括但不限于:来自用户输入的数据,来自至少一用户端发送的数据(例如内部资料),来自至少一数据源的数据(例如数据库),来自数据处理平台自身生成的数据,以及来自互联网等其他可通信计算机设备中的数据(例如网络信息)中的至少一种。在一些示例中,所述输入数据为业务数据,这些业务数据可能是些敏感数据。其中,所述敏感数据是指以数字化形式存储并且具有不希望被泄露的数据。
请参阅图2,显示为本申请索引创建方法在一实施例中的流程示意图。如图所示,本申请索引创建方法包括如下步骤:
步骤S101,获得多个分散密文,所述分散密文是对输入数据进行多方隐私加密后形成的。
在某些实施方式中,数据处理平台获得多个分散密文。如图1所示,由数据处理平台1获得多个分散密文。其中,所述分散密文是对输入数据进行多方隐私加密后形成的,所述输入数据可为一般数据或是敏感数据。其中,常见的敏感数据包括但不限于:姓名、身份证号码、地址、电话号码、银行账号、邮箱地址、所属城市、邮编、密码类信息(如账户查询密码、取款密码、登录密码等)、生物类信息(如人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等)、组织机构名称、营业执照号码、银行帐号、交易日期、交易金额等。
在某些示例中,数据处理平台1获得多个分散密文的方式可包括:由各个用户端或数据源将采集到的多个分散密文以定期或实时的方式发送给数据处理平台1。在某些示例中,数据处理平台获得多个分散密文的方式可包括:由数据处理平台1以定期或实时的方式向各个用户端或数据源调用多个分散密文。
在某些实施方式中,数据处理平台获得的是输入数据,因此,在本申请索引创建方法中,还可包括预先对获得的输入数据进行多方隐私加密以形成多个分散密文的步骤。一般地,对于输入数据,以用户端为例,所述用户端会对待发送的输入数据进行传统的加密处理之后再将经加密处理的输入数据发送给数据处理平台1,数据处理平台1接收所述输入数据后,需先对经加密处理的输入数据进行解密处理以恢复出原始的输入数据,再对恢复的输入数据进行多方隐私加密以形成多个分散密文。其中,进行加密处理和解密处理的加解密手段,包括但不限于数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。
在某些示例中,所述输入数据可采用数据记录形式。所述数据处理平台获得输入数据的方式包括以数据记录形式逐条接收输入数据,并对获得的输入数据逐条进行多方隐私加密。在某些示例中,所述输入数据可采用文件形式。所述数据处理平台获得输入数据的方式包括获得包含输入数据的文件,从文件中提取相应的输入数据,并对提取的输入数据进行多方隐私加密。在某些示例中,所述输入数据可采用数据库形式。所述数据处理平台获得输入数据的方式包括获得包含输入数据的数据库,从数据库中提取相应的输入数据,并对提取的输入数据进行多方隐私加密。
在某些实施方式中,数据处理平台1获得的是多个分散密文,因此,在本申请索引创建方法中,数据处理平台1可直接对获得的多个分散密文创建索引。其中,所述多个分散密文已预先通过对输入数据进行多方隐私加密而形成。对于多个分散密文,以用户端为例,由用户端对输入数据进行多方隐私加密后形成与所述输入数据对应的多个分散密文,并将形成的多个分散密文发送给数据处理平台1。在某些示例中,所述用户端会对待发送的多个分散密文进行传统的加密处理之后再将经加密处理的多个分散密文发送给数据处理平台1,数据处理平台1接收所述多个分散密文后,需先对经加密处理的多个分散密文进行解密处理以恢复出原始的多个分散密文。其中,进行加密处理和解密处理的加解密手段,包括但不限于数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。
请参阅图3,显示为隐私加密存储及隐私计算架构在一实施例中的示意图。如图所示,隐私加密存储及隐私计算架构可包括至少一客户端和至少一服务端。在本示例中,服务端配置有多个计算节点(在图3的示例中,以四个计算节点为例进行说明),各个计算节点可以根据预先对各计算节点执行多方隐私计算而配置相应的执行程序或处理芯片。从计算节点的设备配置来说,所述计算节点可为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。另外,所述计算节点仍可作其他变化,例如:在某些示例中,这多个计算节点中的部分为计算机设备,多个计算节点的部分为基于云架构的服务系统中被使用的实体设备或虚拟设备。在某些示例中,以所述计算节点为基于云架构的服务系统中被使用的实体设备或虚拟设备为例,这四个计算节点既可以是全部属于相同的云服务平台,也可以是分属于不相同的云服务平台。
所述计算节点可包含通信接口、存储器、处理器等。事实上,根据计算节点实际运行输入数据的处理方法的硬件装置,上述各硬件装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信协同完成。
所述通信接口与所述处理器数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述通信接口包括但不限于网卡、移动网络接入模块、通过总线与所述处理器相连的总线接口等。
所述存储器用于存储可执行输入数据的处理方法的至少一个程序。所述存储器可与所述处理器位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的通信接口将计算指令传递给运行所述计算的处理器。所述存储器可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储器还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在所述存储器中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理器可操作地与所述存储器耦接。更具体地,所述处理器可执行在存储器和/或非易失性存储设备中存储的程序以在任务平台中执行操作。如此,所述处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理器所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于所述通信接口实现数据通信,以协同地执行所述计算方法。
隐私加密存储及隐私计算架构可实现的功能包括隐私加密存储和隐私计算。
以下仍以图3中所示的四个计算节点为例进行相关功能的介绍。
隐私加密存储:
客户端将需要保存的输入数据X进行多方隐私加密形成密文并将所述密文发送给服务端。
如图3所示,将输入数据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生成的共享随机数。各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算节点配置有产生所述随机数的随机数发生器。
对于输入数据Y,与输入数据X进行多方隐私加密类似,在此不再赘述。
经多方隐私加密形成的多个分散密文可分散存储于各个存储节点中。
在某些实施方式中,经多方隐私加密形成的多个分散密文可由服务端的计算节点中存储。例如,以经多方隐私加密形成的四个分散密文X1、X2、Xa、以及Xb为例,分散密文X1由服务端的计算节点S1存储,分散密文X2由服务端的计算节点S2存储,分散密文Xa由服务端的计算节点Sa存储,分散密文Xb由服务端的计算节点Sb存储。因此,这些计算节点S1、S2、Sa、Sb可作为存储节点。
在某些实施方式中,经多方隐私加密形成的多个分散密文也可由其他存储器予以存储。例如,仍以经多方隐私加密形成的四个分散密文X1、X2、Xa、以及Xb为例,分散密文X1由存储器C1(未予以图示)保存,分散密文X2由存储器C2(未予以图示)保存,分散密文Xa由存储器Ca(未予以图示)保存,分散密文Xb由存储器Cb(未予以图示)保存。其中,这些存储器C1、C2、Ca、Cb(未予以图示)可作为存储节点。
另外,针对存储节点,这些存储节点可配置于单台计算机设备、计算机集群、或基于云架构的服务系统等。
通过将输入数据经多方隐私加密后形成的多个分散密文分散存储于各个存储节点中,可抵御所有存储节点都被黑客入侵后可能面临的攻击。
另外,在将形成的分散密文存储于各存储节点(例如,计算节点或其他存储器)之前,还可包括对所述多个分散密文进行再加密的步骤。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。
各个存储节点设置或关联有相应的数据库,即,每一个存储节点设置或关联有一个数据库。所述数据库可用于保存相应的存储节点上的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(或输入数据标识ID)及相应的分散密文。如下表一所示。
表一
SN/ID (再加密的)分散密文
001 X1、X2、Xa、Xb
002 Y1、Y2、Ya、Yb
在某些实施例中,各个存储节点所存储的分散密文的记录序号SN(或输入数据标识ID)可以采用连续或是自增的。例如,第一条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(或输入数据标识ID)为“001”。第二条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(或输入数据标识ID)为“002”。第三条输入数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(或输入数据标识ID)为“003”。若后续有第四条输入数据,那么所述第四条输入数据经隐私加密后会形成四个分散密文,而这四个分散密文将分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(或输入数据标识ID)为“004”。
在某些实施例中,各个存储节点所存储的分散密文的记录序号SN(或输入数据标识ID)可以采用其他方式,例如,乱序。例如,某一条输入数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个存储节点中,其中,第一个分散密文在第一个存储节点中的记录序号SN(或输入数据标识ID)可为“001”,第二个分散密文在第二个存储节点中的记录序号SN(或输入数据标识ID)可为“003”,第三个分散密文在第三个存储节点中的记录序号SN(或输入数据标识ID)可为“001”,第四个分散密文在第四个存储节点中的记录序号SN(或输入数据标识ID)可为“003”。当然,上述记录序号SN(或输入数据标识ID)仅为一示例性说明,在实际应用中,分散密文在存储节点中的记录序号SN(或输入数据标识ID)仍可作其他的变化。另外,当有新增的输入数据的分散密文要存储于相应的存储节点时,其记录序号SN(或输入数据标识ID)也并不限于当前最后一个记录序号SN(或输入数据标识ID)的加一(+1)操作。
隐私计算:
四个计算节点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,从而保证了基本隐私计算的安全性。
在实际应用中,若多个分散密文是经再加密的二次分散密文,那么在获得二次分散密文并对其创建索引之前还包括解密的步骤,即,对多个二次分散密文进行解密以获得多个分散密文,后续,即可对获得的多个分散密文创建索引。
需要说明的是,根据隐私计算架构的设计需要,参与计算节点的数量不限于上述示例,以及提供计算结果的计算节点数量也不限于上述示例,例如,计算节点可为三个、六个、或八个等。
由上述图3及其相关描述可知,利用多个计算节点,基于多方隐私加密产生的随机数,可对输入数据进行随机分散处理后形成多个分散密文,所有的数据自始至终不以明文显示,确保了数据的安全可靠。
进一步地,当所述输入数据中包含至少一字段的信息时,对输入数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实施方式中,可对所述输入数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实施方式中,可对所述输入数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述输入数据中包含多个字段时,则可对所述输入数据中的至少一字段的字段内容进行多方隐私加密以分别形成与所述至少一字段对应的多个分散密文。
以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密,具体包括:对所述输入数据中的所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述输入数据中包含第一字段和第二字段为例,可对所述输入数据中的第一字段和第二字段中的至少一字段的字段内容进行多方隐私加密。其中,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对输入数据中与至少一字段对应的多个分散密文进行再加密。
如此,以所述输入数据中包含第一字段和第二字段为例,形成的数据库中的记录可如下表二所示。
表二
SN/ID (再加密的)第一字段的分散密文 (再加密的)第二字段的分散密文
001 X1<sub>f1</sub>、X2<sub>f1</sub>、Xa<sub>f1</sub>、Xb<sub>f1</sub> X1<sub>f2</sub>、X2<sub>f2</sub>、Xa<sub>f2</sub>、Xb<sub>f2</sub>
002 Y1<sub>f1</sub>、Y2<sub>f1</sub>、Ya<sub>f1</sub>、Yb<sub>f1</sub> Y1<sub>f2</sub>、Y2<sub>f2</sub>、Ya<sub>f2</sub>、Yb<sub>f2</sub>
以具体的业务应用来说,作为输入数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述输入数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、或电子卡等。在某些示例中,所述密码信息可例如为6位或8位或更多位的数字密码,但并不以此为限,若终端设备能提供相应的技术支持的话,所述密码信息也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息可以与用户的身份信息相关联、或者与用户的手机号关联等,例如,所述密码信息可以为身份证号中的部分或全部、或者手机号、或者是身份证号、手机号以及其他信息中某种组合等。
当然,所述字段并不以此为限,例如,所述字段也可包括生物信息。所述生物信息具有人体所固有的不可复制的唯一性,生物密钥无法复制,失窃或被遗忘。利用生物识别技术进行身份认证,具有安全可靠及准确便捷等优点。包括人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等在内的生物信息都属于人体生物特征,随着光电技术、微计算机技术、图像处理技术与模式识别等技术的快速发展,生物信息应用于业务实现也得到了应用。
例如,在门禁业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行多方隐私加密。
例如,在考勤业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)进行多方隐私加密。
例如,在票务业务场景中,对业务数据进行多方隐私加密包括对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行多方隐私加密。
在某些实施例中,以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。因此,在某些实现方式中,可对所述业务数据中的第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第二字段的字段内容进行多方隐私加密。在某些示例中,可对业务数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密。如此,通过对第一字段的字段内容和第二字段的字段内容中的至少一者进行多方隐私加密,从而实现包括第一字段和第二字段中的敏感数据的保护,也能保护敏感数据之间(例如第一字段的敏感数据和第二字段的敏感数据之间)的关联关系,确保了业务数据的安全可靠。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据可包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息进行多方隐私加密,形成多个银行卡信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的银行卡信息和支付口令都进行多方隐私加密,形成多个银行卡信息的分散密文和多个支付口令的分散密文。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息进行多方隐私加密,形成多个密码信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的生物信息进行多方隐私加密,形成多个生物信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的密码信息和生物信息都进行多方隐私加密,形成多个密码信息的分散密文和多个生物信息的分散密文。
以无卡支付业务中的刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令进行多方隐私加密,形成多个支付口令的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的人脸信息进行多方隐私加密,形成多个人脸信息的分散密文。在某些示例中,对与业务账户关联的业务数据进行多方隐私加密包括对业务数据中的支付口令和人脸信息都进行多方隐私加密,形成多个支付口令的分散密文和多个人脸信息的分散密文。
仍以无卡支付业务为例,对业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。
业务账户为金融机构针对账户申请人开设的一个能实现各种金融交易的账户。金融机构可例如为银行、证券公司、保险公司、资金管理公司等,以银行为例,银行为账户申请人开设的业务账户可例如为至少一银行卡号。
所述密码信息可与业务账户关联。在某些示例中,所述密码信息可例如为支付口令,所述支付口令可例如为6位或8位的数字密码,但并不以此为限,所述支付口令也可更为复杂些,例如,是8至16位字符,至少包含数字、大写字母、小写字母、以及特殊字符中的三种类型,具有更高的安全性。在某些示例中,所述密码信息也可为其他形式,例如手势密码等。
所述生物信息具有人体所固有的不可复制的唯一性,生物密钥无法复制,失窃或被遗忘。利用生物识别技术进行身份认证,具有安全可靠及准确便捷等优点。包括人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等在内的生物信息都属于人体生物特征。
在某些示例中,当用户在某一金融机构申请业务账户时,金融机构即可采集与申请的业务账户关联的密码信息和生物信息。
金融机构端利用设置或关联的密码信息采集装置(例如纯数字键盘、电脑键盘键盘、触控屏幕等)采集密码信息(例如支付口令)
对采集的密码信息进行多方隐私加密的方式可包括:对密码信息X进行多方隐私加密,形成多个密码信息的分散密文。
关于对密码信息进行多方隐私加密的工作原理可参阅图2及其对应的内容描述。
以四个计算节点为例,对采集的密码信息进行多方隐私加密的方式可包括:对密码信息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 X1<sub>f1</sub>、X2<sub>f1</sub>、Xa<sub>f1</sub>、Xb<sub>f1</sub> X1<sub>f2</sub>、X2<sub>f2</sub>、Xa<sub>f2</sub>、Xb<sub>f2</sub> Account 001
002 Y1<sub>f1</sub>、Y2<sub>f1</sub>、Ya<sub>f1</sub>、Yb<sub>f1</sub> Y1<sub>f2</sub>、Y2<sub>f2</sub>、Ya<sub>f2</sub>、Yb<sub>f2</sub> Account 002
由上可知,通过对输入数据进行多方隐私加密,从而实现其中敏感数据的保护,确保敏感数据的安全可靠。
步骤S103,对多个分散密文创建索引。
如前所述,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本申请中,为各个数据建立索引,以提升数据检索速度。
在本实施例中,由数据处理平台对多个分散密文创建索引。如图1所示,由数据处理平台1对获得的多个分散密文创建索引。
在步骤S103中对多个分散密文创建索引的方式可根据步骤S102中获得多个分散密文的方式而有不同的变化。
在某些示例中,所述输入数据可采用数据记录形式。所述获得输入数据的方式包括以数据记录形式逐条接收输入数据,并对获得的输入数据逐条进行多方隐私加密以形成多个分散密文,那么,在步骤S103中,可逐个对与所述输入数据对应的多个分散密文创建索引,实现边获得分散密文边创建索引。当然,并不以此为限,在步骤S103中,也可获得若干个与输入数据对应的多个分散密文后再对这些分散密文进行批处理。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用文件形式。那么,在步骤S103中,可接收所述文件后,对文件中与所述输入数据对应的多个分散密文逐一创建索引。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用数据库形式。那么,在步骤S103中,可接收所述数据库后,对数据库中与所述输入数据对应的多个分散密文逐一创建索引。
在步骤S103中,所述对多个分散密文创建索引的步骤可包括:通过创建哈希表或查找树等对多个分散密文创建索引。
以下针对通过创建哈希表对多个分散密文创建索引进行详细说明。
请参阅图4,显示为通过创建哈希表对多个分散密文创建索引在一实施例中的流程示意图。如图4所示,通过创建哈希表对多个分散密文创建索引的步骤包括:
步骤S301,通过哈希函数对多个分散密文进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述索引是基于输入数据的多个分散密文而创建的哈希表(或称hash表)。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有输入数据的索引标识。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据经多方隐私加密而形成多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文对应的槽值。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
步骤S303,将输入数据的索引标识存入与槽值对应的分组中。
通过步骤S303将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式。具体地,可参阅图5,步骤S303更可包括如下步骤:
步骤S3031,判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则进至步骤S3033;若存在与所述槽值对应的至少一分组,则进至步骤S3035。
步骤S3033,在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
步骤S3035,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
针对步骤S3035,请参阅图6,步骤S3035更可包括如下步骤:
步骤S3034,将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的方式是通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文与至少一分组的某一分组中已存入的索引标识所关联的分散密文相同时,则进至步骤S3036,将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则进至步骤S3038,在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述图4至图6的流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图7所示。
如图7所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,所述槽值通过公式Slot=Hash(多个分散密文)MOD Tablesize得到,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
通过上述索引创建方法可将输入数据进行隐私加密形成多个分散密文并对分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
请参阅图8,显示为通过创建哈希表对多个分散密文创建索引在另一实施例中的流程示意图。在该实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括针对每一个字段均创建与所述字段对应的哈希表。
如图8所示,通过创建哈希表对多个分散密文中的每一个字段创建与所述字段对应的哈希表的步骤包括:
步骤S501,通过哈希函数对所述多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的某一字段而创建的哈希表。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有输入数据的索引标识。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
步骤S503,将输入数据的索引标识存入与槽值对应的分组中。
通过步骤S503将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式。具体地,可参阅图9,步骤S503更可包括如下步骤:
步骤S5031,判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则进至步骤S5033;若存在与所述槽值对应的至少一分组,则进至步骤S5035。
步骤S5033,在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
步骤S5035,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
针对步骤S5035,请参阅图10,步骤S5035更可包括为如下步骤:
步骤S5034,将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。其中,在某些实施方式中,所述将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将多个(所述字段的)分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的(所述字段的)分散密文中所述字段的字段内容进行隐私比较的。
例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则进至步骤S5036,将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则进至步骤S5038,在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
对于所述分散密文中其他的字段的信息,也可按照上述图8至图10的流程创建与其他的字段对应的哈希表。如此,若所述输入数据对应的多个分散密文中包含有至少一字段的信息时,可按照上述图8至图10的流程创建与至少一字段对应的至少一哈希表,其中,每一字段对应的哈希表可如图11所示。
如图11所示,在所述与某一字段对应的哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,所述槽值通过公式Slot=Hash(多个某一字段的分散密文)MOD Tablesize得到,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,以输入数据包含一个字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密以形成多个所述字段的分散密文,因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图8至图10的流程,针对多个所述字段的分散密文创建与所述字段对应的哈希表。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文,与第二字段对应的分散密文也可称为第二字段的分散密文(包含第一字段和第二字段的所述输入数据形成的数据库中的记录可参见表二)。因此,对所述多个分散密文创建索引的方式可包括分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
通过上述索引创建方法可针对分散密文中至少一字段中的每一个字段均创建索引,可针对至少一字段分别进行检索并提高数据的检索速度。
请参阅图12,显示为通过创建哈希表对多个分散密文创建索引在又一实施例中的流程示意图。在该实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。
所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
如图12所示,所述创建与所述至少一字段对应的复合哈希表的步骤包括:
步骤S701,通过哈希函数对多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽标识和槽值,所述槽标识与至少一字段的字段标识对应,每一个分组均对应所述槽值,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
步骤S703,将至少一字段的字段标识存入槽值对应的槽中作为槽的槽标识,并将输入数据的索引标识存入与槽标识及槽值对应的分组中。
其中,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识的步骤可包括:根据步骤S701所获得的复合哈希表的槽值,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,将所述字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。
参阅图13,将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中的步骤更可包括如下步骤:
步骤S7031,判断在复合哈希表中是否存在与槽标识及槽值对应的分组。该步骤中,可先在复合哈希表中定位到与所述槽标识和槽值对应的槽,再判断是否与所述槽的槽值对应的分组。
若不存在与槽标识及槽值对应的分组,则进至步骤S7033;若存在与槽标识及槽值对应的至少一分组,则进至步骤S7035。
步骤S7033,在复合哈希表中新建一与槽标识及槽值对应的分组,将输入数据的索引标识存入新建的分组中。
步骤S7035,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
针对步骤S7035,请参阅图14,步骤S7035更可包括如下步骤:
步骤S7034,将多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。
例如,若在复合哈希表中与槽标识和经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中与所述槽标识对应的所述字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中与所述槽标识对应的所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中与所述槽标识对应的所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则进至步骤S7036,将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则进至步骤S7038,在复合哈希表中新建一与槽标识和槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述图12至图14的流程可完成对输入数据对应的多个分散密文创建复合哈希表,如此,创建的复合哈希表可如图15所示。
如图15所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,所述槽值通过公式Slot=Hash(多个某一字段的分散密文)MOD Tablesize得到,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。例如,所述槽标识为“字段a”和“字段b”。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,所述槽标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,槽标识“0”对应于多个分散密文中第一字段的字段标识,槽标识“1”对应于多个分散密文中第二字段的字段标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图12至图14的流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述第一字段的字段标识或第二字段的字段标识对应的槽标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽标识(银行卡信息)和槽值对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽标识(支付口令)和槽值对应的分组中,
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽标识(密码信息)和槽值对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽标识(生物信息)和槽值对应的分组中。
通过上述索引创建方法可针对分散密文中至少一字段创建索引,可针对至少一字段进行检索并提高数据的检索速度。
请参阅图16,显示为通过创建哈希表对多个分散密文创建索引在再一实施例中的流程示意图。在该实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。
所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
如图16所示,所述创建与所述至少一字段对应的复合哈希表的步骤包括:
步骤S901,通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽值,每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述分组标识即是用于唯一标识对应的所述分组的分组类型,所述分组类型由其存储的输入数据中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
步骤S903,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识,并将输入数据的索引标识存入分组中。
其中,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识的步骤可包括:根据步骤S901所获得的复合哈希表的槽值,将至少一字段的字段标识存入槽值对应的分组中作为分组的分组标识。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,将所述字段的字段标识存入所述槽值对应的分组中作为分组的分组标识。
参阅图17,将输入数据的索引标识存入分组中的步骤更可包括如下步骤:
步骤S9031,判断在复合哈希表中是否存在与槽值及分组标识对应的分组。该步骤中,可先在复合哈希表中定位到与所述槽值对应的槽,再判断是否与所述槽的槽值及分组标识对应的分组。
若不存在与槽值及分组标识对应的分组,则进至步骤S9033;若存在与槽值及分组标识对应的至少一分组,则进至步骤S9035。
步骤S9033,在复合哈希表中新建一与槽值对应且带有分组标识的分组,将输入数据的索引标识存入新建的分组中。
步骤S9035,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
针对步骤S9035,请参阅图18,步骤S9035更可包括如下步骤:
步骤S9034,将多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述多个分散密文中与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将与所述分组标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。
例如,若在复合哈希表中与经哈希运算的槽值和分组标识对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中与所述分组标识对应的所述字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中与所述分组标识对应的所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述分组标识对应的所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述分组标识对应的所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述分组标识对应的所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中与所述分组标识对应的所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则进至步骤S9036,将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则进至步骤S9038,在复合哈希表中新建一与槽值和分组标识对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述图16至图18的流程可完成对输入数据对应的多个分散密文创建复合哈希表,如此,创建的复合哈希表可如图19所示。
如图19所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,所述槽值通过公式Slot=Hash(多个某一字段的分散密文)MOD Tablesize得到,这些槽值可标记为0、1、2、……、N-2、N-1。所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。
每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,例如,所述分组标识为“字段a”和“字段b”,所述分组中存储有存储数据的索引标识。
针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述分组标识即是用于唯一标识对应的所述分组的分组类型,所述分组类型由其存储的输入数据中所述至少一字段的字段类型所定义。在某些实施例中,所述分组标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,分组标识“0”对应于多个分散密文中第一字段的字段标识,分组标识“1”对应于多个分散密文中第二字段的字段标识。
所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述输入数据中某一字段的字段标识对应于所述分组中的分组标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图16至图18的流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽值和分组标识(银行卡信息)对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽值和分组标识(支付口令)对应的分组中,
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽值和分组标识(密码信息)对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽值和分组标识(生物信息)对应的分组中。
通过上述索引创建方法可针对分散密文中至少一字段创建索引,可针对至少一字段进行检索并提高数据的检索速度。
本申请公开一种索引创建装置,用于对输入数据经多方隐私加密形成的多个分散密文创建索引。
请参阅图20,显示为本申请索引创建装置在一实施例中的结构示意图。结合图1,在实际应用中,所述索引创建装置可配置于数据处理平台1中。如图所示,本申请索引创建装置包括:数据获取模块11和索引创建模块13。
数据获取模块11用于获得多个分散密文。
在本实施例中,所述分散密文是对输入数据进行多方隐私加密后形成的。
在某些实施方式中,数据获取模块11从外部或从存储模块中直接获得多个分散密文,所述多个分散密文已预先通过对输入数据进行多方隐私加密而形成。
在某些实施方式中,若数据获取模块11获得的是输入数据,那么,所述索引创建装置还可包括隐私加密模块15(如图21所示)。利用隐私加密模块15,可对所述输入数据进行多方隐私加密以形成多个分散密文。
根据输入数据的数据类型及获取方式,数据获取模块11和隐私加密模块15可执行不同的操作。
在某些示例中,所述输入数据可采用数据记录形式。数据获取模块11获得输入数据的方式包括以数据记录形式逐条接收输入数据,由隐私加密模块15对获得的输入数据逐条进行多方隐私加密。
在某些示例中,所述输入数据可采用文件形式。数据获取模块11获得输入数据的方式包括获得包含输入数据的文件,由隐私加密模块15从文件中提取相应的输入数据并对提取的输入数据进行多方隐私加密。
在某些示例中,所述输入数据可采用数据库形式。数据获取模块11获得输入数据的方式包括获得包含输入数据的数据库,由隐私加密模块15从数据库中提取相应的输入数据并对提取的输入数据进行多方隐私加密。
在某些实施方式中,隐私加密模块15对所述输入数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。针对上述多方隐私加密的方式,具体可参见本申请图3及相关的内容。简言之,以四个计算节点为例,输入数据经四个计算节点隐私加密后可形成四个分散密文X1、X2、Xa、以及Xb,这些分散密文是通过随机分散处理方式获得的,即,基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。例如,分散密文X1为随机选取的大整数,分散密文X2满足X1+X2=X(mod 2^256),分散密文Xa=X1+R,分散密文Xb=X2-R,其中R=random(seed)是基于计算节点S1、S2之间共享的随机数种子seed生成的共享随机数。各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算节点配置有产生所述随机数的随机数发生器。
利用隐私加密模块15对所述输入数据进行多方隐私加密后,可使得所述输入数据形成多个分散密文,所述多个分散密文可分散存储于各个存储节点中,能抵御所有存储节点都被黑客入侵后可能面临的攻击。
另外,在某些实施方式中,在将形成的多个分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可通过例如为加密机的再加密模块(未在图式中显示)对所述多个分散密文进行再加密。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital SignatureAlgorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。
各个存储节点设置或关联有相应的数据库,即,每一个存储节点设置或关联有一个数据库。所述数据库可用于保存相应的存储节点上的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(或输入数据标识ID)及相应的分散密文(如前所述的表一所示)。
回到数据获取模块11,利用数据获取模块11可从存储模块(例如存储节点)获得相应的分散密文。在某些实施方式中,若在存储节点中存储的分散密文是经再加密的二次分散密文,则当利用数据获取模块11从多个存储节点中获得相应的多个二次分散密文后,还需利用再加密模块对多个二次分散密文进行解密以获得多个分散密文。
在某些实施方式中,当所述输入数据中包含至少一字段的信息时,对输入数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实现方式中,可对所述输入数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实现方式中,可对所述输入数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述输入数据中包含多个字段时,则可对所述输入数据中的至少一字段的字段内容进行多方隐私加密以分别形成与所述至少一字段对应的多个分散密文。
以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密,具体包括:对所述输入数据中的所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述输入数据中包含第一字段和第二字段为例,可对所述输入数据中的第一字段和第二字段中的至少一字段的字段内容进行多方隐私加密。其中,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对输入数据中与至少一字段对应的多个分散密文进行再加密。
如此,以所述输入数据中包含第一字段和第二字段为例,形成的数据库中的记录可参见前述中表二所示。
以具体的业务应用来说,作为输入数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述输入数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡等。在某些示例中,所述密码信息可例如为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。
如此,通过对生物信息进行多方隐私加密后可形成多个生物信息的分散密文。
该种对生物信息的处理方式,安全性较高,能满足隐私保护的需求,可以消除金融机构对数据安全和隐私保护的顾虑,而且效率和准确性均可满足应用需求。
在完成业务数据的多方隐私加密之后,还可包括将经多方隐私加密后形成的多个分散密文存储于对应的多个存储节点中。
若所述业务数据包括至少一字段时,则将经多方隐私加密后形成与至少一字段对应的多个分散密文存储于对应的多个存储节点中。
以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,将业务账户、多个第一字段的分散密文、以及第二字段的字段内容予以存储。在某些示例中,业务数据中的第二字段经多方隐私加密而形成多个第二字段的分散密文。因此,将业务账户、第一字段的字段内容、以及多个第二字段的分散密文予以存储。在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,将业务账户、多个第一字段的分散密文和多个第二字段的分散密文予以存储。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,业务数据中的银行卡信息是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息、以及支付口令予以存储。在某些示例中,业务数据中的支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储将业务账户、银行卡信息、以及经多方隐私加密的支付口令予以存储。在某些示例中,业务数据中的银行卡信息和支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息和支付口令予以存储。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的密码信息经多方隐私加密而形成多个密码信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个密码信息的分散密文、以及生物信息予以存储。在某些示例中,业务数据中的生物信息经多方隐私加密而形成多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、密码信息、以及多个生物信息的分散密文予以存储。在某些示例中,业务数据中的密码信息和生物信息经多方隐私加密而形成多个生物信息的分散密文和多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个生物信息的分散密文和多个生物信息的分散密文予以存储。
仍以刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的支付口令经多方隐私加密而形成多个支付口令的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文、以及人脸信息予以存储。在某些示例中,业务数据中的人脸信息经多方隐私加密而形成多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、支付口令、以及多个人脸信息的分散密文予以存储。在某些示例中,业务数据中的支付口令和人脸信息经多方隐私加密而形成多个支付口令的分散密文和多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文和多个人脸信息的分散密文予以存储。
如前所述,在将形成的分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可对所述多个分散密文进行再加密。
若所述业务数据包括至少一字段时,则对经多方隐私加密后形成与至少一字段对应的多个分散密文进行再加密。
仍以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及第二字段的字段内容进行再加密。
在某些示例中,业务数据中的第二字段的字段内容经多方隐私加密而形成多个第二字段的分散密文。因此,所述再加密包括对业务账户、第一字段的字段内容、以及多个第二字段的分散密文进行再加密。
在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及多个第二字段的分散密文进行再加密。
如此,以所述业务数据所形成的数据库中的记录可参见前述中表三所示。
由上可知,通过对输入数据进行多方隐私加密,从而实现其中敏感数据的保护,确保敏感数据的安全可靠。
索引创建模块13用于对所述多个分散密文创建索引。
如前所述,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本申请中,为各个数据建立索引,以提升数据检索速度。
利用索引创建模块13对多个分散密文创建索引的方式可根据数据获取模块11获得多个分散密文的方式而有不同的变化。
在某些示例中,所述输入数据可采用数据记录形式。所述获得输入数据的方式包括以数据记录形式逐条接收输入数据,并对获得的输入数据逐条进行多方隐私加密以形成多个分散密文,那么,利用索引创建模块13对多个分散密文创建索引的方式可包括逐个对与所述输入数据对应的多个分散密文创建索引,实现边获得分散密文边创建索引。当然,并不以此为限,也可以是获得若干个与输入数据对应的多个分散密文后再对这些分散密文进行批处理。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用文件形式。那么,在通过数据获取模块11接收所述文件后,可利用索引创建模块13对文件中与所述输入数据对应的多个分散密文逐一创建索引。
在某些示例中,所述输入数据或与所述输入数据对应的多个分散密文可采用数据库形式。那么,在通过数据获取模块11接收所述数据库后,可利用索引创建模块13对数据库中与所述输入数据对应的多个分散密文逐一创建索引。
利用索引创建模块13对多个分散密文创建索引的方式可包括通过创建哈希表或查找树等对多个分散密文创建索引。
在某些实施例中,利用索引创建模块13对多个分散密文创建哈希表的步骤可包括:
首先,通过哈希函数对多个分散密文进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述索引是基于多个分散密文而创建的哈希表。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据经多方隐私加密而形成多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文对应的槽值。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
接着,将输入数据的索引标识存入与槽值对应的分组中。
通过将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与所述槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中的步骤更可包括如下步骤:
将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的方式是通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文与至少一分组的某一分组中已存入的索引标识所关联的分散密文相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图7所示。如图7所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
通过上述索引创建方法可将输入数据进行隐私加密形成多个分散密文并对分散密文创建索引,在确保输入数据自始至终不以明文显示及安全可靠的情形下,可提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括针对每一个字段均创建与所述字段对应的哈希表。
在本实施例中,利用索引创建模块13通过创建哈希表对多个分散密文中的每一个字段创建与所述字段对应的哈希表的步骤包括:
首先,通过哈希函数对所述多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的某一字段而创建的哈希表。在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
接着,将输入数据的索引标识存入与槽值对应的分组中。
通过将输入数据的索引标识存入与槽值对应的分组中,即可完成对所述输入数据的索引创建工作。
在实际应用中,将输入数据的索引标识存入与槽值对应的分组的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与所述槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中更可包括如下步骤:
将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。其中,在某些实施方式中,所述将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将多个(所述字段的)分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的(所述字段的)分散密文中所述字段的字段内容进行隐私比较的。
例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在哈希表中新建一与槽值对应的分组,将输入数据的索引标识存入新建的分组中。
对于所述分散密文中其他的字段的信息,也可按照上述流程创建与其他的字段对应的哈希表。如此,若所述输入数据对应的多个分散密文中包含有至少一字段的信息时,可按照上述流程创建与至少一字段对应的至少一哈希表,其中,每一字段对应的哈希表可如图11所示。
如图11所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,以输入数据包含一个字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密以形成多个所述字段的分散密文,因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图8至图10的流程,针对多个所述字段的分散密文创建与所述字段对应的哈希表。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文,与第二字段对应的分散密文也可称为第二字段的分散密文(包含第一字段和第二字段的所述输入数据形成的数据库中的记录可参见表二)。因此,对所述多个分散密文创建索引的方式可包括分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
通过上述索引创建方法可针对分散密文中至少一字段中的每一个字段均创建索引,可针对至少一字段分别进行检索并提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
在本实施例中,利用索引创建模块13创建与所述至少一字段对应的复合哈希表的步骤包括:
首先,通过哈希函数对多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽标识和槽值,所述槽标识与至少一字段的字段标识对应,每一个分组均对应所述槽值,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,将至少一字段的字段标识存入槽值对应的槽中作为槽的槽标识,并将输入数据的索引标识存入与槽标识及槽值对应的分组中。
其中,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识的步骤可包括:根据通过哈希函数对多个分散密文中至少一字段的字段内容进行哈希运算所获得的复合哈希表的槽值,将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,将所述字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识。
其中,将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中的步骤更可包括如下步骤:
判断在复合哈希表中是否存在与槽标识及槽值对应的分组。该步骤中,可先在复合哈希表中定位到与所述槽标识和槽值对应的槽,再判断是否与所述槽的槽值对应的分组。
若不存在与槽标识及槽值对应的分组,则在复合哈希表中新建一与槽标识及槽值对应的分组,将输入数据的索引标识存入新建的分组中;若存在与槽标识及槽值对应的至少一分组,则通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中。
其中,通过隐私比较将输入数据的索引标识存入至少一分组中的一分组中或新建的分组中的步骤更可包括如下步骤:
将多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述多个分散密文中与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将与所述槽标识对应的字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。
例如,若在复合哈希表中与槽标识和经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将多个分散密文中与所述槽标识对应的所述字段的字段内容和所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将多个分散密文中与所述槽标识对应的所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将多个分散密文中与所述槽标识对应的所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断多个分散密文中与所述槽标识对应的所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中与所述槽标识对应的所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组的某一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将输入数据的索引标识存入该分组中。
当比较结果为所述多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在复合哈希表中新建一与槽标识和槽值对应的分组,将输入数据的索引标识存入新建的分组中。
按照上述流程可完成对输入数据对应的多个分散密文创建哈希表,如此,创建的哈希表可如图15所示。
如图15所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,所述输入数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,所述槽标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,槽标识“0”对应于多个分散密文中第一字段的字段标识,槽标识“1”对应于多个分散密文中第二字段的字段标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图12至图14的流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述第一字段的字段标识或第二字段的字段标识对应的槽标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽标识(银行卡信息)和槽值对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽标识(支付口令)和槽值对应的分组中,
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽标识(密码信息)和槽值对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽标识(生物信息)和槽值对应的分组中。
通过上述索引创建方法可针对分散密文中至少一字段创建索引,可针对至少一字段进行检索并提高数据的检索速度。
在某些实施例中,所述分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
在本实施例中,利用索引创建模块13创建与所述至少一字段对应的复合哈希表的步骤包括:
首先,通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述分散密文中包含有至少一字段的信息,所述索引是基于多个分散密文中的至少一字段而创建的复合哈希表。在所述复合哈希表中,包括槽(Slot)和分组(Group),其中,每一个槽具有槽值,每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有输入数据的索引标识。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述分组标识即是用于唯一标识对应的所述分组的分组类型,所述分组类型由其存储的输入数据中所述至少一字段的字段类型所定义。
在获得与输入数据对应的多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出输入数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与输入数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对输入数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文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),其中,所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述输入数据中某一字段的字段标识对应于所述分组中的分组标识。
在某些实施例中,以所述输入数据中包含一字段为例,可对所述输入数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个所述字段的分散密文创建与所述字段对应的复合哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,作为输入数据的业务数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。其中,对业务数据进行多方隐私加密包括对业务数据中的所述字段的字段内容进行多方隐私加密形成多个所述字段的分散密文。因此,可按照上述图16至图18的流程,针对多个所述字段的分散密文创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
在某些实施例中,以输入数据包含第一字段和第二字段为例,若是对所述输入数据中的第一字段的字段内容和第二字段的字段内容都进行多方隐私加密,即,对所述输入数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文(也可称为第一字段的分散密文),对所述输入数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文(也可称为第二字段的分散密文)。因此,对所述多个分散密文创建索引的方式可包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为输入数据的业务数据可包括银行卡信息和支付口令。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表,其中,与银行卡信息对应的业务数据的索引标识是存入与槽值和分组标识(银行卡信息)对应的分组中,与支付口令对应的业务数据的索引标识是存入与槽值和分组标识(支付口令)对应的分组中,
例如,在无卡支付业务中,作为输入数据的业务数据可包括密码信息和生物信息。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文创建和多个生物信息的分散密文创建复合哈希表,其中,与密码信息对应的业务数据的索引标识是存入与槽值和分组标识(密码信息)对应的分组中,与生物信息对应的业务数据的索引标识是存入与槽值和分组标识(生物信息)对应的分组中。
通过上述索引创建方法可针对分散密文中至少一字段创建索引,可针对至少一字段进行检索并提高数据的检索速度。
本申请公开一种索引创建系统,用于对输入数据经多方隐私加密形成的多个分散密文创建索引。
请参阅图22,显示为本申请索引创建系统在一实施例中的结构示意图。如图所示,本申请索引创建系统3包括:多个存储节点31和索引创建装置32。
多个存储节点31用于分散存储多个分散密文,所述多个分散密文是对输入数据进行多方隐私加密后形成的。
在某些实施方式中,这些存储节点31可配置于单台计算机设备、计算机集群、或基于云架构的服务系统等。
索引创建装置32用于对多个存储节点31中存储的多个分散密文创建索引。
关于索引创建装置32,可参见前述图20、图21及相关的文字描述,在此不再赘述。
本申请公开一种计算机设备,用于对输入数据经多方隐私加密形成的多个分散密文创建索引。
请参阅图23,显示为本申请计算机设备在一实施例中的结构示意图。如图所示,所述计算机设备5包括:通信接口51、存储器52、以及处理器53。
通信接口51与处理器53数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述通信接口包括但不限于网卡、移动网络接入模块、通过总线与所述处理器相连的总线接口等。
存储器52用于存储可执行业务数据的处理方法的至少一个程序。存储器52可与处理器53位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的通信接口将计算指令传递给运行所述计算的处理器。存储器52可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器52还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。存储器52还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在所述存储器中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
处理器53可操作地与存储器52耦接。更具体地,处理器53可执行在存储器和/或非易失性存储设备中存储的程序以在任务平台中执行操作。如此,处理器53可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,处理器53所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于所述通信接口实现数据通信,以协同地执行所述索引创建方法。
本申请还公开一种计算机可读的存储介质,所述计算机可读的存储介质存储至少一种程序,所述至少一种程序在被调用时参与执行索引创建方法。所述索引创建方法可参阅图2至图19的相关描述,在此不再赘述。另外需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请的部分或全部可借助软件并结合必需的通用硬件平台来实现。基于这样的理解,所述存储介质存储有至少一个程序,所述程序在被调用时执行前述的任一所述的方法。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本申请的实施例来执行操作。例如执行机器人的定位方法中的各步骤等。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。其中,所述存储介质可位于服务器也可位于第三方服务器中,例如位于阿里云服务系统中。本申请可用于众多通用或专用的计算系统环境或配置中。例如:大型计算机、包括以上任何系统或设备的分布式计算环境等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
由上可知,本申请公开的索引创建方法、索引创建装置、索引创建系统、计算机设备、以及计算机可读的存储介质,通过对输入数据经多方隐私加密后形成的多个分散密文创建索引,不仅可确保数据的安全可靠,更可通过创建索引来大幅提升数据查询及验证的速度,满足快速查询场景的应用。
本申请公开一种数据验证方法,在数据验证时则是以将待验证数据进行多方隐私加密形成的多个分散密文通过创建的索引进行数据验证。在某些实施方式中,所述数据验证方法可应用于一数据处理平台中,利用数据处理平台可对待验证数据进行数据验证。
请参阅图24,显示为申请数据验证方法所应用的数据处理平台在一实施例中的架构示意图。
图24所示的数据处理平台是用于对接收的待验证数据进行数据验证。需要说明的是,根据图24所示的硬件系统而执行的各过程仅为举例,在不同应用场景下,其可单独执行或与基于实际设计需要而与其他执行过程配合执行。
所述数据处理平台可为包含通信接口、存储器、处理器等的电子设备,所述电子设备可为单台计算机设备、计算机集群、或基于云架构的服务系统等。其中,所述单台计算机设备可以是自主配置的可执行本申请各方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述计算机集群可以是一组相互独立的、通过高速网络互联的计算机设备,它们构成了一个群组并以单一系统的模式加以管理。所述云架构的服务系统包括公共云(Public Cloud)服务端与私有云(Private Cloud)服务端,其中,所述公共或私有云服务端包括Software-as-a-Service(软件即服务,简称SaaS)、Platform-as-a-Service(平台即服务,简称PaaS)及Infrastructure-as-a-Service(基础设施即服务,简称IaaS)等。所述私有云服务端例如阿里云计算服务平台、亚马逊(Amazon)云计算服务平台、百度云计算平台、腾讯云计算平台等。
根据实际运行上述各方法的硬件装置,构成所述电子设备的各器件可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信协同完成。
所述通信接口与所述处理器数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述通信接口包括但不限于网卡、移动网络接入模块、通过总线与处理器相连的总线接口等。
所述存储器用于存储可执行上述任一种或多种方法的至少一个程序。对应同一电子设备的所述存储器可与处理器位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的通信接口将程序传递给运行所述程序的处理器。所述存储器可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储器还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储器中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理器可操作地与存储器耦接。更具体地,处理器可执行在存储器和/或非易失性存储设备中存储的程序以在数据处理平台中执行操作。如此,处理器可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理器所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于通信接口实现数据通信,以协同地执行各方法的各步骤。
所述数据处理平台用于对待验证数据进行数据验证并输出验证结果。其中,所述待验证数据包括但不限于:来自用户输入的数据,来自至少一用户端发送的数据(例如内部资料),来自至少一数据源的数据(例如数据库),来自数据处理平台自身生成的数据,以及来自互联网等其他可通信计算机设备中的数据(例如网络信息)中的至少一种。在一些示例中,所述待验证数据为业务数据,这些业务数据可能是些敏感数据。其中,所述敏感数据是指以数字化形式存储并且具有不希望被泄露的数据。
请参阅图25,显示为本申请数据验证方法在一实施例中的流程示意图。如图所示,本申请索引创建方法包括如下步骤:
步骤S102,获得待验证的多个分散密文,所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的。
在某些实施方式中,数据处理平台获得是多个分散密文。如图24所示,由数据处理平台2获得多个分散密文。其中,所述分散密文是对待验证数据进行多方隐私加密后形成的,所述待验证数据可为一般数据或是敏感数据。其中,常见的敏感数据包括但不限于:姓名、身份证号码、地址、电话号码、银行账号、邮箱地址、所属城市、邮编、密码类信息(如账户查询密码、取款密码、登录密码等)、生物类信息(如人脸信息、指纹信息、掌纹信息、虹膜信息、心率信息等)、组织机构名称、营业执照号码、银行帐号、交易日期、交易金额等。
在某些示例中,数据处理平台2获得多个分散密文的方式可包括:由各个用户端或数据源将采集到的多个分散密文以定期或实时的方式发送给数据处理平台2。在某些示例中,数据处理平台获得多个分散密文的方式可包括:由数据处理平台2以定期或实时的方式向各个用户端或数据源调用多个分散密文。
在某些实施方式中,数据处理平台获得的是待验证数据,因此,在本申请数据验证方法中,还可包括预先对获得的待验证数据进行多方隐私加密以形成多个分散密文的步骤。一般地,对于待验证数据,以用户端为例,所述用户端会对待发送的待验证数据进行传统的加密处理之后再将经加密处理的待验证数据发送给数据处理平台2,数据处理平台2接收所述待验证数据后,需先对经加密处理的待验证数据进行解密处理以恢复出原始的待验证数据,再对恢复的待验证数据进行多方隐私加密以形成多个分散密文。其中,进行加密处理和解密处理的加解密手段,包括但不限于数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。
在某些示例中,所述待验证数据可采用数据记录形式。所述数据处理平台获得待验证数据的方式包括以数据记录形式逐条接收待验证数据,并对获得的待验证数据逐条进行多方隐私加密。
在某些示例中,所述待验证数据可采用文件形式。所述数据处理平台获得待验证数据的方式包括获得包含待验证数据的文件,从文件中提取相应的待验证数据,并对提取的待验证数据进行多方隐私加密。
在某些示例中,所述待验证数据可采用数据库形式。所述数据处理平台获得待验证数据的方式包括获得包含待验证数据的数据库,从数据库中提取相应的待验证数据,并对提取的待验证数据进行多方隐私加密。
在某些实施方式中,数据处理平台2获得的是多个分散密文,因此,在本申请数据验证方法中,数据处理平台2可直接对获得的多个分散密文创建索引。其中,所述多个分散密文已预先通过对待验证数据进行多方隐私加密而形成。对于多个分散密文,以用户端为例,由用户端对待验证数据进行多方隐私加密后形成与所述待验证数据对应的多个分散密文,并将形成的多个分散密文发送给数据处理平台2。在某些示例中,所述用户端会对待发送的多个分散密文进行传统的加密处理之后再将经加密处理的多个分散密文发送给数据处理平台2,数据处理平台2接收所述多个分散密文后,需先对经加密处理的多个分散密文进行解密处理以恢复出原始的多个分散密文。其中,进行加密处理和解密处理的加解密手段,包括但不限于数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。
在某些实施方式中,所述对待验证数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成多个分散密文。
针对上述多方隐私加密的方式,具体可参见本申请图3及相关的内容。简言之,以四个计算节点为例,待验证数据经四个计算节点隐私加密后可形成四个分散密文X1、X2、Xa、以及Xb,这些分散密文是通过随机分散处理方式获得的,即,基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成多个分散密文。例如,分散密文X1为随机选取的大整数,分散密文X2满足X1+X2=X(mod 2^256),分散密文Xa=X1+R,分散密文Xb=X2-R,其中R=random(seed)是基于计算节点S1、S2之间共享的随机数种子seed生成的共享随机数。各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算节点配置有产生所述随机数的随机数发生器。
通过对所述待验证数据进行多方隐私加密后,可使得所述待验证数据形成多个分散密文,所述多个分散密文可分散存储于各个存储节点中,能抵御所有存储节点都被黑客入侵后可能面临的攻击。
通过将待验证数据经多方隐私加密后形成的多个分散密文分散存储于各个存储节点中,可抵御所有存储节点都被黑客入侵后可能面临的攻击。
另外,在将形成的分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可包括对所述多个分散密文进行再加密的步骤。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital Signature Algorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。
各个存储节点设置或关联有相应的数据库,即,每一个存储节点设置或关联有一个数据库。所述数据库可用于保存相应的存储节点上的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(待验证数据标识ID)及相应的分散密文。如下表四所示。
表四
SN/ID (再加密的)分散密文
001 X1、X2、Xa、Xb
002 Y1、Y2、Ya、Yb
在某些实施例中,各个存储节点所存储的分散密文的记录序号SN(待验证数据标识ID)可以采用连续或是自增的。例如,第一条待验证数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(待验证数据标识ID)为“001”。第二条待验证数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(待验证数据标识ID)为“002”。第三条待验证数据经隐私加密后形成四个分散密文,这四个分散密文分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(待验证数据标识ID)为“003”。若后续有第四条待验证数据,那么所述第四条待验证数据经隐私加密后会形成四个分散密文,而这四个分散密文将分别存储于四个存储节点中并分别作为四个存储节点记录序号SN(待验证数据标识ID)为“004”。
在某些实施例中,各个存储节点所存储的分散密文的记录序号SN(待验证数据标识ID)可以采用其他方式,例如,乱序。例如,某一条待验证数据经隐私加密后形成四个分散密文,这四个分散密文可分别存储于四个存储节点中,其中,第一个分散密文在第一个存储节点中的记录序号SN(待验证数据标识ID)可为“001”,第二个分散密文在第二个存储节点中的记录序号SN(待验证数据标识ID)可为“003”,第三个分散密文在第三个存储节点中的记录序号SN(待验证数据标识ID)可为“001”,第四个分散密文在第四个存储节点中的记录序号SN(待验证数据标识ID)可为“003”。当然,上述记录序号SN(待验证数据标识ID)仅为一示例性说明,在实际应用中,分散密文在存储节点中的记录序号SN(待验证数据标识ID)仍可作其他的变化。另外,当有新增的待验证数据的分散密文要存储于相应的存储节点时,其记录序号SN(待验证数据标识ID)也并不限于当前最后一个记录序号SN(待验证数据标识ID)的加一(+1)操作。
另外,仍以图3为例,四个计算节点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,从而保证了基本隐私计算的安全性。
在实际应用中,若多个分散密文是经再加密的二次分散密文,那么在获得二次分散密文并对其创建索引之前还包括解密的步骤,即,对多个二次分散密文进行解密以获得多个分散密文,后续,即可对获得的多个分散密文创建索引。
需要说明的是,根据隐私计算架构的设计需要,参与计算节点的数量不限于上述示例,以及提供计算结果的计算节点数量也不限于上述示例,例如,计算节点可为三个、六个、或八个等。
由上述图3及其相关描述可知,利用多个计算节点,基于多方隐私加密产生的随机数,可对待验证数据进行随机分散处理后形成多个分散密文,所有的数据自始至终不以明文显示,确保了数据的安全可靠。
进一步地,当所述待验证数据中包含至少一字段的信息时,对待验证数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实施方式中,可对所述待验证数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实施方式中,可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述待验证数据中包含多个字段时,则可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密以分别形成与所述至少一字段对应的多个分散密文。
以所述待验证数据中包含一字段为例,可对所述待验证数据中的所述字段的字段内容进行多方隐私加密,具体包括:对所述待验证数据中的所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述待验证数据中包含第一字段和第二字段为例,可对所述待验证数据中的第一字段和第二字段中的至少一字段的字段内容进行多方隐私加密。其中,若是对所述待验证数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述待验证数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述待验证数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对待验证数据中与至少一字段对应的多个分散密文进行再加密。
如此,以所述待验证数据中包含第一字段和第二字段为例,形成的数据库中的记录可如下表五所示。
表五
SN/ID (再加密的)第一字段的分散密文 (再加密的)第二字段的分散密文
001 X1<sub>f1</sub>、X2<sub>f1</sub>、Xa<sub>f1</sub>、Xb<sub>f1</sub> X1<sub>f2</sub>、X2<sub>f2</sub>、Xa<sub>f2</sub>、Xb<sub>f2</sub>
002 Y1<sub>f1</sub>、Y2<sub>f1</sub>、Ya<sub>f1</sub>、Yb<sub>f1</sub> Y1<sub>f2</sub>、Y2<sub>f2</sub>、Ya<sub>f2</sub>、Yb<sub>f2</sub>
以具体的业务应用来说,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、或电子卡等。在某些示例中,所述密码信息可例如为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。
如此,通过对生物信息进行多方隐私加密后可形成多个生物信息的分散密文。
该种对生物信息的处理方式,安全性较高,能满足隐私保护的需求,可以消除金融机构对数据安全和隐私保护的顾虑,而且效率和准确性均可满足应用需求。
在完成业务数据的多方隐私加密之后,还可包括将经多方隐私加密后形成的多个分散密文存储于对应的多个存储节点中。
若所述业务数据包括至少一字段时,则将经多方隐私加密后形成与至少一字段对应的多个分散密文存储于对应的多个存储节点中。
以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,将业务账户、多个第一字段的分散密文、以及第二字段的字段内容予以存储。在某些示例中,业务数据中的第二字段经多方隐私加密而形成多个第二字段的分散密文。因此,将业务账户、第一字段的字段内容、以及多个第二字段的分散密文予以存储。在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,将业务账户、多个第一字段的分散密文和多个第二字段的分散密文予以存储。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,业务数据中的银行卡信息是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息、以及支付口令予以存储。在某些示例中,业务数据中的支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储将业务账户、银行卡信息、以及经多方隐私加密的支付口令予以存储。在某些示例中,业务数据中的银行卡信息和支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息和支付口令予以存储。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的密码信息经多方隐私加密而形成多个密码信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个密码信息的分散密文、以及生物信息予以存储。在某些示例中,业务数据中的生物信息经多方隐私加密而形成多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、密码信息、以及多个生物信息的分散密文予以存储。在某些示例中,业务数据中的密码信息和生物信息经多方隐私加密而形成多个生物信息的分散密文和多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个生物信息的分散密文和多个生物信息的分散密文予以存储。
仍以刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的支付口令经多方隐私加密而形成多个支付口令的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文、以及人脸信息予以存储。在某些示例中,业务数据中的人脸信息经多方隐私加密而形成多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、支付口令、以及多个人脸信息的分散密文予以存储。在某些示例中,业务数据中的支付口令和人脸信息经多方隐私加密而形成多个支付口令的分散密文和多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文和多个人脸信息的分散密文予以存储。
如前所述,在将形成的分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可对所述多个分散密文进行再加密。
若所述业务数据包括至少一字段时,则对经多方隐私加密后形成与至少一字段对应的多个分散密文进行再加密。
仍以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及第二字段的字段内容进行再加密。
在某些示例中,业务数据中的第二字段的字段内容经多方隐私加密而形成多个第二字段的分散密文。因此,所述再加密包括对业务账户、第一字段的字段内容、以及多个第二字段的分散密文进行再加密。
在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及多个第二字段的分散密文进行再加密。
如此,以所述业务数据所形成的数据库中的记录可如下表六所示。
表六
SN/ID (再加密的)第一字段的分散密文 (再加密的)第二字段的分散密文 (再加密的)业务账户
001 X1<sub>f1</sub>、X2<sub>f1</sub>、Xa<sub>f1</sub>、Xb<sub>f1</sub> X1<sub>f2</sub>、X2<sub>f2</sub>、Xa<sub>f2</sub>、Xb<sub>f2</sub> Account 001
002 Y1<sub>f1</sub>、Y2<sub>f1</sub>、Ya<sub>f1</sub>、Yb<sub>f1</sub> Y1<sub>f2</sub>、Y2<sub>f2</sub>、Ya<sub>f2</sub>、Yb<sub>f2</sub> Account 002
由上可知,通过对待验证数据进行多方隐私加密,从而实现其中敏感数据的保护,确保敏感数据的安全可靠。
步骤S104,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果。
其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。如前所述,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本申请中,为各个数据建立索引,以提升数据检索速度。
所述对存储数据创建索引的步骤可包括:
首先,获得存储数据对应的多个分散密文,所述多个分散密文是对存储数据进行多方隐私加密后形成的。
接着,对所述多个分散密文创建索引。
所述对存储数据创建索引的实现方式可参见前述索引创建方法的描述(即,图3至图18及其相关文字描述),在此不再赘述。
以下针对步骤S104从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的内容进行详细说明。
请参阅图26,显示为从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据在一实施例中的流程示意图。
在本实施例中,所述索引是基于存储数据的多个分散密文而创建的哈希表。创建哈希表的步骤流程可参阅图3至图5,所述创建的哈希表可如图6所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
结合图7和图26,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
步骤S201,通过哈希函数对待验证的多个分散密文进行哈希运算,得到对应哈希表的槽值。
在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这待验证的多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(待验证的多个分散密文)MODTablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于待验证的多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据经多方隐私加密而形成待验证的多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对待验证数据创建哈希表的过程中,将待验证的多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(待验证的多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述待验证的多个分散密文对应的槽值。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
步骤S203,在哈希表中定位到与槽值对应的分组,从分组中获得与待验证数据对应的存储数据。
通过步骤S203,从哈希表的分组中获得与待验证数据对应的存储数据,即可完成对所述待验证数据的验证工作。
在实际应用中,在哈希表中定位到与槽值对应的分组并从分组中获得与待验证数据对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式。具体地,可参阅图27,步骤S203更可包括如下步骤:
步骤S2031,判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则进至步骤S2033;若存在与所述槽值对应的至少一分组,则进至步骤S2035。
步骤S2033,输出没有获得与待验证数据对应的存储数据的验证结果。
步骤S2035,通过隐私比较从对应的分组中获得与待验证数据对应的存储数据。
针对步骤S2035,请参阅图28,步骤S2035更可包括如下步骤:
步骤S2034,将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较,以判断待验证的多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将待验证的多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则进至步骤S2036,从对应的分组中获得与所述待验证数据对应的存储数据。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文不相同时,则进至步骤S2038,输出没有获得与待验证数据对应的存储数据的验证结果。
按照上述图26至图28的流程可完成对待验证数据对应的多个分散密文的数据验证。
请参阅图29,显示为从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据在另一实施例中的流程示意图。
在本实施例中,所述索引是基于存储数据的多个分散密文而创建的哈希表,其中,所述存储数据的分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述存储数据的多个分散密文创建索引的方式包括针对每一个字段均创建与所述字段对应的哈希表。
创建哈希表的步骤流程可参阅图8至图10,所述创建的哈希表可如图11所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
结合图11和图29,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
步骤S401,通过哈希函数对待验证的多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
步骤S403,在哈希表中定位到与槽值对应的分组,从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
通过步骤S403,从哈希表的分组中获得与待验证数据对应的存储数据,即可完成对所述待验证数据针对某一字段的验证工作。
在实际应用中,在哈希表中定位到与槽值对应的分组并从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式。具体地,可参阅图30,步骤S403更可包括如下步骤:
步骤S4031,判断在哈希表中是否存在与槽值对应的分组。若不存在与所述槽值对应的分组,则进至步骤S4033;若存在与所述槽值对应的至少一分组,则进至步骤S4035。
步骤S4033,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果。
步骤S4035,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
针对步骤S4035,请参阅图31,步骤S4035更可包括如下步骤:
步骤S4034,将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将待验证的多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则进至步骤S4036,从对应的分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则进至步骤S4038,输出没有获得与待验证数据中所述字段的字段内容对应的存储数据的验证结果。
按照上述图29至图31的流程可完成对待验证数据对应的多个分散密文中至少一字段的字段内容的数据验证。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
请参阅图32,显示为从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据在又一实施例中的流程示意图。
在本实施例中,所述索引是基于存储数据的多个分散密文而创建的哈希表,其中,所述存储数据的分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述存储数据的多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
创建复合哈希表的步骤流程可参阅图12至图14,所述创建的复合哈希表可如图15所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
在某些实施例中,所述槽标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,槽标识“0”对应于多个分散密文中第一字段的字段标识,槽标识“1”对应于多个分散密文中第二字段的字段标识。
结合图15和图32,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
步骤S601,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
步骤S603,在复合哈希表中定位到与槽标识及槽值对应的分组,从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
通过步骤S603,在复合哈希表中定位到与所述槽标识及所述槽值对应的分组,从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
在实际应用中,在复合哈希表中定位到与所述槽标识及所述槽值对应的分组并从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤根据复合哈希表中的分组结构而有不同的实施方式。具体地,可参阅图33,步骤S603更可包括如下步骤:
步骤S6031,判断在复合哈希表中是否存在与槽标识及槽值对应的分组。若不存在与所述槽标识及所述槽值对应的分组,则进至步骤S6033;若存在与所述槽标识及所述槽值对应的至少一分组,则进至步骤S6035。
步骤S6033,输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
步骤S6035,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
针对步骤S6035,请参阅图34,步骤S6035更可包括如下步骤:
步骤S6034,将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同。
在某些实施方式中,所述将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的。例如,若在复合哈希表中与槽标识和经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较比较具体包括:将待验证的多个分散密文中至少一字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中至少一字段的字段内容与其他分散密文中至少一字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则进至步骤S6036,从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则进至步骤S6038,输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
按照上述图32至图34的流程可完成对待验证数据对应的多个分散密文中至少一字段的字段内容的数据验证。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的哈希表。其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述字段的字段标识对应的槽标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的槽中,除了槽值之外还包括与所述第一字段或所述第二字段的字段标识对应的槽标识。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述银行卡信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述支付口令的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户相关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文和多个生物信息的分散密文创建复合哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述密码信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与槽标识(所述槽标识与所述生物信息的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽标识和所述槽值对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽标识和所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
请参阅图35,显示为从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据在再一实施例中的流程示意图。
在本实施例中,所述索引是基于存储数据的多个分散密文而创建的哈希表,其中,所述存储数据的分散密文中包含有至少一字段的信息,因此,通过创建哈希表对所述存储数据的多个分散密文创建索引的方式包括创建与所述至少一字段对应的复合哈希表。所述复合哈希表亦可称之为共享哈希表或共用哈希表,表示为可由至少一字段共享或共用,也就是说,通过所述复合哈希表可一并检索所述至少一字段的存储信息。
创建复合哈希表的步骤流程可参阅图16至图18,所述创建的复合哈希表可如图19所示,
如图19所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1。所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。
每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有存储数据的索引标识。
针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述分组标识即是用于唯一标识对应的所述分组的分组类型,所述分组类型由其存储的存储数据中所述至少一字段的字段类型所定义。在某些实施例中,所述分组标识可例如为至少一位字符,所述字符可例如为数字、字母、及其他特殊符号的组合。例如,在某些示例中,分组标识“0”对应于多个分散密文中第一字段的字段标识,分组标识“1”对应于多个分散密文中第二字段的字段标识。
所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述存储数据中某一字段的字段标识对应于所述分组中的分组标识。
结合图19和图35,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
步骤S801,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
步骤S803,在复合哈希表中定位到与槽值及分组标识对应的分组,从分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
通过步骤S803,在复合哈希表中定位到与所述槽值及所述分组标识对应的分组,从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
在实际应用中,在复合哈希表中定位到与所述槽值及所述分组标识对应的分组并从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤根据复合哈希表中的分组结构而有不同的实施方式。具体地,可参阅图36,步骤S803更可包括如下步骤:
步骤S8031,判断在所述复合哈希表中是否存在与槽值及分组标识对应的分组。若不存在与所述槽值及所述分组标识对应的分组,则进至步骤S8033;若存在与所述槽值及所述分组标识对应的至少一分组,则进至步骤S8035。
步骤S8033,输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
步骤S8035,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
针对步骤S8035,请参阅图37,步骤S8035更可包括如下步骤:
步骤S8034,将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同。
在某些实施方式中,所述将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的。例如,若在复合哈希表中与经哈希运算的槽值和分组标识对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较比较具体包括:将待验证的多个分散密文中至少一字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中至少一字段的字段内容与其他分散密文中至少一字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则进至步骤S8036,从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则进至步骤S8038,输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
按照上述图35至图37的流程可完成对待验证数据对应的多个分散密文中至少一字段的字段内容的数据验证。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述银行卡信息的字段标识或支付口令的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述银行卡信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述支付口令的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户相关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文和多个生物信息的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述密码信息的字段标识或生物信息的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述密码信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述生物信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
本申请还公开一种数据验证装置,用于对待验证数据进行数据验证。
请参阅图38,显示为本申请数据验证装置在一实施例中的结构示意图,如图所示,本申请数据验证装置包括:数据获取模块21和数据验证模块23。
数据获取模块21用于获得待验证的多个分散密文。
在本实施例中,所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的。
在某些实施方式中,数据获取模块21从外部或从存储模块中直接获得待验证的多个分散密文,所述待验证的多个分散密文已预先通过对待验证数据进行多方隐私加密而形成。
在某些实施方式中,若数据获取模块21获得的是待验证数据,那么,所述数据验证装置还可包括隐私加密模块25(如图39所示)。利用隐私加密模块25,可对所述待验证数据进行多方隐私加密以形成多个分散密文。
根据待验证数据的数据类型及获取方式,数据获取模块21和隐私加密模块25可执行不同的操作。
在某些示例中,所述待验证数据可采用数据记录形式。数据获取模块21获得待验证数据的方式包括以数据记录形式逐条接收待验证数据,由隐私加密模块25对获得的待验证数据逐条进行多方隐私加密。
在某些示例中,所述待验证数据可采用文件形式。数据获取模块21获得待验证数据的方式包括获得包含待验证数据的文件,由隐私加密模块25从文件中提取相应的待验证数据并对提取的待验证数据进行多方隐私加密。
在某些示例中,所述待验证数据可采用数据库形式。数据获取模块21获得待验证数据的方式包括获得包含待验证数据的数据库,由隐私加密模块25从数据库中提取相应的待验证数据并对提取的待验证数据进行多方隐私加密。
在某些实施方式中,隐私加密模块25对所述待验证数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。针对上述多方隐私加密的方式,具体可参见本申请图3及相关的内容。简言之,以四个计算节点为例,待验证数据经四个计算节点隐私加密后可形成四个分散密文X1、X2、Xa、以及Xb,这些分散密文是通过随机分散处理方式获得的,即,基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。例如,分散密文X1为随机选取的大整数,分散密文X2满足X1+X2=X(mod 2^256),分散密文Xa=X1+R,分散密文Xb=X2-R,其中R=random(seed)是基于计算节点S1、S2之间共享的随机数种子seed生成的共享随机数。各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,其中,各计算节点配置有产生所述随机数的随机数发生器。
利用隐私加密模块25对所述待验证数据进行多方隐私加密后,可使得所述待验证数据形成待验证的多个分散密文,所述待验证的多个分散密文可分散存储于各个存储节点中,能抵御所有存储节点都被黑客入侵后可能面临的攻击。
另外,在某些实施方式中,在将形成的多个分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可通过例如为加密机的再加密模块(未在图式中显示)对所述多个分散密文进行再加密。所述再加密的方式可为传统的加密手段,例如数据加密算法(Data Encryption Algorithm,DEA)、RSA算法、数字签名算法(Digital SignatureAlgorithm,DSA)等。对于经再加密的分散密文,也可称其为二次分散密文。
各个存储节点设置或关联有相应的数据库,即,每一个存储节点设置或关联有一个数据库。所述数据库可用于保存相应的存储节点上的分散密文,所述数据库保存有具有数据结构的多个记录,每一条记录包含记录序号SN(待验证数据标识ID)及相应的分散密文(如前所述的表四所示)。
回到数据获取模块21,利用数据获取模块21可从存储模块(例如存储节点)获得相应的分散密文。在某些实施方式中,若在存储节点中存储的分散密文是经再加密的二次分散密文,则当利用数据获取模块21从多个存储节点中获得相应的多个二次分散密文后,还需利用再加密模块对多个二次分散密文进行解密以获得多个分散密文。
在某些实施方式中,当所述待验证数据中包含至少一字段的信息时,对待验证数据进行多方隐私加密以形成多个分散密文具有不同的实现方式。
在某些实现方式中,可对所述待验证数据整体进行多方隐私加密,形成多个分散密文,具体可参见如上描述。
在某些实现方式中,可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密,以形成与所述至少一字段对应的多个分散密文。若所述待验证数据中包含多个字段时,则可对所述待验证数据中的至少一字段的字段内容进行多方隐私加密以分别形成与所述至少一字段对应的多个分散密文。
以所述待验证数据中包含一字段为例,可对所述待验证数据中的所述字段的字段内容进行多方隐私加密,具体包括:对所述待验证数据中的所述字段的字段内容进行多方隐私加密以形成多个与所述字段对应的分散密文,其中,与所述字段对应的分散密文也可称为所述字段的分散密文。
以所述待验证数据中包含第一字段和第二字段为例,可对所述待验证数据中的第一字段和第二字段中的至少一字段的字段内容进行多方隐私加密。其中,若是对所述待验证数据中的第一字段的字段内容和第二字段的字段内容分别进行多方隐私加密时,则具体包括:对所述待验证数据中的第一字段的字段内容进行多方隐私加密以形成多个与第一字段对应的分散密文,其中,与第一字段对应的分散密文也可称为第一字段的分散密文;同样,对所述待验证数据中的第二字段的字段内容进行多方隐私加密以形成多个与第二字段对应的分散密文,其中,与第二字段对应的分散密文也可称为第二字段的分散密文。如此,每一个字段的字段内容都经多方隐私加密后形成了相应字段的分散密文,从而可确保每一个字段的字段内容的安全可靠。
当然,还可包括对待验证数据中与至少一字段对应的多个分散密文进行再加密。
如此,以所述待验证数据中包含第一字段和第二字段为例,形成的数据库中的记录可参见前述中表五所示。
以具体的业务应用来说,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,可对所述业务数据中的一字段的字段内容进行多方隐私加密以形成与所述字段对应的多个分散密文。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、或电子卡等。在某些示例中,所述密码信息可例如为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。
如此,通过对生物信息进行多方隐私加密后可形成多个生物信息的分散密文。
该种对生物信息的处理方式,安全性较高,能满足隐私保护的需求,可以消除金融机构对数据安全和隐私保护的顾虑,而且效率和准确性均可满足应用需求。
在完成业务数据的多方隐私加密之后,还可包括将经多方隐私加密后形成的多个分散密文存储于对应的多个存储节点中。
若所述业务数据包括至少一字段时,则将经多方隐私加密后形成与至少一字段对应的多个分散密文存储于对应的多个存储节点中。
以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,将业务账户、多个第一字段的分散密文、以及第二字段的字段内容予以存储。在某些示例中,业务数据中的第二字段经多方隐私加密而形成多个第二字段的分散密文。因此,将业务账户、第一字段的字段内容、以及多个第二字段的分散密文予以存储。在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,将业务账户、多个第一字段的分散密文和多个第二字段的分散密文予以存储。
例如,在银行卡支付业务中,所述业务数据可与相应的业务账户关联,所述业务数据包括银行卡信息和支付口令。因此,对业务数据进行多方隐私加密包括对银行卡信息和支付口令中的至少一者进行多方隐私加密。在某些示例中,业务数据中的银行卡信息是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息、以及支付口令予以存储。在某些示例中,业务数据中的支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储将业务账户、银行卡信息、以及经多方隐私加密的支付口令予以存储。在某些示例中,业务数据中的银行卡信息和支付口令是经多方隐私加密的。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、经多方隐私加密的银行卡信息和支付口令予以存储。
例如,在无卡支付业务中,所述业务数据可包括密码信息和生物信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对密码信息和生物信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的密码信息经多方隐私加密而形成多个密码信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个密码信息的分散密文、以及生物信息予以存储。在某些示例中,业务数据中的生物信息经多方隐私加密而形成多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、密码信息、以及多个生物信息的分散密文予以存储。在某些示例中,业务数据中的密码信息和生物信息经多方隐私加密而形成多个生物信息的分散密文和多个生物信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个生物信息的分散密文和多个生物信息的分散密文予以存储。
仍以刷脸支付为例作详细说明,所述业务数据包括支付口令和人脸信息。因此,对与业务账户关联的业务数据进行多方隐私加密包括对支付口令和人脸信息中的至少一者进行多方隐私加密。在某些示例中,业务数据中的支付口令经多方隐私加密而形成多个支付口令的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文、以及人脸信息予以存储。在某些示例中,业务数据中的人脸信息经多方隐私加密而形成多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、支付口令、以及多个人脸信息的分散密文予以存储。在某些示例中,业务数据中的支付口令和人脸信息经多方隐私加密而形成多个支付口令的分散密文和多个人脸信息的分散密文。因此,将包含加密业务数据的注册信息予以存储包括将业务账户、多个支付口令的分散密文和多个人脸信息的分散密文予以存储。
如前所述,在将形成的分散密文存储于各存储节点(例如计算节点或其他存储器)之前,还可对所述多个分散密文进行再加密。
若所述业务数据包括至少一字段时,则对经多方隐私加密后形成与至少一字段对应的多个分散密文进行再加密。
仍以所述业务数据包含两个字段来说,在如下描述中,这两个字段可分别称为第一字段和第二字段。在某些示例中,业务数据中的第一字段的字段内容经多方隐私加密而形成多个第一字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及第二字段的字段内容进行再加密。
在某些示例中,业务数据中的第二字段的字段内容经多方隐私加密而形成多个第二字段的分散密文。因此,所述再加密包括对业务账户、第一字段的字段内容、以及多个第二字段的分散密文进行再加密。
在某些示例中,业务数据中的第一字段的字段内容和第二字段的字段内容经多方隐私加密而形成多个第一字段的分散密文和多个第二字段的分散密文。因此,所述再加密包括对业务账户、多个第一字段的分散密文、以及多个第二字段的分散密文进行再加密。
如此,以所述业务数据所形成的数据库中的记录可参见前述中表六所示。
由上可知,通过对待验证数据进行多方隐私加密,从而实现其中敏感数据的保护,确保敏感数据的安全可靠。
数据验证模块23用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果。
其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。如前所述,当存储的数据为海量时,若采用常规的如遍历检索或分组检索等方式,查询速度较慢,无法满足快速查询场景,影响业务实现及降低客户体验。因此,在本申请中,为各个数据建立索引,以提升数据检索速度。
因此,本申请数据验证装置还可包括索引创建模块(未在图式中显示),用于对存储数据创建索引。
利用索引创建模块13对存储数据的多个分散密文创建索引的方式可包括通过创建哈希表(或查找树)对多个分散密文创建索引。所述对存储数据创建哈希表的实现方式可参见前述索引创建方法的描述(即,图4至图19及其相关文字描述),在此不再赘述。
回到数据验证模块23,利用数据验证模块23从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据可包括从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图7所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据的多个分散密文经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用数据验证模块23从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文进行哈希运算,得到对应哈希表的槽值。
在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这待验证的多个分散密文进行哈希运算。具体地,根据公式Slot=Hash(待验证的多个分散密文)MODTablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于待验证的多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据经多方隐私加密而形成待验证的多个分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对待验证数据创建哈希表的过程中,将待验证的多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(待验证的多个分散密文,多个分散的密钥信息)MOD Tablesize后,即可得到与所述待验证的多个分散密文对应的槽值。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据进行多方隐私加密后形成四个分散密文X1、X2、Xa、Xb,因此,对所述四个分散密文创建哈希表包括:Slot=Hash(X1、X2、Xa、Xb)MOD Tablesize,得到对应哈希表的槽值。
接着,在哈希表中定位到与槽值对应的分组,从分组中获得与待验证数据对应的存储数据。
在实际应用中,在哈希表中定位到与槽值对应的分组并从分组中获得与待验证数据对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则输出没有获得与待验证数据对应的存储数据的验证结果;若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与待验证数据对应的存储数据。
其中,通过隐私比较从对应的分组中获得与待验证数据对应的存储数据的步骤更可包括如下步骤:
将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较,以判断待验证的多个分散密文是否与至少一分组中已存入的索引标识所关联的分散密文相同。
在某些实施方式中,所述将待验证的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文进行隐私比较具体包括:将待验证的多个分散密文与第一个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第一个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第二个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第二个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文与第三个分组中已存入的索引标识所关联的分散密文进行隐私比较,以判断待验证的多个分散密文是否与第三个分组中已存入的索引标识所关联的分散密文相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文与其他分散密文进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则从对应的分组中获得与所述待验证数据对应的存储数据。
当比较结果为所述待验证的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文不相同时,则输出没有获得与待验证数据对应的存储数据的验证结果。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图11所示,在所述哈希表中,包括槽(Slot)和分组(Group),所述哈希表的大小Tablesize(即,哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,所述槽可链接有与所述槽的槽值对应的分组,有的槽没有链接与所述槽的槽值对应的分组,有的槽链接有一个与所述槽的槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽值对应的分组。所述分组中存储有输入数据的索引标识(例如为记录序号SN或输入数据标识ID),其中,与所述输入数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用数据验证模块23从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中某一字段的字段内容进行哈希运算,得到对应哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据对应的多个分散密文之后,通过哈希函数Hash()对这多个分散密文中某一字段的字段内容进行哈希运算。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示哈希表的大小(即,哈希表中槽的数量),Slot则表示哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建哈希表包括:Slot=Hash(D1、D2、Da、Db)MOD Tablesize,得到对应哈希表的槽值。
接着,在哈希表中定位到与槽值对应的分组,从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
在实际应用中,在哈希表中定位到与槽值对应的分组并从所述分组中获得与待验证数据中所述字段的字段内容对应的存储数据的步骤根据哈希表中的分组结构而有不同的实施方式:判断在哈希表中是否存在与槽值对应的分组;若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
其中,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤更可包括如下步骤:
将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同。
在某些实施方式中,所述将待验证的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较的。例如,若在哈希表中与经哈希运算的槽值对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较具体包括:将待验证的多个分散密文中所述字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中所述字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较,以判断待验证的多个分散密文中所述字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中所述字段的字段内容与其他分散密文中所述字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则从对应的分组中获得与待验证数据中所述字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则输出没有获得与待验证数据中所述字段的字段内容对应的存储数据的验证结果。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的哈希表。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的哈希表。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应哈希表的槽值;判断在所述哈希表中是否存在与所述槽值对应的分组;若在所述哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式分别针对多个第一字段的分散密文创建与所述第一字段对应的第一哈希表和针对多个第二字段的分散密文创建与所述第二字段对应的第二哈希表。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个银行卡信息的分散密文创建与所述银行卡信息对应的第一哈希表和针对多个支付口令的分散密文创建与所述支付口令对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括分别针对多个密码信息的分散密文创建与所述密码信息对应的第一哈希表和针对多个生物信息的分散密文创建与所述生物信息对应的第二哈希表。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应第一哈希表的槽值;判断在所述第一哈希表中是否存在与所述槽值对应的分组;若在所述第一哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述第一哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应第二哈希表的槽值;判断在所述第二哈希表中是否存在与所述槽值对应的分组;若在所述第二哈希表中不存在与所述槽值对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述第二哈希表中存在与所述槽值对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
在某些实施例中,基于存储数据经多方隐私加密形成的多个分散密文创建的哈希表可如图15所示,在所述复合哈希表中,包括槽(Slot)和分组(Group),所述复合哈希表的大小Tablesize(即,复合哈希表中槽的数量)为N,每一个槽均具有槽值,这些槽值可标记为0、1、2、……、N-2、N-1,另外,每一个槽还具有槽标识,所述槽标识与某一字段的字段标识对应。针对至少一字段的字段标识,一般地,在某些实施例中,每一个字段均对应有一字段标识,所述字段标识用于唯一标识对应的所述字段的字段类型,相应地,所述槽标识即是用于唯一标识对应的所述槽的槽类型,所述槽类型由其所链接的分组中所述至少一字段的字段类型所定义。所述槽可链接有与所述槽的槽标识和槽值对应的分组,有的槽没有链接与所述槽的槽标识和槽值对应的分组,有的槽链接有一个与所述槽的槽标识和槽值对应的分组,有的槽链接有两个或更多个与所述槽的槽标识和槽值对应的分组。所述分组中存储有存储数据的索引标识(例如为记录序号SN或存储数据标识ID),其中,所述存储数据中某一字段的字段标识对应于所述分组链接的所述槽的槽标识,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值。
因此,利用数据验证模块23从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文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),其中,所述存储数据对应的多个分散密文中某一字段的字段内容经哈希运算获得的哈希值是对应于所述分组链接的所述槽的槽值,所述存储数据中某一字段的字段标识对应于所述分组中的分组标识。
因此,利用数据验证模块23从预设的哈希表中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤可包括:
首先,通过哈希函数对待验证的多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值。
在本实施例中,所述待验证数据的分散密文中包含有至少一字段的信息,在获得与待验证数据中多个分散密文之后,通过哈希函数Hash()对所述多个分散密文中至少一字段字段内容进行哈希运算。实际上,当所述分散密文中包含有两个字段或更多个字段的信息时,通过哈希函数Hash()对所述多个分散密文中至少一字段的字段内容进行哈希运算是指通过哈希函数Hash()对所述多个分散密文中两个字段或更多个字段的字段内容分别进行哈希运算以得到与所述两个字段或更多个字段对应的槽值。具体地,根据公式Slot=Hash(多个分散密文中某一字段的字段内容)MOD Tablesize获得复合哈希表的槽值,其中,Hash()为一个映射到整数空间的哈希函数,Tablesize表示复合哈希表的大小(即,复合哈希表中槽的数量),Slot则表示复合哈希表中槽的槽值。由于多方隐私计算的特点,槽值Slot的哈希运算过程完全基于多个分散密文,无需恢复出待验证数据本身。其中,复合哈希表中的Tablesize可根据数据量的增加等而作动态调整,完成例如复合哈希表的扩容等操作。
另外,如前所述,Hash()是一个映射到整数空间的哈希函数,在某些实施方式中,所述哈希函数Hash()还可携带有密钥信息。在某些示例中,与待验证数据的某一字段的字段内容经多方隐私加密而形成多个所述字段的分散密文类似,所述密钥也可经多方隐私加密而形成多个分散的密钥信息,所述多个分散的密钥信息也可分散存储于各个存储节点中。在实际应用中,在所述哈希函数Hash()携带有密钥信息的情形下,在利用哈希函数对多个分散密文创建复合哈希表的过程中,将多个分散密文和多个分散的密钥信息作为哈希算法的输入进行哈希运算Slot=Hash(多个分散密文中某一字段的字段内容,多个分散的密钥信息)MOD Tablesize后,即可得到与所述多个分散密文中某一字段的字段内容对应的槽值。在某些实施方式中,若所述分散密文中包含有两个或更多个字段的信息时,所述哈希函数针对不同的字段可携带不同的密钥信息,例如,以所述分散密文中包含第一字段的信息和第二字段的信息为例,与第一字段对应的哈希函数Hash()携带有第一密钥信息,与第二字段对应的哈希函数Hash()携带有第二密钥信息。
以图3中显示的四个计算节点为例,利用四个计算节点对待验证数据中至少一个字段中某一字段进行多方隐私加密后形成四个所述字段的分散密文D1、D2、Da、Db,因此,对所述四个所述字段的分散密文创建复合哈希表包括:Slot=Hash(D1、D2、Da、Db)MODTablesize,得到对应复合哈希表的槽值。
接着,在复合哈希表中定位到与槽值及分组标识对应的分组,从分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
在实际应用中,在复合哈希表中定位到与所述槽值及所述分组标识对应的分组并从所述分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤根据复合哈希表中的分组结构而有不同的实施方式:判断在所述复合哈希表中是否存在与槽值及分组标识对应的分组;若不存在与槽值及分组标识对应对应的分组,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果;若存在与槽值及分组标识对应对应的至少一分组,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
其中,通过隐私比较从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据的步骤更可包括如下步骤:
将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同。
在某些实施方式中,所述将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的方式是通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较的。例如,若在复合哈希表中与经哈希运算的槽值和分组标识对应的有三个分组,那么,在一种实施方式中,通过依序比较的方式将待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较比较具体包括:将待验证的多个分散密文中至少一字段的字段内容与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第一个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第二个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,将待验证的多个分散密文中至少一字段的字段内容与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较,以判断待验证的多个分散密文中至少一字段的字段内容是否与第三个分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同;若相同,则结束所述隐私比较;若不相同,由于在复合哈希表中没有其他与经哈希运算的槽值对应的分组,则结束所述隐私比较。当然,依序比较的方式并不限于上述的比较顺序,在其他实施方式中,也可以依照第三个分组、第二个分组、第一个分组的比较顺序,或者,在其他实施方式中,甚至也可采用乱序的比较顺序。
另外,在隐私比较的过程中,由于会涉及到利用多个分散密文中至少一字段的字段内容与其他分散密文中至少一字段的字段内容进行多次隐私比较,因此,在某些实施方式中,可在存储节点中设置缓冲区,用于缓存最近访问的分散密文,以提高隐私比较的效率。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与待验证数据中至少一字段的字段内容对应的存储数据。
当比较结果为所述待验证的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
以具体地业务应用为例,作为待验证数据的业务数据包含至少一字段。
在某些实施例中,以所述业务数据包含一个字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对所述业务数据中的所述字段创建与所述字段对应的复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。
例如,在门禁、考勤、公共交通、票务等业务场景中,所述待验证数据中包含一字段。所述字段可包括例如为密码信息、用户的手机号、二维码信息、电子卡、或生物信息等。
例如,在门禁业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在考勤业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、电子卡信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、电子卡信息、或指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述字段的字段标识对应)和所述槽值对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
例如,在票务业务场景中,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对业务数据中的字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)创建与所述字段对应的复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述字段的字段标识对应的分组标识。那么,实施业务数据验证的过程可具体包括:通过哈希函数对所述业务数据的多个分散密文中所述字段的字段内容(例如密码信息、条形码信息、二维码信息、指纹信息等)进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
在某些实施例中,以所述业务数据包含第一字段和第二字段来说,通过创建哈希表对所述业务数据的多个分散密文创建索引的方式包括针对多个第一字段的分散密文和多个第二字段的分散密文创建复合哈希表,其中,在所述复合哈希表的分组中,包括有与所述第一字段的字段标识或第二字段的字段标识对应的分组标识。
例如,在银行卡支付业务中,作为待验证数据的业务数据可包括银行卡信息和支付口令,所述业务数据可与业务账户相关联。若是对所述业务数据中的银行卡信息和支付口令都进行多方隐私加密,即,对所述业务数据中的银行卡信息进行多方隐私加密以形成多个银行卡信息的分散密文,对所述业务数据中的支付口令进行多方隐私加密以形成多个支付口令的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个银行卡信息的分散密文和多个支付口令的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述银行卡信息的字段标识或支付口令的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的银行卡信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述银行卡信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中银行卡信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中银行卡信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的支付口令进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述支付口令的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中支付口令对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中支付口令对应的存储数据。最后,将获得的与所述待验证数据中银行卡信息对应的存储数据和与所述待验证数据中支付口令对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中银行卡信息和支付口令对应的存储数据,即,获得满足银行卡信息和支付口令都匹配的业务账户。
例如,在无卡支付业务中,作为业务数据的业务数据可包括密码信息和生物信息,所述业务数据可与业务账户相关联。若是对所述业务数据中的密码信息和生物信息都进行多方隐私加密,即,对所述业务数据中的密码信息进行多方隐私加密以形成多个密码信息的分散密文,对所述业务数据中的生物信息进行多方隐私加密以形成多个生物信息的分散密文。因此,对所述多个分散密文创建索引的方式可包括针对多个密码信息的分散密文和多个生物信息的分散密文创建复合哈希表。其中,在所述复合哈希表的分组中,包括有与所述密码信息的字段标识或生物信息的字段标识对应的分组标识。
那么,实施业务数据验证的过程可具体包括:一方面,通过哈希函数对所述业务数据的多个分散密文中的密码信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述密码信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中密码信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中密码信息对应的存储数据。另一方面,通过哈希函数对所述业务数据的多个分散密文中的生物信息进行哈希运算,得到对应复合哈希表的槽值;判断在所述复合哈希表中是否存在与所述槽值和所述分组标识(所述分组标识与所述生物信息的字段标识对应)对应的分组;若在所述复合哈希表中不存在与所述槽值和所述分组标识对应的分组,输出没有获得与所述待验证数据中生物信息对应的存储数据的验证结果;若在所述复合哈希表中存在与所述槽值和所述分组标识对应的至少一分组,通过隐私比较从对应的分组中获得与所述待验证数据中生物信息对应的存储数据。最后,将获得的与所述待验证数据中密码信息对应的存储数据和与所述待验证数据中生物信息对应的存储数据进行逻辑运算(例如“与”运算)获得能同时满足与所述待验证数据中密码信息和生物信息对应的存储数据,即,获得满足密码信息和生物信息都匹配的业务账户。
本申请公开一种数据验证系统,用于对待验证数据经多方隐私加密形成的多个分散密文进行数据验证。
请参阅图40,显示为本申请数据验证系统在一实施例中的结构示意图。如图所示,本申请数据验证系统4包括:多个存储节点41和数据验证装置42。
多个存储节点41用于分散存储多个分散密文,所述多个分散密文是对待验证数据进行多方隐私加密后形成的。
在某些实施方式中,这些存储节点41可配置于单台计算机设备、计算机集群、或基于云架构的服务系统等。
数据验证装置42用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果。
关于数据验证装置42,可参见前述图38、图39及相关的文字描述,在此不再赘述。
本申请公开一种计算机设备,用于对待验证数据经多方隐私加密形成的多个分散密文进行数据验证。
请参阅图41,显示为本申请计算机设备在一实施例中的结构示意图。如图所示,所述计算机设备6包括:通信接口61、存储器62、以及处理器63。
通信接口61与处理器63数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述通信接口包括但不限于网卡、移动网络接入模块、通过总线与所述处理器相连的总线接口等。
存储器62用于存储可执行业务数据的处理方法的至少一个程序。存储器62可与所述处理器63位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的通信接口将计算指令传递给运行所述计算的处理器。存储器62可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器62还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。存储器62还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在所述存储器中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
处理器63可操作地与存储器62耦接。更具体地,处理器63可执行在存储器和/或非易失性存储设备中存储的程序以在任务平台中执行操作。如此,处理器63可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理器所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于所述通信接口实现数据通信,以协同地执行所述数据验证方法。
本申请还公开一种计算机可读的存储介质,所述计算机可读的存储介质存储至少一种程序,所述至少一种程序在被调用时参与执行数据验证方法。所述数据验证方法可参阅图25至图37的相关描述,在此不再赘述。另外需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请的部分或全部可借助软件并结合必需的通用硬件平台来实现。基于这样的理解,所述存储介质存储有至少一个程序,所述程序在被调用时执行前述的任一所述的方法。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本申请的实施例来执行操作。例如执行机器人的定位方法中的各步骤等。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。其中,所述存储介质可位于服务器也可位于第三方服务器中,例如位于阿里云服务系统中。本申请可用于众多通用或专用的计算系统环境或配置中。例如:大型计算机、包括以上任何系统或设备的分布式计算环境等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
由上可知,本申请公开的数据验证方法、数据验证装置、数据验证系统、计算机设备、以及计算机可读的存储介质,通过对待验证数据经多方隐私加密后形成的多个分散密文进行数据验证,即,从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果,不仅可确保数据的安全可靠,更可通过创建索引来大幅提升数据查询及验证的速度,满足快速查询场景的应用。
基于上述所述索引创建方法、装置及系统、数据验证方法、装置及系统、计算机设备、以及计算机可读存储介质所描述的各示例所反映的技术框架下,本申请公开以下技术方案:
1.一种索引创建方法,其特征在于,包括以下步骤:
获得多个分散密文,所述分散密文是对输入数据进行多方隐私加密后形成的;以及对所述多个分散密文创建索引。
2.根据实施方式1所述的索引创建方法,其特征在于,所述对输入数据进行多方隐私加密的步骤包括:基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。
3.根据实施方式1所述的索引创建方法,其特征在于,所述对所述多个分散密文创建索引的步骤包括:通过创建哈希表或查找树对所述多个分散密文创建索引。
4.根据实施方式3所述的索引创建方法,其特征在于,所述通过创建哈希表对所述多个分散密文创建索引的步骤包括:
通过哈希函数对所述多个分散密文进行哈希运算,得到对应哈希表的槽值;以及
将所述输入数据的索引标识存入与所述槽值对应的分组中。
5.根据实施方式4所述的索引创建方法,其特征在于,在通过哈希函数对所述多个分散密文进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
6.根据实施方式5所述的索引创建方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
7.根据实施方式4所述的索引创建方法,其特征在于,所述将所述输入数据的索引标识存入与所述槽值对应的分组中的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
8.根据实施方式7所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文进行隐私比较;以及
当比较结果为所述多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则将所述输入数据的索引标识存入所述分组中。
9.根据实施方式7所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文进行隐私比较;以及
当比较结果为所述多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
10.根据实施方式3所述的索引创建方法,其特征在于,当所述分散密文中包含有至少一字段的信息时,则针对每一字段均创建与所述字段对应的哈希表;其中,对于每一字段,所述创建与所述字段对应的哈希表的步骤包括:
通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算,得到对应哈希表的槽值;以及
将所述输入数据的索引标识存入与所述槽值对应的分组中。
11.根据实施方式10所述的索引创建方法,其特征在于,在通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
12.根据实施方式11所述的索引创建方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
13.根据实施方式10所述的索引创建方法,其特征在于,所述将所述输入数据的索引标识存入与所述槽值对应的分组中的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
14.根据实施方式13所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
15.根据实施方式13所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
16.根据实施方式3所述的索引创建方法,其特征在于,当所述分散密文中包含有至少一字段的信息时,则创建与所述至少一字段对应的复合哈希表;其中,所述创建与所述至少一字段对应的复合哈希表的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
将所述至少一字段的字段标识存入所述槽值对应的槽中作为所述槽的槽标识,并将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中。
17.根据实施方式16所述的索引创建方法,其特征在于,在通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
18.根据实施方式17所述的索引创建方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
19.根据实施方式16所述的索引创建方法,其特征在于,还包括对所述至少一字段的字段标识进行加密的步骤,所述加密包括多方隐私加密。
20.根据实施方式16所述的索引创建方法,其特征在于,将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中的步骤包括:
判断在所述复合哈希表中是否存在与所述槽标识及所述槽值对应的分组;
若不存在与所述槽标识及所述槽值对应的分组,则在所述复合哈希表中新建一与所述槽标识及所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽标识及所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
21.根据实施方式20所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中与所述槽标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及当比较结果为所述输入数据的多个分散密文中与所述槽标识对应的所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
22.根据实施方式20所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中与所述槽标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及当比较结果为所述输入数据的多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述复合哈希表中新建一与所述槽标识及所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
23.根据实施方式3所述的索引创建方法,其特征在于,当所述分散密文中包含有至少一字段的信息时,则创建与所述至少一字段对应的复合哈希表;其中,所述创建与所述至少一字段对应的复合哈希表的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
将所述至少一字段的字段标识存入所述槽值对应的分组中作为所述分组的分组标识,并将所述输入数据的索引标识存入所述分组中。
24.根据实施方式23所述的索引创建方法,其特征在于,在通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
25.根据实施方式24所述的索引创建方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
26.根据实施方式23所述的索引创建方法,其特征在于,还包括对所述至少一字段的字段标识进行加密的步骤,所述加密包括多方隐私加密。
27.根据实施方式23所述的索引创建方法,其特征在于,将所述输入数据的索引标识存入所述分组中的步骤包括:
判断在所述复合哈希表中是否存在与所述槽值及所述分组标识对应的分组;
若不存在与所述槽值及所述分组标识对应的分组,则在所述复合哈希表中新建一与所述槽值对应且带有分组标识的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽值及所述分组标识对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入其中一分组中或新建的分组中。
28.根据实施方式27所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中与所述分组标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中与所述分组标识对应的所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
29.根据实施方式27所述的索引创建方法,其特征在于,所述通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中与所述分组标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述复合哈希表中新建一与所述槽值对应且带有分组标识的分组,将所述输入数据的索引标识存入新建的分组中。
30.根据实施方式1所述的索引创建方法,其特征在于,还包括将多个分散密文分散存储于对应的多个存储节点中的步骤。
31.根据实施方式1所述的索引创建方法,其特征在于,还包括对所述多个分散密文进行再加密的步骤。
32.一种索引创建装置,其特征在于,包括:
数据获取模块,用于获得多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;以及
索引创建模块,用于对所述多个分散密文创建索引。
33.根据实施方式32所述的索引创建装置,其特征在于,还包括隐私加密模块,用于对所述输入数据进行多方隐私加密以形成多个分散密文。
34.根据实施方式33所述的索引创建装置,其特征在于,所述隐私加密模块用于对所述输入数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对输入数据进行随机分散处理,形成多个分散密文。
35.根据实施方式32所述的索引创建装置,其特征在于,所述隐私加密模块还用于将多个分散密文分散存储于对应的多个存储节点中。
36.根据实施方式35所述的索引创建装置,其特征在于,还包括再加密模块,用于对所述多个分散密文进行再加密。
37.根据实施方式32所述的索引创建装置,其特征在于,所述索引创建模块用于通过创建哈希表或查找树对所述多个分散密文创建索引。
38.根据实施方式37所述的索引创建装置,其特征在于,所述索引创建模块通过创建哈希表对所述多个分散密文创建索引的步骤包括:
通过哈希函数对所述多个分散密文进行哈希运算,得到对应哈希表的槽值;以及
将所述输入数据的索引标识存入哈希表中与所述槽值对应的分组中。
39.根据实施方式38所述的索引创建装置,其特征在于,所述哈希函数携带有密钥信息。
40.根据实施方式39所述的索引创建装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
41.根据实施方式38所述的索引创建装置,其特征在于,所述索引创建模块将所述输入数据的索引标识存入哈希表中与所述槽值对应的分组中的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
42.根据实施方式41所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文进行隐私比较;以及
当比较结果为所述多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则将所述输入数据的索引标识存入所述分组中。
43.根据实施方式41所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文进行隐私比较;以及
当比较结果为所述多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
44.根据实施方式37所述的索引创建装置,其特征在于,当所述分散密文中包含有至少一字段的信息时,所述索引创建模块针对每一字段均创建与所述字段对应的哈希表;其中,所述索引创建模块针对每一字段创建与所述字段对应的哈希表的步骤包括:
通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算,得到对应哈希表的槽值;以及
将所述输入数据的索引标识存入哈希表中与所述槽值对应的分组中。
45.根据权利要求44所述的索引创建装置,其特征在于,所述哈希函数携带有密钥信息。
46.根据实施方式45所述的索引创建装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
47.根据实施方式44所述的索引创建装置,其特征在于,所述索引创建模块将所述输入数据的索引标识存入哈希表中与所述槽值对应的分组中的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
48.根据实施方式47所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
49.根据实施方式47所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述哈希表中新建一与所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
50.根据实施方式37所述的索引创建装置,其特征在于,当所述分散密文中包含有至少一字段的信息时,所述索引创建模块创建与所述至少一字段对应的复合哈希表;其中,所述索引创建模块创建与所述至少一字段对应的复合哈希表的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
将所述至少一字段的字段标识存入所述复合哈希表中与所述槽值对应的槽中作为所述槽的槽标识,并将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中。
51.根据实施方式50所述的索引创建装置,其特征在于,所述哈希函数携带有密钥信息。
52.根据实施方式51所述的索引创建装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
53.根据实施方式50所述的索引创建装置,其特征在于,所述索引创建模块还用于对所述至少一字段的字段标识进行加密,所述加密包括多方隐私加密。
54.根据实施方式50所述的索引创建装置,其特征在于,所述索引创建模块将所述输入数据的索引标识存入与所述槽标识及所述槽值对应的分组中的步骤包括:
判断在所述复合哈希表中是否存在与所述槽标识及所述槽值对应的分组;
若不存在与所述槽标识及所述槽值对应的分组,则在所述复合哈希表中新建一与所述槽标识及所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中;以及
若存在与所述槽标识及所述槽值对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入所述至少一分组中的一分组中或新建的分组中。
55.根据实施方式54所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中与所述槽标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及当比较结果为所述输入数据的多个分散密文中与所述槽标识对应的所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
56.根据实施方式54所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中与所述槽标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及当比较结果为所述输入数据的多个分散密文中与所述槽标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述复合哈希表中新建一与所述槽标识及所述槽值对应的分组,将所述输入数据的索引标识存入新建的分组中。
57.根据实施方式37所述的索引创建装置,其特征在于,当所述分散密文中包含有至少一字段的信息时,所述索引创建模块创建与所述至少一字段对应的复合哈希表;其中,所述索引创建模块创建与所述至少一字段对应的复合哈希表的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
将所述至少一字段的字段标识存入所述槽值对应的分组中作为所述分组的分组标识,并将所述输入数据的索引标识存入所述分组中。
58.根据实施方式57所述的索引创建装置,其特征在于,所述哈希函数携带有密钥信息。
59.根据实施方式58所述的索引创建装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
60.根据实施方式57所述的索引创建装置,其特征在于,所述索引创建模块还用于对所述至少一字段的字段标识进行加密,所述加密包括多方隐私加密。
61.根据实施方式57所述的索引创建装置,其特征在于,所述索引创建模块将所述输入数据的索引标识存入所述分组中的步骤包括:
判断在所述复合哈希表中是否存在与所述槽值及所述分组标识对应的分组;
若不存在与所述槽值及所述分组标识对应的分组,则在所述复合哈希表中新建一与所述槽值对应且带有分组标识的分组,将所述输入数据的索引标识存入新建的分组中;以及若存在与所述槽值及所述分组标识对应的至少一分组,则通过隐私比较将所述输入数据的索引标识存入其中一分组中或新建的分组中。
62.根据实施方式61所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入其中一分组中的步骤包括:
将所述输入数据的多个分散密文中与所述分组标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中与所述分组标识对应的所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则将所述输入数据的索引标识存入所述分组中。
63.根据实施方式61所述的索引创建装置,其特征在于,所述索引创建模块通过隐私比较将所述输入数据的索引标识存入新建的分组中的步骤包括:
将所述输入数据的多个分散密文中与所述分组标识对应的字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述输入数据的多个分散密文中与所述分组标识对应的所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则在所述复合哈希表中新建一与所述槽值对应且带有分组标识的分组,将所述输入数据的索引标识存入新建的分组中。
64.一种索引创建系统,其特征在于,包括:
多个存储节点,用于分散存储多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;
如实施方式32至63中任一项所述的索引创建装置,用于对所述多个分散密文创建索引。
65.一种计算机设备,其特征在于,包括:
通信接口;
存储器,用于存储至少一种程序;
处理器,与所述存储器和通信接口相连,其中,所述处理器被配置于一可信任的处理环境中,所述处理环境按照所存储的至少一个程序,执行并实现如实施方式1至31中任一项所述的索引创建方法。
66.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被调用时与执行并实现如实施方式1至31中任一项所述的索引创建方法。
67.一种数据验证方法,其特征在于,包括:
获得待验证的多个分散密文,所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;以及
从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
68.根据实施方式67所述的数据验证方法,其特征在于,所述对待验证数据进行多方隐私加密的步骤包括:基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。
69.根据实施方式67所述的数据验证方法,其特征在于,还包括对存储数据创建索引的步骤,包括:
获得存储数据对应的多个分散密文,所述多个分散密文是对存储数据进行多方隐私加密后形成的;以及
对所述多个分散密文创建索引。
70.根据实施方式67所述的数据验证方法,其特征在于,所述索引是基于存储数据的多个分散密文而创建的哈希表;在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
71.根据实施方式70所述的数据验证方法,其特征在于,所述从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述待验证的多个分散密文进行哈希运算,得到对应哈希表的槽值;以及
在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据对应的存储数据。
72.根据实施方式71所述的数据验证方法,其特征在于,在通过哈希函数对所述待验证的多个分散密文进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
73.根据实施方式72所述的数据验证方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
74.根据实施方式71所述的数据验证方法,其特征在于,所述在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据对应的存储数据的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据对应的存储数据的验证结果;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据对应的存储数据。
75.根据实施方式74所述的数据验证方法,其特征在于,所述通过隐私比较从对应的分组中获得与所述待验证数据对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则从对应的分组中获得与所述待验证数据对应的存储数据。
76.根据实施方式75所述的数据验证方法,其特征在于,还包括如下步骤:当比较结果为所述待验证数据的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则输出没有获得与所述待验证数据对应的存储数据的验证结果。
77.根据实施方式67所述的数据验证方法,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的每一字段而创建的哈希表;在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
78.根据实施方式77所述的数据验证方法,其特征在于,所述从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算,得到对应哈希表的槽值;以及
在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
79.根据实施方式78所述的数据验证方法,其特征在于,在通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
80.根据实施方式79所述的数据验证方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
81.根据实施方式78所述的数据验证方法,其特征在于,所述在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
82.根据实施方式81所述的数据验证方法,其特征在于,所述通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
83.根据实施方式82所述的数据验证方法,其特征在于,还包括如下步骤:当比较结果为所述待验证数据的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果。
84.根据实施方式67所述的数据验证方法,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的至少一字段而创建的复合哈希表;在所述复合哈希表中,包括槽和分组,其中,每一个槽具有槽标识和槽值,所述槽标识与至少一字段的字段标识对应,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
85.根据实施方式84所述的数据验证方法,其特征在于,所述从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
在复合哈希表中定位到与所述槽标识及所述槽值对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
86.根据实施方式85所述的数据验证方法,其特征在于,在通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
87.根据实施方式86所述的数据验证方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
88.根据实施方式85所述的数据验证方法,其特征在于,所述在复合哈希表中定位到与所述槽标识及所述槽值对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
判断在所述复合哈希表中是否存在与所述槽标识及所述槽值对应的分组;
若不存在与所述槽标识及所述槽值对应的分组,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽标识及所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
89.根据实施方式88所述的数据验证方法,其特征在于,所述通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中至少一字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
90.根据实施方式89所述的数据验证方法,其特征在于,还包括如下步骤:当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
91.根据实施方式67所述的数据验证方法,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的至少一字段而创建的复合哈希表;在所述复合哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有存储数据的索引标识。
92.根据实施方式91所述的数据验证方法,其特征在于,所述从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应所述复合哈希表的槽值;以及
在所述复合哈希表中定位到与所述槽值及所述分组标识对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
93.根据实施方式92所述的数据验证方法,其特征在于,在通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算的步骤中,所述哈希函数携带有密钥信息。
94.根据实施方式93所述的数据验证方法,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
95.根据实施方式92所述的数据验证方法,其特征在于,所述在复合哈希表中定位到与所述槽值及所述分组标识对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
判断在所述复合哈希表中是否存在与所述槽值及所述分组标识对应的分组;
若不存在与所述槽值及所述分组标识对应的分组,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽值及所述分组标识对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
96.根据实施方式95所述的数据验证方法,其特征在于,所述通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中至少一字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
97.根据实施方式96所述的数据验证方法,其特征在于,还包括如下步骤:当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
98.一种数据验证装置,其特征在于,包括:
数据获取模块,用于获得待验证的多个分散密文;所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;以及
数据验证模块,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
99.根据实施方式98所述的数据验证装置,其特征在于,还包括隐私加密模块,用于对所述输入数据进行多方隐私加密以形成多个分散密文。
100.根据实施方式99所述的数据验证装置,其特征在于,所述隐私加密模块用于对所述输入数据进行多方隐私加密的方式包括:基于多方隐私加密产生的随机数,对待验证数据进行随机分散处理,形成待验证的多个分散密文。
101.根据实施方式98所述的数据验证装置,其特征在于,还包括索引创建模块,用于对存储数据创建索引。
102.根据实施方式101所述的数据验证装置,其特征在于,所述索引创建模块用于对存储数据创建索引的步骤包括:
获得存储数据对应的多个分散密文,所述多个分散密文是对存储数据进行多方隐私加密后形成的;以及
对所述多个分散密文创建索引。
103.根据实施方式98所述的数据验证装置,其特征在于,所述索引是基于存储数据的多个分散密文而创建的哈希表;在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
104.根据实施方式103所述的数据验证装置,其特征在于,所述数据验证模块从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述待验证的多个分散密文进行哈希运算,得到对应哈希表的槽值;以及
在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据对应的存储数据。
105.根据实施方式104所述的数据验证装置,其特征在于,所述哈希函数携带有密钥信息。106.根据实施方式105所述的数据验证装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
107.根据实施方式104所述的数据验证装置,其特征在于,所述数据验证模块在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据对应的存储数据的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据对应的存储数据的验证结果;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据对应的存储数据。
108.根据实施方式107所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文与所述至少一分组中已存入的索引标识所关联的分散密文中进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文与其中一分组中已存入的索引标识所关联的分散密文相同时,则从对应的分组中获得与所述待验证数据对应的存储数据。
109.根据实施方式108所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据对应的存储数据的步骤还包括:当比较结果为所述待验证数据的多个分散密文与至少一分组中已存入的索引标识所关联的分散密文不相同时,则输出没有获得与所述待验证数据对应的存储数据的验证结果。
110.根据实施方式98所述的数据验证装置,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的每一字段而创建的哈希表;在所述哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
111.根据实施方式110所述的数据验证装置,其特征在于,所述数据验证模块从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中所述字段的字段内容进行哈希运算,得到对应哈希表的槽值;以及
在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
112.根据实施方式111所述的数据验证装置,其特征在于,所述哈希函数携带有密钥信息。
113.根据实施方式112所述的数据验证装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
114.根据实施方式111所述的数据验证装置,其特征在于,所述数据验证模块在哈希表中定位到与所述槽值对应的分组,从所述分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤包括:
判断在所述哈希表中是否存在与所述槽值对应的分组;
若不存在与所述槽值对应的分组,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
115.根据实施方式114所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中所述字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中所述字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据。
116.根据实施方式115所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中所述字段的字段内容对应的存储数据的步骤还包括:
当比较结果为所述待验证数据的多个分散密文中所述字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中所述字段的字段内容不相同时,则输出没有获得与所述待验证数据中所述字段的字段内容对应的存储数据的验证结果。
117.根据实施方式98所述的数据验证装置,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的至少一字段而创建的复合哈希表;在所述复合哈希表中,包括槽和分组,其中,每一个槽具有槽标识和槽值,所述槽标识与至少一字段的字段标识对应,每一个分组均对应所述槽值,所述分组中存储有存储数据的索引标识。
118.根据实施方式117所述的数据验证装置,其特征在于,所述数据验证模块从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应复合哈希表的槽值;以及
在复合哈希表中定位到与所述槽标识及所述槽值对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
119.根据实施方式118所述的数据验证装置,其特征在于,所述哈希函数携带有密钥信息。
120.根据实施方式119所述的数据验证装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
121.根据实施方式118所述的数据验证装置,其特征在于,所述数据验证模块在复合哈希表中定位到与所述槽标识及所述槽值对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
判断在所述复合哈希表中是否存在与所述槽标识及所述槽值对应的分组;
若不存在与所述槽标识及所述槽值对应的分组,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽标识及所述槽值对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
122.根据实施方式121所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中至少一字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
123.根据实施方式121所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤还包括:当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
124.根据实施方式98所述的数据验证装置,其特征在于,当所述待验证的分散密文中包含有至少一字段的信息时,所述索引是基于存储数据的多个分散密文中的至少一字段而创建的复合哈希表;在所述复合哈希表中,包括槽和分组,其中,每一个槽具有槽值,每一个分组均对应所述槽值且每一个分组具有与至少一字段的字段标识对应的分组标识,所述分组中存储有存储数据的索引标识。
125.根据实施方式124所述的数据验证装置,其特征在于,所述数据验证模块从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据的步骤包括:
通过哈希函数对所述多个分散密文中至少一字段的字段内容进行哈希运算,得到对应所述复合哈希表的槽值;以及
在所述复合哈希表中定位到与所述槽值及所述分组标识对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
126.根据实施方式125所述的数据验证装置,其特征在于,所述哈希函数携带有密钥信息。
127.根据实施方式126所述的数据验证装置,其特征在于,所述密钥信息是经多方隐私加密而形成多个分散的密钥信息。
128.根据实施方式124所述的数据验证装置,其特征在于,所述数据验证模块在复合哈希表中定位到与所述槽值及所述分组标识对应的分组,从所述分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
判断在所述复合哈希表中是否存在与所述槽值及所述分组标识对应的分组;
若不存在与所述槽值及所述分组标识对应的分组,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果;以及
若存在与所述槽值及所述分组标识对应的至少一分组,则通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
129.根据实施方式128所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤包括:
将所述待验证数据的多个分散密文中至少一字段的字段内容与所述至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容进行隐私比较;以及
当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与其中一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容相同时,则从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据。
130.根据实施方式128所述的数据验证装置,其特征在于,所述数据验证模块通过隐私比较从对应的分组中获得与所述待验证数据中至少一字段的字段内容对应的存储数据的步骤还包括:
当比较结果为所述待验证数据的多个分散密文中至少一字段的字段内容与至少一分组中已存入的索引标识所关联的分散密文中至少一字段的字段内容不相同时,则输出没有获得与所述待验证数据中至少一字段的字段内容对应的存储数据的验证结果。
131.一种数据验证系统,其特征在于,包括:
多个存储节点,用于分散存储多个分散密文;所述分散密文是对存储数据进行多方隐私加密后形成的;
如实施方式98至130中任一项所述的数据验证装置,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述预设的索引是基于存储数据的多个分散密文而创建的。
132.一种计算机设备,其特征在于,包括:
通信接口;
存储器,用于存储至少一种程序;
处理器,与所述存储器和通信接口相连,其中,所述处理器集成有一可信任的处理环境,所述处理环境按照所存储的至少一个程序,执行并实现如实施方式67至97中任一项所述的数据验证方法。
133.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被调用时执行并实现如实施方式67至97中任一项所述的数据验证方法。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

Claims (10)

1.一种索引创建方法,其特征在于,包括以下步骤:
获得多个分散密文,所述分散密文是对输入数据进行多方隐私加密后形成的;以及
对所述多个分散密文创建索引。
2.一种索引创建装置,其特征在于,包括:
数据获取模块,用于获得多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;以及
索引创建模块,用于对所述多个分散密文创建索引。
3.一种索引创建系统,其特征在于,包括:
多个存储节点,用于分散存储多个分散密文;所述分散密文是对输入数据进行多方隐私加密后形成的;
如权利要求1所述的索引创建装置,用于对所述多个分散密文创建索引。
4.一种计算机设备,其特征在于,包括:
通信接口;
存储器,用于存储至少一种程序;
处理器,与所述存储器和通信接口相连,其中,所述处理器被配置于一可信任的处理环境中,所述处理环境按照所存储的至少一个程序,执行并实现如权利要求1所述的索引创建方法。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被调用时与执行并实现如权利要求1所述的索引创建方法。
6.一种数据验证方法,其特征在于,包括以下步骤::
获得待验证的多个分散密文,所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;以及
从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
7.一种数据验证装置,其特征在于,包括:
数据获取模块,用于获得待验证的多个分散密文;所述待验证的多个分散密文是对待验证数据进行多方隐私加密后形成的;以及
数据验证模块,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述索引是基于存储数据经多方隐私加密形成的多个分散密文创建的。
8.一种数据验证系统,其特征在于,包括:
多个存储节点,用于分散存储多个分散密文;所述分散密文是对存储数据进行多方隐私加密后形成的;
如权利要求7所述的数据验证装置,用于从预设的索引中进行检索以获得与所述待验证的多个分散密文对应的存储数据,输出数据验证结果;其中,所述预设的索引是基于存储数据的多个分散密文而创建的。
9.一种计算机设备,其特征在于,包括:
通信接口;
存储器,用于存储至少一种程序;
处理器,与所述存储器和通信接口相连,其中,所述处理器集成有一可信任的处理环境,所述处理环境按照所存储的至少一个程序,执行并实现如权利要求6所述的数据验证方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述指令被调用时执行并实现如权利要求6所述的数据验证方法。
CN201910523129.3A 2019-05-08 2019-06-17 索引创建方法及装置、数据验证方法及装置 Pending CN111914264A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2019103812070 2019-05-08
CN201910381207 2019-05-08

Publications (1)

Publication Number Publication Date
CN111914264A true CN111914264A (zh) 2020-11-10

Family

ID=73241795

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910523115.1A Active CN111915306B (zh) 2019-05-08 2019-06-17 业务数据的验证方法和验证平台
CN201910523129.3A Pending CN111914264A (zh) 2019-05-08 2019-06-17 索引创建方法及装置、数据验证方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201910523115.1A Active CN111915306B (zh) 2019-05-08 2019-06-17 业务数据的验证方法和验证平台

Country Status (1)

Country Link
CN (2) CN111915306B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434125A (zh) * 2020-11-30 2021-03-02 中国人寿保险股份有限公司 索引结构、非结构化数据的检索方法、装置和设备
CN114090638A (zh) * 2022-01-20 2022-02-25 支付宝(杭州)信息技术有限公司 基于隐私保护的联合数据查询方法及装置

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114581095A (zh) * 2022-03-16 2022-06-03 网银在线(北京)科技有限公司 一种支付的方法、收款终端和系统
CN117499569A (zh) * 2022-07-26 2024-02-02 中兴通讯股份有限公司 视频通话方法、电子设备和存储介质
CN114996748B (zh) * 2022-08-04 2022-10-28 广州市森锐科技股份有限公司 一种无纸化应用管理方法、装置、计算机设备及存储介质
CN115329390B (zh) * 2022-10-18 2023-03-24 北京锘崴信息科技有限公司 基于隐私保护计算的金融隐私信息的安全审核方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2639997A1 (en) * 2012-03-15 2013-09-18 ATS Group (IP Holdings) Limited Method and system for secure access of a first computer to a second computer
US8874842B1 (en) * 2014-01-17 2014-10-28 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
CN104429019A (zh) * 2012-07-05 2015-03-18 日本电信电话株式会社 秘密分散系统、数据分散装置、分散数据变换装置、秘密分散方法以及程序
US20150096058A1 (en) * 2013-09-27 2015-04-02 Kabushiki Kaisha Toshiba Information processing apparatus
CN105474575A (zh) * 2013-08-22 2016-04-06 日本电信电话株式会社 多方安全认证系统、认证服务器、中间服务器、多方安全认证方法以及程序
CN106416151A (zh) * 2014-05-30 2017-02-15 高通股份有限公司 用于分组处理的基于多表哈希查找
US20180276417A1 (en) * 2014-11-12 2018-09-27 David Cerezo Sanchez Secure multiparty computation on spreadsheets
US20190116046A1 (en) * 2017-10-16 2019-04-18 Assa Abloy Ab Privacy preserving tag

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7006999B1 (en) * 1999-05-13 2006-02-28 Xerox Corporation Method for enabling privacy and trust in electronic communities
CN102176694A (zh) * 2011-03-14 2011-09-07 张龙其 带加密单元的指纹模块
CN102572314B (zh) * 2011-12-22 2015-01-14 格科微电子(上海)有限公司 图像传感器以及支付认证方法
US20170277774A1 (en) * 2012-10-30 2017-09-28 FHOOSH, Inc. Systems and methods for secure storage of user information in a user profile
KR101408979B1 (ko) * 2012-11-30 2014-06-17 주식회사 하나은행 사용자 단말 및 비밀번호 등록 장치
CA3177680C (en) * 2015-07-21 2023-09-26 10353744 Canada Ltd. Online transaction method, device and system
US20170116602A1 (en) * 2015-10-23 2017-04-27 Mastercard International Incorporated Biometric verification systems and methods for payment transactions
CN107181714B (zh) * 2016-03-09 2021-01-26 创新先进技术有限公司 基于业务码的验证方法和装置、业务码的生成方法和装置
US10740733B2 (en) * 2017-05-25 2020-08-11 Oracle International Corporaton Sharded permissioned distributed ledgers
CN107465730A (zh) * 2017-07-26 2017-12-12 深圳市金立通信设备有限公司 一种业务请求方法及终端
CN107862215B (zh) * 2017-09-29 2020-10-16 创新先进技术有限公司 一种数据存储方法、数据查询方法及装置
CN108667605B (zh) * 2018-04-25 2021-02-23 拉扎斯网络科技(上海)有限公司 一种数据加密、解密方法和装置
CN108446680B (zh) * 2018-05-07 2021-12-21 西安电子科技大学 一种基于边缘计算的人脸认证系统中的隐私保护方法及系统
CN108737442B (zh) * 2018-06-12 2019-05-10 北京多采多宜网络科技有限公司 一种加密校验处理方法
CN109711184B (zh) * 2018-12-28 2020-11-10 国网电子商务有限公司 一种基于属性加密的区块链数据访问控制方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2639997A1 (en) * 2012-03-15 2013-09-18 ATS Group (IP Holdings) Limited Method and system for secure access of a first computer to a second computer
CN104429019A (zh) * 2012-07-05 2015-03-18 日本电信电话株式会社 秘密分散系统、数据分散装置、分散数据变换装置、秘密分散方法以及程序
CN105474575A (zh) * 2013-08-22 2016-04-06 日本电信电话株式会社 多方安全认证系统、认证服务器、中间服务器、多方安全认证方法以及程序
US20150096058A1 (en) * 2013-09-27 2015-04-02 Kabushiki Kaisha Toshiba Information processing apparatus
US8874842B1 (en) * 2014-01-17 2014-10-28 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
CN106416151A (zh) * 2014-05-30 2017-02-15 高通股份有限公司 用于分组处理的基于多表哈希查找
US20180276417A1 (en) * 2014-11-12 2018-09-27 David Cerezo Sanchez Secure multiparty computation on spreadsheets
US20190116046A1 (en) * 2017-10-16 2019-04-18 Assa Abloy Ab Privacy preserving tag

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434125A (zh) * 2020-11-30 2021-03-02 中国人寿保险股份有限公司 索引结构、非结构化数据的检索方法、装置和设备
CN114090638A (zh) * 2022-01-20 2022-02-25 支付宝(杭州)信息技术有限公司 基于隐私保护的联合数据查询方法及装置

Also Published As

Publication number Publication date
CN111915306B (zh) 2023-12-19
CN111915306A (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
CN111914264A (zh) 索引创建方法及装置、数据验证方法及装置
CN105516201B (zh) 一种多服务器环境下轻量级匿名认证与密钥协商方法
CN111931250B (zh) 多方安全计算一体机
Volety et al. Cracking Bitcoin wallets: I want what you have in the wallets
Nagaraju et al. Trusted framework for online banking in public cloud using multi-factor authentication and privacy protection gateway
JP6180177B2 (ja) プライバシーを保護することができる暗号化データの問い合わせ方法及びシステム
US11256900B1 (en) Facial recognition methods and apparatuses
WO2018184407A1 (zh) 一种具有隐私保护的K-means聚类方法及系统
Zhang et al. Cloud storage for electronic health records based on secret sharing with verifiable reconstruction outsourcing
CN110287392B (zh) 一种基于安全划分树的安全空间网络查询方法
CN110737915B (zh) 基于隐式证书的抗量子计算匿名身份识别方法及系统
CN114039785B (zh) 数据加密、解密、处理方法、装置、设备和存储介质
CN109934001A (zh) 一种基于正态云模型的数据加密方法
CN112000978B (zh) 隐私数据的输出方法、数据处理系统及存储介质
CN115913537A (zh) 基于隐私保护的数据求交方法、系统及相关设备
CN108170753A (zh) 一种共有云中Key-Value数据库加密与安全查询的方法
Ye et al. Anonymous biometric access control
CN111917695B (zh) 业务注册数据的注册方法和注册系统
CN113239401A (zh) 一种基于电力物联网的大数据分析系统、方法及计算机存储介质
CN109409111B (zh) 一种面向加密图像的模糊搜索方法
US11133926B2 (en) Attribute-based key management system
CN111046408A (zh) 判断结果处理方法、查询方法、装置、电子设备和系统
CN111475690B (zh) 字符串的匹配方法和装置、数据检测方法、服务器
Sheeja Towards an Optimal Security Using Multifactor Scalable Lightweight Cryptography for IoT
CN114547684A (zh) 一种保护隐私数据的多方联合训练树模型的方法及装置

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