CN115982768A - 一种隐私求交方法及装置 - Google Patents
一种隐私求交方法及装置 Download PDFInfo
- Publication number
- CN115982768A CN115982768A CN202211737648.8A CN202211737648A CN115982768A CN 115982768 A CN115982768 A CN 115982768A CN 202211737648 A CN202211737648 A CN 202211737648A CN 115982768 A CN115982768 A CN 115982768A
- Authority
- CN
- China
- Prior art keywords
- key
- item
- data
- encryption
- encrypted
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
一种隐私求交方法及装置,用于针对两个数据集合进行隐私求交,其中隐私求交方法包括:利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项。基于第一调整项、以及第二数据集合中各个第二数据的第二加密项,对第一数据集合和第二数据集合进行隐私求交。其中,第一调整密钥基于第一加密项对应的第一加密密钥、以及第二加密项对应的第二加密密钥而确定。
Description
技术领域
本说明书实施例属于数据安全领域,尤其涉及一种隐私求交方法及装置。
背景技术
隐私集合求交(Private Set Intersection,PSI)是指在参与双方在***漏任何额外信息的情况下,一方或者两方能够获得交集的结果,但是双方无法获知交集以外对方集合数据的信息。其核心是在保护个人、企业数据安全的前提下,允许数据的流通,产生数据价值。
隐私集合求交(也称隐私求交)在当前对数据安全日益重视的环境下,有着显著的使用场景,如隐私保护的社交网络关系发现、联邦学习样本对齐、联盟白名单计算。在数据由不同管理者持有的条件下,隐私集合求交达到了保护隐私与信息共享的共赢。
发明内容
本发明的目的在于提供一种隐私求交方法及装置,可以安全、高效地实现各方数据的隐私求交。
本说明书第一方面提供一种隐私求交方法,包括:
利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
基于所述第一调整项、以及第二数据集合中各个第二数据的第二加密项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
本说明书第二方面提供一种隐私求交方法,包括:
利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项,以及利用预先获取的第二调整密钥,对第二数据集合中各个第二数据的第二加密项进行调整,得到第二调整项;
基于所述第一调整项和所述第二调整项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥而确定;所述第二调整密钥基于所述第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
本说明书第三方面提供一种隐私求交装置,包括:
调整单元,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
隐私求交单元,用于基于所述第一调整项、以及第二数据集合中各个第二数据的第二加密项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
本说明书第四方面提供一种隐私求交装置,包括:
第一调整单元,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
第二调整单元,用于利用预先获取的第二调整密钥,对第二数据集合中各个第二数据的第二加密项进行调整,得到第二调整项;
隐私求交单元,用于基于所述第一调整项和所述第二调整项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥而确定;所述第二调整密钥基于所述第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一至第四方面中任一方面所述的方法。
本说明书第六方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一至第四方面中任一方面所述的方法。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一实施例中数据加密方法流程图;
图2是本说明书一实施例中隐私求交的方法流程图;
图3是本说明书另一实施例中数据加密方法流程图;
图4是本说明书另一实施例中隐私求交的方法流程图;
图5是本说明书再一实施例中隐私求交方法示意图;
图6是本说明书一个实施例中隐私求交装置结构图;
图7是本说明书另一个实施例中隐私求交装置结构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
传统的隐私求交方法包括如下几种:
1.朴素的hash方法。在该方法中,参与隐私求交的双方使用同一个哈希函数,计算各自的数据的哈希值,再将各自计算的哈希值发送给对方,之后双方就可以得到交集。该方法虽然具有简单、快速的优点,但是存在隐私泄露的问题。比如,如果双方需要求交集的是数据本身,且数据空间比较小。一个恶意的参与方,就可以通过哈希碰撞的方式,在有限的时间内,碰撞出对方发送的哈希值,从而窃取到额外的信息。
2.基于同态加密的方法。在该方法中,将接收方的明文集合进行全同态加密(Fully Homomorphic Encryption,FHE),并将得到的密文提供给发送方。发送方将这些密文使用FHE,进行多项式计算,并将计算结果返回给接收方。接收方使用FHE解密返回结果,且如果解密结果为0,则说明所对应接收方的值存在于集合中,从而获得交集运算的结果。
3.基于椭圆曲线的方法。该方法需要将接收方和发送方的集合元素映射到约定的椭圆曲线上。接收方选定某元素sa后,将其映射为椭圆曲线上的点sa',并发送给发送方,发送方进行在选定某元素sb后进行如下计算:
首先,将元素sb映射为椭圆曲线上的点sb',并计算sb'·sa'。之后,将sb'和sb'·sa'这两部分内容发送给接收方。接收方在接收到该两部分内容后,计算sa'·sb'。并比较计算的sa'·sb'和接收的sb'·sa'是否匹配,如果匹配,则说明该元素为交集中的元素。
需要说明,上述基于椭圆曲线的方法利用了椭圆曲线上难以进行反向点乘的特点,进而可以确保通信过程不会被监听,然而该方法存在计算开销大、通信量大的问题。
4.基于混淆电路(Garbled Circuits,GC)的方法。该方法将两方参与计算的函数编译成对应的布尔电路的形式,随后对电路进行混淆后计算,具有较高的通用性。然后基于GC的方法需要将电路完整地存储在内存中,内存占用较大,且对于每个门电路都需要进行对称加密和不经意传输计算,因此性能较差。
5.基于不经意传输(Oblivious Transfer,OT)的方法。在该方法中,接收方使用两个hash函数将其元素逐一进行两次哈希计算,从而针对一个元素可以得到两个hash值。之后选择其中之一的hash值,将其关联得到bin中。发送方使用同样的方式针对其元素计算两个hash值,并将该两个哈希值均关联到bin中。这里的bin代表着一种函数计算方式。发送方将所有元素的两个hash值进行bin计算后得到的bin计算结果发送给接收方。接收方将自身获得的bin计算结果,和接收的bin计算结果进行比较。如果结果存在,代表接收到的元素是交集中的元素。该方法中,发送方通过将元素的两个hash值映射到bin计算函数,混淆了其元素内容,从而保证了集合数据***露。对于发送方而言,也不会获得接收方的元素。然而该方法,由于需要执行多次hash计算和函数计算,从而存在计算开销大、通信量大的问题。
6.基于可信执行环境的隐私求交方法。该方法通过软硬件方法在中央处理器中构建一个安全的区域,保证其内部加载的程序和数据在机密性和完整性上得到保护。该方法需要使用主流的计算芯片厂商提供的技术,如X86指令集的SGX技术、AMD SEV(SecureEncrypted Virtualization)技术,基于ARM指令集架构的TrustZone技术。其优点在于提供可一个安全执行环境,双方可以将密文放入该环境进行求交,不用担心信息泄露。除了隐私求交外,该方法支持更多的算子和复杂算法,上层业务表达性更强。但因为可信硬件需采用特定的硬件,这会增加成本,且需要置信于硬件生产商。
鉴于上述隐私求交方法均存在缺陷或不足,本申请的发明人提出了一种隐私求交方法,参与隐私求交的双方各自采用不同的加密密钥,加密各自的数据集合中用于进行比较的数据项并存储。这里双方各自加密的数据项(简称加密项)不能直接比较。之后,在需要针对双方数据进行隐私求交时,利用调整密钥调整一方或两方的加密项,并基于调整后的加密项(简称调整项),进行隐私求交。
以下先对在隐私求求交的过程中,仅对一方的加密项进行调整的情况进行说明。
需要说明,在本说明书的以下描述中,将参与隐私求交的双方分别称为第一方和第二方,以及将第一方持有的数据集合称为第一数据集合,将第一数据集合中的数据称为第一数据,将用于进行比较的数据项称为第一数据项。此外,将第二方持有的数据集合称为第二数据集合,将第二数据集合中的数据称为第二数据,将用于进行比较的数据项称为第二数据项。
由于第一方和第二方的数据项的加密过程相似,因此以下以第一方为主,对其加密数据项的过程进行说明。
图1是本说明书一实施例中数据加密方法流程图,如图1所示,该方法可以包括如下步骤:
步骤S102,确定第一加密密钥ska'。
在一种实施例中,可以随机生成上述第一加密密钥ska'。
在另一种实施例中,可以基于第一初始密钥ska,生成第一加密密钥ska'。这里的第一初始密钥ska具有对应的解密密钥。比如,其可以为对称加密密钥。
在一个例子中,可以是对第一初始密钥ska对应的比特串中的部分比特进行修改或反转,得到第一加密密钥ska'。
步骤S104,基于第一加密密钥ska'和约定参数,对第一数据集合中各个第一数据的第一数据项ItemA进行加密。
这里的约定参数包括,第一数值g或椭圆曲线和基点。
在一个例子中,上述第一数据项可以为第一数据的唯一标识,也即每个第一数据具有一个第一数据项,从而第一数据项的数目为多个。由于针对各个第一数据项的加密方式相同,因此以下不针对各个第一数据项进行区分。
在一种实施例中,可以先计算第一数据项ItemA的哈希值与第一加密密钥ska'的乘积,得到:h(ItemA)*ska',其中h()为哈希运算。之后,可以将与第二方约定的第一数值g作为底数,以计算的乘积作为指数,进行幂运算,得到第一加密项ItemA'=gh(ItemA)*ska'。
在另一种实施例中,可以基于与第二方约定的椭圆曲线和基点计算第一加密项。具体地,将上述乘积作为倍数,对约定的椭圆曲线上的基点进行标量乘法运算,得到上述第一加密项ItemA'=h(ItemA)*ska'*G。
由于椭圆曲线具有难以进行反向点乘的特点(后续说明),从而在基于椭圆曲线和基点对第一数据项进行加密时,可以确保第一数据项的安全性。
应理解,与上述第一加密项的确定方法类似地,第二方也可以得到第二数据项ItemB对应的第二加密项:ItemB'=gh(ItemB)*skb',或者,ItemB'=h(ItemB)*skb'*G,其中,skb'为第二方确定的第二加密密钥,g为上述第一数值,G为椭圆曲线上的基点。
以下对椭圆曲线的特点进行描述。
椭圆曲线是一种数学上的曲线,一般可以表示为以下的二元三阶方程:
y2=x3+ax+b (公式1)
其中,a和b均为系数。
可以在椭圆曲线上定义点的加法操作和乘法操作。
在椭圆曲线上取两个点,点P和点Q,连接P、Q两点作一条直线L,这条直线将在椭圆曲线上交于第三个点S,过S点作垂直于X轴的直线,将过椭圆曲线另一点R(一般是S点关于X轴对称的点),R点则被定义为对点P和点Q求和的结果,即P+Q=R。这就是加法操作的过程。
在以上点P和点Q为同一个点的情况下,直线L即为椭圆曲线在P点上的切线,由此得到的点R可记为:R=P+P=2*P。继续进行多次加法操作,就可以得到对点P进行乘法操作的结果m*P=P+P…+P。
为了更方便的将椭圆曲线用于数据加解密,可以将椭圆曲线限定在有限域Fp中。有限域Fp是包含有限个元素的域,元素的个数为素数p。该素数p又称为有限域的阶。有限域内的运算基于对p取模而定义。
有限域Fp上公式(1)表示的椭圆曲线常记为Ep(a,b)。通过选择系数a,b和有限域p,可以唯一地定义一条椭圆曲线,不同的椭圆曲线具有不同的安全特性。常见的椭圆曲线包括P-256,secp256k1,Curve25519等。
在将椭圆曲线限定到有限域后,椭圆曲线包含的点从曲线上连续的无限数目的点,演变为包含有限数目个离散点的点集T。基于椭圆曲线上点的运算规则,该点集T构成一个循环群,即阿贝尔群。该点集中点的数目即为该循环群的阶。
具体而言,有限域中的椭圆曲线所构成的循环群,具有以下特点:
(1)对循环群中任意的点P与点Q进行求和操作或称为加法操作,得到的点R=P+Q仍然在循环群中,其中加法操作的定义与前述常规椭圆曲线一致;
(2)对循环群中任意的点P进行乘法操作,得到的点Q=m*P=P+P+…+P仍然在循环群中,其中m属于上述有限域,乘法操作的定义与常规椭圆曲线一致;
(3)循环群中存在生成元G,或称为椭圆曲线的基点G,还存在一椭圆曲线的无穷远点O,满足n*G=O。该无穷远点O在运算时的作用,类似于常规数学运算中的零。
(4)循环群中的加法操作和乘法操作满足分配律和交换率,即:
x*P+y*P=(x+y)*P;
x*(y*P)=y*(x*P);
椭圆曲线还有一项很重要的特点是,根据(2)中的乘法规则,已知m和P,求得点Q很容易,但是已知点Q和P,反推m的数值几乎不可能实现(即难以进行反向点乘)。结合有限域中椭圆曲线的该特点,使得椭圆曲线在多种加密算法中得到应用。
在本说明书的实施例中,第一方利用椭圆曲线的特点加密第一数据项,以及第二方利用椭圆曲线的特点加密第二数据项,可以保证参与隐私求交的双发方的隐私数据的安全性,节约存储资源,以及提高传输效率。
根据本说明书的实施例,为了能够对第一方和第二方的数据集合进行隐私求交,需要在第一方和第二方之间约定特定的有限域p以及该有限域中的椭圆曲线。也就是,约定参数p(有限域的阶),以及公式(1)中椭圆曲线的参数a和b,得到约定的椭圆曲线Ep(a,b)。此外,还需要双方约定基点G。
需要说明,在第一方通过对各个第一数据的第一数据项ItemA进行加密,得到对应的第一加密项ItemA′后,可以将该第一加密项ItemA′添加到第一数据集合中,从而得到更新的第一数据集合。之后,可以将该更新的第一数据集合存储至可信第三方或者数据库中,以供其它参与方查询。应理解,当该更新的第一数据集合被存储至数据库时,其中的各个第一数据可以通过表格的形式进行记录。
此外,在更新的第一数据集合中,各个第一数据的第一数据项ItemA可以是加密存储,也可以是明文存储,以加密存储为例来说,对应的加密结果可以称为第三加密项,该第三加密项是通过利用第一初始密钥ska,对第一数据项ItemA进行加密得到。应理解,在隐私求交的结果中,可以利用第三加密项替换第一加密项ItemA′,以便于对其解密。
对于上述第一数据集合中的其它数据项,可以对其加密,也可以明文存储,本说明书对此不作限定。
类似地,第二方也可以将其更新的第二数据集合存储至可信第三方或者数据库中,且该更新的第二数据集合中可以包括第四加密项,该第四加密项是通过利用第二初始密钥skb,对第二数据项ItemB进行加密得到。
在第一方和第二方将各自的数据集合存储到可信第三方或者数据库之后,可以由第一方或第二方向可信第三方或者数据库发起隐私求交的请求,并由可信第三方或者数据库针对双方的数据集合进行隐私求交。以下以第二方发起请求为例对隐私求交的过程进行说明。
图2是本说明书一实施例中隐私求交的方法流程图。如图2所示,该方法可以包括如下步骤:
步骤S202,利用预先获取的第一调整密钥ska″,对第一数据集合中各个第一数据的第一加密项ItemA'进行调整,得到第一调整项ItemA″。
在一种实施例中,上述的第一调整密钥ska″是由可信第三方或数据库从密钥托管方获取的。
在另一种实施例中,上述第一调整密钥ska″是由可信第三方或数据库从第二方接收的。
上述第一调整密钥ska″基于第一加密项ItemA'对应的第一加密密钥ska'、以及第二加密项ItemB'对应的第二加密密钥skb'而确定。
在一个例子中,上述第一调整密钥ska″可以通过以下步骤获得:
利用第一方和第二方约定的映射算法,将第一加密密钥ska'映射为第一映射值,以及将第二加密密钥skb'映射为第二映射值。对第二映射值与第一映射值求商,并将得到的商值作为第一调整密钥ska″。在下文中,将第一调整密钥ska″表示为:skb'/ska'。
在一个例子中,上述映射算法包括,施加预设哈希函数,从而将加密密钥映射到第一方和第二方约定的椭圆曲线上。
需要说明,在第一调整密钥ska″从密钥托管方获取时,上述第一加密密钥ska'和第二加密密钥skb'可以是由第一方和第二方主动托管至密钥托管方的。而在第一调整密钥ska″从第二方接收时,上述第一加密密钥ska'可以是由第二方通过获得第一方的授权而得到。
步骤S202中,在第一加密项ItemA'和第二加密项ItemB'为基于相同的椭圆曲线和基点进行加密得到的密文的情况下,也即,在基于步骤S104中的一种实施例确定第一加密项ItemA'时,可以基于约定的椭圆曲线和第一调整密钥ska″对第一加密项ItemA'加密得到第一调整项ItemA″,其中,第一调整项ItemA″中以第一加密项ItemA'为基点,以第一调整密钥ska″作为倍数。具体可以表示为:ItemA″=(skb'/ska')*h(ItemA)*ska'*G=skb'*h(ItemA)*G。
而在第一加密项ItemA'和第二加密项ItemB'为基于相同的底数进行幂运算得到的密文的情况下,也即,在基于步骤S104中的另一种实施例确定第一加密项ItemA'时,可以以第一加密项ItemA'为底数、第一调整密钥ska″为指数进行幂运算,得到目标运算结果,作为第一调整项ItemA″。具体可以表示为:ItemA″=(gh(ItemA)*ska')skb'/ska'=gh(ItemA)*skb'。
步骤S204,基于第一调整项ItemA″、以及第二数据集合中各个第二数据的第二加密项ItemB',对第一数据集合和第二数据集合进行隐私求交。
即通过比对skb'*h(ItemA)*G和h(ItemB)*skb'*G,或者比对gh(ItemA)*skb'和gh (ItemB)*skb',对第一数据集合和第二数据集合进行隐私求交。
需要说明,通过本说明书的上述实施方式,可以实现在***露第一方和第二方各自的明文的数据项的情况下,对双方的数据集合进行隐私求交。
当然,在实际应用中,用于进行隐私求交的请求也可以是由第一方发起,在该请求由第一方发起时,则可以利用第二调整密钥skb″(即ska'/skb'),对第二数据集合中各个第二数据的第二加密项ItemB'进行调整,得到第二调整项ItemB″。并基于第二调整项ItemB″、以及第一数据集合中各个第一数据的第一加密项ItemA',对第一数据集合和第二数据集合进行隐私求交。
其中,第二调整密钥skb″的获得方法以及第一加密项ItemA'的调整方法可以参见步骤S202-步骤S204,本说明书在此不复赘述。
以上是仅对一方的加密项进行调整的情况说明,从上文可以看出,在该情况中,双方的数据集合中各个数据的数据项基于一个密钥加密得到。为了进一步提高数据安全性,可以基于多个密钥对上述数据项进行加密,此时如若进行隐私求交,则需要对双方的加密项进行调整。以下对基于多个加密密钥的加密方法以及相应的隐私求交过程进行说明。
图3是本说明书另一实施例中数据加密方法流程图,如图3所示,该方法可以包括如下步骤:
步骤S302,基于第一加密密钥ska',并利用约定的哈希函数,确定第一派生密钥ska1'。
这里的哈希函数包括但不限于SM3函数、SHA-256函数或者SHA-512函数等等。
以SM3函数为例来说,可以将第一加密密钥ska'填充为长度为512的倍数的消息,然后修改其中的若干比特(比如,从末位开始向前的8个比特,也即一个字节),得到修改后的消息。之后将修改后的消息输入SM3函数,并将输出的256位的摘要值作为上述第一派生密钥ska1'。
类似地,第二方也可以基于第二加密密钥skb',并利用上述哈希函数,确定第二派生密钥skb1'。
步骤S304,基于第一派生密钥ska1'和约定参数,对第一数据项ItemA进行加密,并将得到的第一密文拆分为两个第一原始部分。
这里的约定参数包括,第一数值g或椭圆曲线和基点。
在一种实施例中,可以先计算第一数据项ItemA的哈希值与第一派生密钥ska1'的乘积,得到:h(ItemA)*ska1',其中h()为哈希运算。之后,可以将与第二方约定的第一数值g作为底数,以计算的乘积作为指数,进行幂运算,得到第一密文:gh(ItemA)*ska1'。
在另一种实施例中,可以基于与第二方约定的椭圆曲线和基点计算第一加密项。具体地,将上述乘积作为倍数,对约定的椭圆曲线上的基点进行点乘运算,得到第一密文:h(ItemA)*ska1'*G。
在得到上述第一密文之后,可以将其等分为两个第一原始部分:gh(ItemA)*ska1'前半部分和gh(ItemA)*ska1'后半部分,或者,等分为两个第一原始部分:h(ItemA)*ska1'*G前半部分和h(ItemA)*ska1'*G后半部分。
类似地,第二方也可以得到第二数据项ItemB对应的第二密文:gh(ItemB)*skb1',以及可以将该第二密文等分为两个第二原始部分:gh(ItemB)*skb1'前半部分和gh(ItemB)*skb1'后半部分。或者,得到第二密文:h(ItemB)*skb1'*G,以及等分为两个第二原始部分:h(ItemB)*skb1'*G前半部分和h(ItemB)*skb1'*G后半部分。
步骤S306,分别对两个第一原始部分进行加密,得到两个第一加密部分,用于形成第一加密项ItemA'。
在一种实施例中,可以利用第一中间密钥加密两个第一原始部分中在前的第一原始部分,利用第二中间密钥加密在后的第一原始部分,其中,第一中间密钥基于第一加密密钥ska'的的第三派生密钥ska2'确定,第二中间密钥基于第一加密密钥ska'的第四派生密钥ska3'确定。
其中,上述的第三派生密钥ska2'和第四派生密钥ska3'与第一派生密钥ska1'的确定方法相类似,也即针对第一加密密钥ska'对应的比特串中若干比特进行两次不同的修改,得到第一修改结果和第二修改结果。最后,将该两个修改结果分别输入哈希函数,得到两个不同的摘要值,作为第三派生密钥ska2'和第四派生密钥ska3'。
在一个例子中,第一方可以将第三派生密钥ska2'与第一随机数IV1的拼接结果的哈希值,作为第一中间密钥。从而第一中间密钥可以表示为:H(ska2',IV1)。将在前的第一原始部分与第四派生密钥ska3'的拼接结果的哈希值,与第一中间密钥的拼接结果的哈希值,作为第二中间密钥。从而第二中间密钥可以表示为:H(H(gh(ItemA)*ska1'前半部分,ska3'),H(ska2',IV1)),或者,表示为:H(H(h(ItemA)*ska1'*G前半部分,ska3'),H(ska2',IV1))。
应理解,上述只是一种示例性说明,在实际应用中,也可以直接将第三派生密钥ska2'的哈希值作为第一中间密钥,或者直接将在前的第一原始部分与第四派生密钥ska3'的拼接结果的哈希值作为第二中间密钥等等,本说明书对此不作限定。
在得到上述第一中间密钥和第二中间密钥之后,第一方对第一中间密钥与在前的第一原始部分进行异或运算,得到两个第一加密部分中的一个第一加密部分,以及对第二中间密钥与在后的第一原始部分进行异或运算,得到另一个第一加密部分。之后,通过对两个第一加密部分进行组合或者拼接,就可以得到完整的第一加密项ItemA'。
类似地,第二方也可以通过对第二加密密钥skb'进行两次不同的修改,并将该两次不同的修改结果输入上述约定的哈希函数,得到第五派生密钥skb2'和第六派生密钥skb3'。之后,第二方可以基于第五派生密钥skb2'确定第三中间密钥:H(skb2',IV2),其中,IV2为第二随机数。以及基于第六派生密钥skb3',确定第四中间密钥:H(H(gh(ItemB)*skb1'前半部分,skb3'),H(skb2',IV2))(或者,H(H(h(ItemB)*skb1'*G前半部分,skb3'),H(skb2',IV2)))。最后,第二方对第三中间密钥与在前的第二原始部分进行异或运算,得到两个第二加密部分中的一个第二加密部分,以及对第四中间密钥与在后的第二原始部分进行异或运算,得到另一个第二加密部分。之后,通过对两个第二加密部分进行组合或者拼接,就可以得到完整的第二加密项ItemB'。
同上所述,第一方和第二方可以分别将各自的加密项添加到对应的数据集合中,并将添加加密项后的数据集合存储至可信第三方或者数据库中。之后可以由第一方或第二方向可信第三方或者数据库发起隐私求交的请求,并由可信第三方或者数据库针对双方的数据集合进行隐私求交。以下以第二方发起请求为例对隐私求交的过程进行说明。
图4是本说明书另一实施例中隐私求交的方法流程图。如图4所示,该方法可以包括如下步骤:
步骤S402,利用预先获取的第一调整密钥ska″,对第一数据集合中各个第一数据的第一加密项ItemA'进行调整,得到第一调整项ItemA″,以及利用预先获取的第二调整密钥skb″,对第二数据集合中各个第二数据的第二加密项ItemB'进行调整,得到第二调整项ItemB″。
在一种实施例中,上述的第一调整密钥ska″和第二调整密钥skb″是由可信第三方或数据库从密钥托管方获取的。
在另一种实施例中,上述第一调整密钥ska″和第二调整密钥skb″是由可信第三方或数5据库从第二方接收的。
其中,上述第一调整密钥ska″基于第一加密项ItemA'对应的第一加密密钥ska'而确定,第二调整密钥skb″基于第一加密密钥ska'、以及第二加密项ItemB'对应的第二加密密钥skb'
而确定。
以从第二方接收为例来说,第二方通过以下步骤获得上述第一调整密钥ska″和第二调整0密钥skb″:
第二方基于预先从第一方接收的第一加密密钥ska',并利用约定的哈希函数,确定第一派生密钥ska1'、第三派生密钥ska2'和第四派生密钥ska3'。基于第二加密密钥skb',
并利用上述哈希函数,确定第二派生密钥skb1'、第五派生密钥skb2'和第六派生密钥skb3'。
将第三派生密钥ska2'、第四派生密钥ska3'以及第二派生密钥skb1'与第一派生密钥ska1'5的比值的拼接结果作为第一调整密钥ska″。将第五派生密钥skb2'和第六派生密钥skb3'的拼接结果,作为第二调整密钥skb″。
应理解,这里的ska1'、ska2'、ska3'、skb1'、skb2'以及skb3'的确定方法可以参照上文所述,本说明书在此不复赘述。
此外,上述比值的计算方法可以包括:用第一方和第二方约定的映射算法,将第一加密0密钥ska'映射为第一映射值,以及将第二加密密钥skb'映射为第二映射值。对第二映射值
与第一映射值求商,得到比值:skb'/ska'。
在一个例子中,上述映射算法包括,施加预设哈希函数,从而将加密密钥映射到第一方和第二方约定的椭圆曲线上。
上述步骤S402具体是:
5将第一调整密钥ska″拆分为第三派生密钥ska2'、第四派生密钥ska3'以及比值:skb'
/ska'。基于第三派生密钥ska2'确定第一中间密钥,以及基于第四派生密钥ska3'和第一中间密钥确定第二中间密钥。基于第一中间密钥和第二中间密钥,对应调整基于第一加密项ItemA'拆分得到的两个第一加密部分,得到两个第一调整部分。基于两个第一调整部分的拼接结果以及上述比值,确定第一调整项ItemA″。
0这里的第一中间密钥和第二中间密钥的确定方法可以参照上文所述。具体地,第一中间
密钥可以表示为:H(ska2',IV1)。第二中间密钥可以表示为:H(gh(ItemA)*ska1'前半部分,ska3'),H(ska2',IV1)),或者表示为:H(H(h(ItemA)*ska1'*G前半部分,ska3'),H(ska2',IV1))。
然后可以对H(ska2',IV1)和H(gh(ItemA)*ska1'前半部分,ska3')(或者H(h(ItemA)*ska1'*G前半部分,ska3')),H(ska2',IV1))分别与第一加密项ItemA'的两个第一加密部分异或运算,得到两个第一调整部分。
应理解,这里的两个第一调整部分与上文所述的两个第一原始部分相同。原理是:某个数与同一个数异或两次之后,其结果仍然为该数本身。从而,两个第一调整部分的拼接结果即为上述第一密文:gh(ItemA)*ska1',或者h(ItemA)*ska1'*G。
之后,在第一密文和第二密文为基于相同的椭圆曲线和基点进行加密得到的密文的情况下,也即,在基于步骤S304中的一种实施例确定第一密文时,可以基于约定的椭圆曲线和第一调整密钥ska″对第一密文加密得到第一调整项ItemA″,其中,第一调整项ItemA″中以第一密文为基点,以第一调整密钥ska″作为倍数。
而在第一密文和第二密文为基于相同的底数进行幂运算得到的密文的情况下,也即,在基于步骤S304中的另一种实施例确定第一密文时,可以以第一密文为底数、第一调整密钥ska″为指数进行幂运算,得到目标运算结果,作为第一调整项ItemA″。
上述确定的第一调整项表示为:ItemA″=(skb1'/ska1')*h(ItemA)*ska1'*G=skb1'*h(ItemA)*G。或者表示为:ItemA″=(gh(ItemA)*ska1')skb1'/ska1'=gh(ItemA)*skb1'。
接着,第二调整项ItemB″的调整过程如下:
将第二调整密钥skb″拆分为第五派生密钥skb2'和第六派生密钥skb3'。基于第五派生密钥skb2'确定第三中间密钥,以及基于第六派生密钥skb3'和第三中间密钥确定第四中间密钥。基于第三中间密钥和所述第四中间密钥,对应调整基于第二加密项ItemB'拆分得到的两个第二加密部分,得到两个第二调整部分,用于形成第二调整项ItemB″。
这里的第三中间密钥和第四中间密钥的确定方法可以参照上文所述。具体地,第三中间密钥可以表示为:H(skb2',IV2)。第四中间密钥可以表示为:H(H(gh(ItemB)*skb1'前半部分,skb3'),H(skb2',IV2)),或者表示为:H(H(h(ItemB)*skb1'*G前半部分,skb3'),H(skb2',IV1))。
然后可以对H(skb2',IV2)和H(H(gh(ItemB)*skb1'前半部分,skb3')(或H(h(ItemB)*skb1'*G前半部分,skb3'),),H(skb2',IV2))分别与第二加密项ItemB'的两个第二加密部分异或运算,得到两个第二调整部分。对该两个第二调整部分进行拼接,得到第二调整项ItemB″。
应理解,这里的两个第二调整部分与上文所述的两个第二原始部分相同,从而所得到的第二调整项即为上述第二密文。原理是:某个数与同一个数异或两次之后,其结果仍然为该数本身。从而,第二调整项ItemB″=gh(ItemB)*skb1',或者,ItemB″=h(ItemB)*skb1'*G。
步骤S404,基于第一调整项ItemA″和第二调整项ItemB″,对第一数据集合和第二数据集合进行隐私求交。
即通过skb1'*h(ItemA)*G和h(ItemB)*skb1'*G,或者比对gh(ItemA)*skb1'和gh(ItemB)*skb1',对第一数据集合和第二数据集合进行隐私求交。
需要说明,通过本说明书的上述实施例,可以实现在***露第一方和第二方各自的明文的数据项的情况下,对双方的数据集合进行隐私求交。
当然,在实际应用中,用于进行隐私求交的请求也可以是由第一方发起,在该请求由第一方发起时,可以将第一调整密钥和第二调整密钥的确定方法互换,以及将针对加密项的调整过程也互换,本说明在此不复赘述。
综合以上,本说明书一个或多个实施例提供的隐私求交方法,具有如下优点:
1、相比较于基于可行执行环境的隐私求交方法,本方案不需要新增硬件,从而可以减少使用成本。
2、采用纯软件的方法,其可以与数据库的存储能力相结合,不仅支持隐私求交能力,同时可以利用数据的加密存储,安全性高。
3、双方协商生成调整密钥,并使用调整密钥调整集合内的比较值(即用于进行比较的数据项),而不是简单的执行hash比较,从而避免了采用基于朴素的hash方法时哈希值容易被暴力破解的安全性弊端。
4、相较于其他隐私求交方法,复杂程度较低、计算开销小、内存占用量少。
以上是对基于多个加密密钥对参与隐私求交的双方的数据进行加密以及相应的隐私求交方法的说明。以下对将双方的数据集合存储至数据库,并由数据库来执行隐私求交的过程进行说明。
图5是本说明书再一实施例中隐私求交方法示意图。图5中,数据库中存储有第一数据集合和第二数据集合,其中,第一数据集合中包括第一加密项ItemA'、第三加密项SM4A以及其它数据项;第二数据集合中包括第二加密项ItemB'、第四加密项SM4B以及其它数据项。此外,在上述数据库中还维护有与第一数据集合对应的第一调整密钥ska″,以及与第二数据集合对应的第二调整密钥skb″。
具体地,数据库可以接收第一方或第二方(统称查询方)发送的数据库查询语句,其中该数据库查询语句中的from子句中包括第一数据表(即第一数据集合对应的表格)和第二数据表(即第二数据集合对应的表格),且join字段为上述第一加密项和第二加密项。之后,数据库可以利用第一调整密钥ska″,调整第一数据集合(或第一数据表)中的第一加密项ItemA',得到第一调整项ItemA″,以及可以利用第二调整密钥skb″,调整第二数据集合(第二数据表)中的第二加密项ItemB',得到第二调整项ItemB″。最后,基于第一调整项ItemA″和第二调整项ItemB″,进行关联查询,进而确定两个数据表的关联查询结果,也即确定两个数据集合的隐私求交的结果。
具体地,可以基于hashjoin机制或nestloop机制进行关联查询。
其中,hashjoin机制是指针对行数最小的数据表,建立一张哈希表。比如,针对第一数据表建立哈希表,该哈希表包括第一调整项ItemA″的哈希值。再通过计算另一个数据表中的join字段的哈希值(即第二调整项ItemB″的哈希值),确定两个数据表中的各行是否匹配,如果匹配,则针对两个数据表中的对应行进行拼接。
nestloop机制是指读取前表(from字句中在前的数据表)中的一行,去跟后表逐行匹配,如果匹配,则针对前表和后表中的该行进行拼接。该执行方式类似一个嵌套循环。
需要说明,在上述数据库查询语句的select子句中包括上述第一加密项和第二加密项时,那么在该两者相匹配的情况下,在隐私求交的结果中包括第三加密项SM4A和第四加密项SM4B,以便于查询方对其中之一解密。比如,第一方可以解密SM4A,以及第二方可以解密SM4B。
此外,在上述隐私求交的结果还包括经过加密的其它数据项时,只能由持有该其它数据项的一方对其解密,由此可以确保交集外的信息不被泄露。
总之,上述数据库提供了基于密文的join算子,且支持基于密文对数据表进行关联查询,进而可以获得两个包含密文的数据表交集的内容,也即结合了数据库本身的数据管理能力和隐私保护能力,为隐私集合求交提供了一种新的实现范式。
图6是本说明书一个实施例中隐私求交装置结构图。该装置具体通过执行如图2所示的方法实现隐私求交,其包括:
调整单元602,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项。
隐私求交单元604,用于基于第一调整项、以及第二数据集合中各个第二数据的第二加密项,对第一数据集合和第二数据集合进行隐私求交;
其中,第一调整密钥基于第一加密项对应的第一加密密钥、以及第二加密项对应的第二加密密钥而确定。
图7是本说明书另一个实施例中隐私求交装置结构图。该装置具体通过执行如图4所示的方法实现隐私求交,其包括:
第一调整单元702,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项。
第二调整单元704,用于利用预先获取的第二调整密钥,对第二数据集合中各个第二数据的第二加密项进行调整,得到第二调整项。
隐私求交单元706,用于基于第一调整项和第二调整项,对第一数据集合和第二数据集合进行隐私求交;
其中,第一调整密钥基于第一加密项对应的第一加密密钥而确定,第二调整密钥基于第一加密密钥、以及第二加密项对应的第二加密密钥而确定。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如图1-图5任一所示的方法。
本说明书实施例还提供一种区块链节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如图1-图5任一所示的方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器***。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一
个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流5程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
0这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或
其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接5口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术
来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机0的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机
存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设
备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计5算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、***或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中
包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光0学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (22)
1.一种隐私求交方法,包括:
利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
基于所述第一调整项、以及第二数据集合中各个第二数据的第二加密项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
2.根据权利要求1所述的方法,其中,所述第一调整密钥通过以下步骤获得:
利用约定的映射算法,将所述第一加密密钥映射为第一映射值,以及将所述第二加密密钥映射为第二映射值;
对所述第二映射值与所述第一映射值求商,并将得到的商值作为所述第一调整密钥。
3.根据权利要求2所述的方法,其中,所述第一加密项和所述第二加密项为基于相同的椭圆曲线和基点进行加密得到的密文,所述对第一数据集合中各个第一数据的第一加密项进行调整,包括:
基于所述椭圆曲线和所述第一调整密钥对所述第一加密项加密得到第一调整项,其中,所述第一调整项中以所述第一加密项为基点,以所述第一调整密钥作为倍数。
4.根据权利要求2所述的方法,其中,所述第一加密项和所述第二加密项为基于相同的底数进行幂运算得到的密文,所述对第一数据集合中各个第一数据的第一加密项进行调整,包括:
以所述第一加密项为底数、所述第一调整密钥为指数进行幂运算,得到目标运算结果,作为所述第一调整项。
5.一种隐私求交方法,包括:
利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项,以及利用预先获取的第二调整密钥,对第二数据集合中各个第二数据的第二加密项进行调整,得到第二调整项;
基于所述第一调整项和所述第二调整项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥而确定;所述第二调整密钥基于所述第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
6.根据权利要求5所述的方法,其中,所述第一数据集合由第一方持有,所述第二数据集合由第二方持有;所述第一加密项通过以下步骤获得:
所述第一方基于所述第一加密密钥,并利用约定的哈希函数,确定第一派生密钥;基于所述第一派生密钥,对所述第一加密项对应的第一数据项进行加密,并将得到的第一密文拆分为两个第一原始部分;分别对所述两个第一原始部分进行加密,得到两个第一加密部分,用于形成第一加密项;
所述第二加密项通过以下步骤获得:
所述第二方基于所述第二加密密钥,并利用所述哈希函数,确定第二派生密钥;基于所述第二派生密钥,对所述第二加密项对应的第二数据项进行加密,并将得到的第二密文拆分为两个第二原始部分;分别对所述第二两个原始部分进行加密,得到两个第二加密部分,用于形成第二加密项。
7.根据权利要求6所述的方法,其中,
所述对所述第一加密项对应的第一数据项进行加密,包括:
将所述第一数据项的哈希值和所述第一派生密钥的乘积作为倍数,对约定的椭圆曲线上的基点进行点乘运算,得到所述第一密文;
所述对所述第二加密项对应的第二数据项进行加密,包括:
将所述第二数据项的哈希值和所述第二派生密钥的乘积作为倍数,对所述基点进行点乘运算,得到所述第二密文。
8.根据权利要求6所述的方法,其中,
所述对所述第一加密项对应的第一数据项进行加密,包括:
以约定的第一数值为底数,以所述第一数据项的哈希值和所述第一派生密钥的乘积为指数进行幂运算,得到所述第一密文。
所述对所述第二加密项对应的第二数据项进行加密,包括:
以所述第一数值为底数,以所述第二数据项和所述第二派生密钥的乘积为指数进行幂运算,得到所述第二密文。
9.根据权利要求6所述的方法,其中,
所述分别对所述两个第一原始部分进行加密,包括:
利用第一中间密钥加密所述两个第一原始部分中在前的第一原始部分,利用第二中间密钥加密在后的第一原始部分;所述第一中间密钥基于所述第一加密密钥的第三派生密钥确定;所述第二中间密钥基于所述第一加密密钥的第四派生密钥确定。
所述分别对所述两个第二原始部分进行加密,包括:
利用第三中间密钥加密所述两个第二原始部分中在前的第二原始部分,利用第四中间密钥加密在后的第二原始部分;所述第三中间密钥基于所述第二加密密钥的第五派生密钥确定;所述第四中间密钥基于所述第二加密密钥的第六派生密钥确定。
10.根据权利要求9所述的方法,其中,
所述第一中间密钥和所述第二中间密钥通过以下步骤获得:
所述第一方将所述第三派生密钥与第一随机数的拼接结果的哈希值,作为所述第一中间密钥;将所述在前的第一原始部分与所述第四派生密钥的拼接结果的哈希值,与所述第一中间密钥的拼接结果的哈希值,作为所述第二中间密钥;
所述第四中间密钥和所述第五中间密钥通过以下步骤获得:
所述第二方将所述第五派生密钥与第二随机数的拼接结果的哈希值,作为所述第三中间密钥;将所述在前的第二原始部分与所述第六派生密钥的拼接结果的哈希值,与所述第三中间密钥的拼接结果的哈希值,作为所述第四中间密钥。
11.根据权利要求9所述的方法,其中,
所述利用所述第一中间密钥加密所述两个第一原始部分中在前的第一原始部分,以及利用所述第二中间密钥加密在后的第一原始部分,包括:
对所述第一中间密钥与在前的第一原始部分进行异或运算,得到所述两个第一加密部分中的一个第一加密部分;对所述第二中间密钥与在后的第一原始部分进行异或运算,得到另一个第一加密部分;
所述利用所述第三中间密钥加密所述两个第二原始部分中在前的第二原始部分,以及利用所述第四中间密钥加密在后的第二原始部分,包括:
对所述第三中间密钥与在前的第二原始部分进行异或运算,得到所述两个第二加密部分中的一个第二加密部分;对所述第四中间密钥与在后的第二原始部分进行异或运算,得到另一个第二加密部分。
12.根据权利要求5所述的方法,其中,所述第一调整密钥和所述第二调整密钥通过以下步骤获得:
所述第二方基于预先从第一方接收的所述第一加密密钥,并利用约定的哈希函数,确定第一派生密钥、第三派生密钥和第四派生密钥;
基于所述第二加密密钥,并利用所述哈希函数,确定第二派生密钥、第五派生密钥和第六派生密钥;
将所述第三派生密钥、所述第四派生密钥以及所述第二派生密钥与所述第一派生密钥的比值的拼接结果作为所述第一调整密钥;
将所述第五派生密钥和所述第六派生密钥的拼接结果,作为所述第二调整密钥。
13.根据权利要求12所述的方法,其中,
所述对第一数据集合中各个第一数据的第一加密项进行调整,包括:
将所述第一调整密钥拆分为所述第三派生密钥、所述第四派生密钥以及所述比值;基于所述第三派生密钥确定第一中间密钥,以及基于所述第四派生密钥和所述第一中间密钥确定第二中间密钥;基于所述第一中间密钥和所述第二中间密钥,对应调整基于所述第一加密项拆分得到的两个第一加密部分,得到两个第一调整部分;基于所述两个第一调整部分的拼接结果以及所述比值,确定所述第一调整项。
所述对第二数据集合中各个第二数据的第二加密项进行调整,包括:
将所述第二调整密钥拆分为所述第五派生密钥和所述第六派生密钥;基于所述第五派生密钥确定第三中间密钥,以及基于所述第六派生密钥和所述第三中间密钥确定第四中间密钥;基于所述第三中间密钥和所述第四中间密钥,对应调整基于所述第二加密项拆分得到的两个第二加密部分,得到两个第二调整部分,用于形成所述第二调整项。
14.根据权利要求13所述的方法,其中,所述确定所述第一调整项,包括:
基于约定的椭圆曲线和所述比值对所述拼接结果进行加密得到所述第一调整项,其中,所述第一调整项中以所述拼接结果为基点,以所述比值作为倍数。
15.根据权利要求13所述的方法,其中,所述确定所述第一调整项,包括:
以所述拼接结果为底数、所述比值为指数进行幂运算,得到目标运算结果,作为所述第一调整项。
16.根据权利要求5所述的方法,其中,隐私求交的结果包括:第三加密项和/或第四加密项;其中,所述第三加密项通过利用第一初始密钥,对所述第一加密项对应的第一数据项进行加密得到;所述第四加密项通过利用第二初始密钥,对所述第二加密项对应的第二数据项进行加密得到;所述第一初始密钥和所述第二初始密钥各自具有对应的解密密钥。
17.根据权利要求16所述的方法,其中,
所述第一加密密钥是通过对所述第一初始密钥对应的比特串中的部分比特进行修改或反转得到的;
所述第二加密密钥是通过对所述第二初始密钥对应的比特串中的部分比特进行修改或反转得到的。
18.根据权利要求5所述的方法,其中,所述第一数据集合包括第一数据表,所述第二数据集合包括第二数据表;所述对所述第一数据集合和所述第二数据集合进行隐私求交,包括:
对所述第一数据表和所述第二数据表进行关联查询,并将得到的关联查询结果作为隐私求交的结果。
19.一种隐私求交装置,包括:
调整单元,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
隐私求交单元,用于基于所述第一调整项、以及第二数据集合中各个第二数据的第二加密项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
20.一种隐私求交装置,包括:
第一调整单元,用于利用预先获取的第一调整密钥,对第一数据集合中各个第一数据的第一加密项进行调整,得到第一调整项;
第二调整单元,用于利用预先获取的第二调整密钥,对第二数据集合中各个第二数据的第二加密项进行调整,得到第二调整项;
隐私求交单元,用于基于所述第一调整项和所述第二调整项,对所述第一数据集合和所述第二数据集合进行隐私求交;
其中,所述第一调整密钥基于所述第一加密项对应的第一加密密钥而确定;所述第二调整密钥基于所述第一加密密钥、以及所述第二加密项对应的第二加密密钥而确定。
21.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-18中任一项的所述的方法。
22.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211737648.8A CN115982768A (zh) | 2022-12-31 | 2022-12-31 | 一种隐私求交方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211737648.8A CN115982768A (zh) | 2022-12-31 | 2022-12-31 | 一种隐私求交方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115982768A true CN115982768A (zh) | 2023-04-18 |
Family
ID=85973855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211737648.8A Pending CN115982768A (zh) | 2022-12-31 | 2022-12-31 | 一种隐私求交方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982768A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116305300A (zh) * | 2023-05-25 | 2023-06-23 | 北京数牍科技有限公司 | 公平隐私集合求交方法 |
-
2022
- 2022-12-31 CN CN202211737648.8A patent/CN115982768A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116305300A (zh) * | 2023-05-25 | 2023-06-23 | 北京数牍科技有限公司 | 公平隐私集合求交方法 |
CN116305300B (zh) * | 2023-05-25 | 2023-07-21 | 北京数牍科技有限公司 | 公平隐私集合求交方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021103708A1 (zh) | 基于隐私信息保护的数据查询方法、装置、设备及*** | |
CN105812141B (zh) | 一种面向外包加密数据的可验证交集运算方法及*** | |
CN108629027B (zh) | 基于区块链的用户数据库重建方法、装置、设备及介质 | |
Liu et al. | Privacy-preserving outsourced calculation on floating point numbers | |
CN105610793B (zh) | 一种外包数据加密存储与密文查询***及其应用方法 | |
Liu et al. | An efficient privacy-preserving outsourced computation over public data | |
US11101980B2 (en) | System and method for adding and comparing integers encrypted with quasigroup operations in AES counter mode encryption | |
WO2016173646A1 (en) | Method and system for providing homomorphically encrypted data on a client | |
CN111612462B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
US20200204360A1 (en) | Method and Devices for Communicating Securely Between Devices | |
Benzekki et al. | A secure cloud computing architecture using homomorphic encryption | |
US9893880B2 (en) | Method for secure symbol comparison | |
JP2020092414A (ja) | ブロックチェーンのための暗号化データ共有管理 | |
Feng et al. | Privacy-preserving computation in cyber-physical-social systems: A survey of the state-of-the-art and perspectives | |
JP2022533950A (ja) | 準群演算を含む暗号化データに対して等価演算および未満演算を実行するシステムおよび方法 | |
CN109327304A (zh) | 一种云计算中实现隐私保护的轻量级同态加密方法 | |
CN103873236A (zh) | 一种可搜索加密方法及设备 | |
CN111639362B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
Tajima et al. | Outsourced private set intersection cardinality with fully homomorphic encryption | |
Bhandari et al. | A framework for data security and storage in Cloud Computing | |
CN111555880A (zh) | 数据碰撞方法、装置、存储介质及电子设备 | |
Sekar et al. | Comparative study of encryption algorithm over big data in cloud systems | |
CN115982768A (zh) | 一种隐私求交方法及装置 | |
CN117171202A (zh) | 一种数据查询方法及装置 | |
CN115118411B (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 |