基于不经意伪随机函数的隐匿求交方法与流程

文档序号:31052895发布日期:2022-08-06 08:35阅读:306来源:国知局
基于不经意伪随机函数的隐匿求交方法与流程

1.本发明涉及隐私计算领域,具体涉及一种基于不经意伪随机函数的隐匿求交方法。


背景技术:

2.隐私集合求交(private set intersection,psi)属于隐私计算领域的特定应用问题,其兼具重要的理论意义与极强的现实应用价值。随着用户数据的隐私保护需求的日益提升,psi可以在满足依赖个人信息的业务的便利性的同时最大程度保护个人信息私密性需求。
3.psi允许持有各自隐私数据集的多方计算他们数据的交集,同时不泄露任何交集以外的信息。在双方进行求交时,假设甲方持有数据集a,另一乙方持有数据集b,则psi的结果为a交b。甲方从乙方获得的信息仅为ab的交集;同理,乙方从甲方获得的信息仅为ab的交集。出于隐私问题的考虑,甲、乙双方都不能泄露数据信息,所以只能获得数据a 与b的交集部分,而不能泄露交集以外的用户信息。
4.现有的技术一般是甲、乙双方输入各自脱敏后的数据进行求交或者通过哈希的方式来进行求交,这种方案有被暴力撞库的风险。


技术实现要素:

5.本发明的目的在于提供一种基于不经意伪随机函数的隐匿求交方法,以解决现有技术中双方对数据进行求交时存在暴力撞库风险的缺陷。
6.以下通过两个方面进一步阐述本发明的内容:
7.第一方面,提供了一种基于不经意伪随机函数的隐匿求交方法,所述方法应用于发起方,包括如下步骤:
8.发起方对本地数据进行预处理后得到加密数据,并将所述加密数据发送给数据方;
9.获取所述数据方基于所述加密数据运算获得的运算数据;
10.将获得的运算数据与本方的运算数据进行比对,获得求交结果。
11.结合第一方面,对本地数据进行预处理后得到加密数据的方法包括如下步骤:
12.获取本地数据,并对所述本地数据进行二次加密;
13.对二次加密后的数据进行转换获得加密数据。
14.结合第一方面,所述对所述本地数据进行二次加密的方法包括如下步骤:
15.第一次加密:
16.获取本地数据,将本地数据输入第一单向函数,获得第一次加密结果;
17.第二次加密:
18.获取一个随机数作为随机函数的密钥;
19.将第一次加密结果作为参数和所述密钥一起输入随机函数进行运算,获得第二次
加密结果。
20.结合第一方面,对二次加密后的数据进行转换获得加密数据的方法包括如下步骤:
21.生成一个全为1的第一矩阵,根据第二次加密结果将第一矩阵中的若干项置为零;
22.根据获取的所述密钥以及第一矩阵的列数构造出第二矩阵和第三矩阵;
23.将第二矩阵与第一矩阵的转置进行异或运算得到第四矩阵;
24.将获得的第四矩阵与第三矩阵进行异或运算得到加密数据。
25.结合第一方面,所述第一矩阵为m行w列的矩阵,其中,w为整数,m 为发起方的本地数据的总数量。
26.结合第一方面,本方的运算数据获得方法包括如下步骤:
27.将第二次加密结果作为第二矩阵的元素,并将各个元素进行拼接,将拼接结果输入第二单向函数进行运算,将运算结果作为本方的运算数据。
28.第二方面,提供了一种基于不经意伪随机函数的隐匿求交方法,所述方法应用于数据方,包括如下步骤:
29.数据方获取发起方发送的加密数据,所述加密数据由发起方对自身的本地数据进行预处理后得到;
30.将所述加密数据与预处理后的本地数据联合运算获得运算数据;
31.将获得的运算数据发送给发起方。
32.结合第二方面,所述本地数据的预处理方法包括如下步骤:
33.获取本地数据,对所述本地数据进行二次加密;
34.包括:
35.第一次加密:
36.获取本地数据,将所述本地数据输入第一单向函数获得第一次加密结果;
37.第二次加密:
38.获取发起方的密钥,将所述第一次加密结果和所述密钥输入随机函数进行运算,获得第二次加密结果。
39.结合第二方面,所述运算数据的计算方法包括如下步骤:
40.获取一个随机序列,并与所述密钥联立生成密钥序列;
41.根据密钥序列和所述加密数据进行选择运算,获得选择序列;
42.将选择序列的各个元素拼接后输入第二单向函数获得运算数据。
43.结合第二方面,根据密钥序列和加密数据进行选择运算,获得选择序列的方法包括如下步骤:
44.构建与所述密钥序列项数相同的选择序列;
45.将密钥序列中的元素进行逐一判断,当密钥序列中的元素为零时,则选择序列相同位置也为零;
46.否则将该元素与加密数据中相同位置的元素进行异或运算,将异或运算的结果作为选择序列中该位置的元素。
47.本发明的优点在于:该种基于不经意伪随机函数的隐匿求交方法,发起方和数据方均通过随机数对本地数据进行二次加密,并将加密后的数据通过随机序列多次构成得到
矩阵,然后通过矩阵间的异或运算使得本地数据更加隐蔽,本方法中发起方在不获得交集以外元素的情况下得到了求交的结果,而数据方配合发起方进行运算的过程中,没有做出任何真实数据的输出,整个求交的过程中无明文交互,双方也不能从交互流程中得到其他关于对方数据集的具体信息。另外,由于双方都在数据输入的阶段使用单向函数h1,数据方在得到δ后,无法获得关于发起方输入的数据y的明文信息,因此,该方法也可以抵抗数据方的恶意行为,是一个非常高效的隐匿求交方案。
附图说明
48.图1为本发明中发起方的数据加密方法的流程示意图。
49.图2为本发明中数据方的数据加密方法的流程示意图。
50.图3为本发明中发起方和数据方联合后数据加密方法的流程示意图。
51.图4为本发明中发起方和数据方联合后数据加密方法的流程框图。
具体实施方式
52.为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
53.在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
54.在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以通过具体情况理解上述术语在本发明中的具体含义。
55.如图1所示,公开了一种基于不经意伪随机函数的隐匿求交方法,所述方法应用于发起方,包括如下步骤:
56.s11:发起方对本地数据进行预处理后得到加密数据,并将所述加密数据发送给数据方;
57.其中,对本地数据进行预处理后得到加密数据的方法包括如下步骤:
58.获取本地数据,并对所述本地数据进行二次加密;
59.对二次加密后的数据进行转换获得加密数据;
60.二次加密的方法包括如下步骤:
61.第一次加密:
62.获取本地数据,将本地数据输入第一单向函数,获得第一次加密结果;
63.具体加密步骤为:发起方首先获取自身的本地数据y={y1,y2,

,y
n1
},将本地数据输入至单向函数h1中,得到输出的结果为h1(y),h1是一个单向函数,需要满足输出为256位,所以可以使用sha-256,单向函数(one-wayfunction)是一种具有下述特点的单射函数:对于每一个输入,函数值都容易计算(多项式时间),但是给出一个随机输入的函数值,算出原始输入却比较困难(无法在多项式时间内使用确定性图灵机计算),在本技术中单向函数h1的选择包括sha1、blake、sha256、md5中的一种或多种;
64.第二次加密:
65.获取一个随机数作为随机函数的密钥;
66.将第一次加密结果作为参数和所述密钥一起输入随机函数进行运算,获得第二次加密结果;
67.具体加密步骤为:生成一个随机数k,以及随机函数aes(advancedencryptionstandard,高级加密标准),将随机数k作为随机函数aes的密钥,同时将第一次的加密结果h1(y)作为随机函数aes的参数输入,通过计算获得随机函数aes的输出为:v=fk(h1(y));
68.对二次加密后的数据进行转换获得加密数据的方法包括如下步骤:
69.生成一个全为1的第一矩阵,根据第二次加密结果将第一矩阵中的若干项置为零;
70.所述第一矩阵为m行w列的矩阵,其中,w=600,m为发起方的本地数据的总数量;
71.具体步骤为:
72.生成一个m行w列值全为1的第一矩阵d,将第二次的加密结果v=fk(h1(y)),作为该矩阵的元素,并需满足di[v[i]]=0;其中i∈[w],w取值为600,m为发起方的本地数据总数量;
[0073]
根据获取的所述密钥以及第一矩阵d的列数构造出第二矩阵a和第三矩阵e;
[0074]
根据随机数k和第一矩阵d的列数构造第二矩阵以及第三矩阵
[0075]
将第二矩阵a与第一矩阵d的转置进行异或运算得到第四矩阵b;
[0076]
将第二矩阵a与第一矩阵d的转置进行异或运算得到矩阵在运算时,将矩阵的对应元素做异或位运算;
[0077]
将获得的第四矩阵与第三矩阵进行异或运算得到加密数据;
[0078]
将第四矩阵b与第三矩阵e进行异或运算得到加密数据
[0079]
s12:获取所述数据方基于所述加密数据运算获得的运算数据;
[0080]
s13:将获得的运算数据与本方的运算数据进行比对,获得求交结果;
[0081]
发起方的运算数据获得方法包括如下步骤:
[0082]
将第二次加密结果作为第二矩阵的元素,并将各个元素进行拼接,将拼接结果输入第二单向函数进行运算,将运算结果作为发起方的运算数据。
[0083]
将第二矩阵a和随机函数aes的输出v联合拼接后输入单向函数得到运算数据,即:δ=h2(a1[v[1]]||

||aw[v[w]]);
[0084]
其中||...||为拼接操作,拼接操作是将矩阵的逐行拼在一起,编程一行,例如:
[0085]
矩阵
[0086]
拼接后变成r=r
00
…r0l
…rk0
…rkl

[0087]
如图2所示,公开了一种基于不经意伪随机函数的隐匿求交方法,所述方法应用于数据方,包括如下步骤:
[0088]
s21:数据方获取发起方发送的加密数据,所述加密数据由发起方对自身的本地数据进行预处理后得到;
[0089]
s22:将所述加密数据与预处理后的本地数据联合运算获得运算数据;
[0090]
所述本地数据的预处理方法包括如下步骤:
[0091]
获取本地数据,对所述本地数据进行二次加密;
[0092]
包括:
[0093]
第一次加密:
[0094]
获取本地数据,将所述本地数据输入第一单向函数获得第一次加密结果;
[0095]
数据方首先获取自身的本地数据x={x1,x2,...x
n1
},将本地数据输入至单向函数h1中,得到输出的结果为h1(x);
[0096]
第二次加密:
[0097]
获取发起方的密钥,将所述第一次加密结果和所述密钥输入随机函数进行运算,获得第二次加密结果;
[0098]
具体加密步骤为:获取参与方的随机数k作为密钥,以及随机函数 aes,将密钥k和第一次的加密结果h1(x)作为随机函数aes的参数输入,通过计算获得随机函数aes的输出为:u=fk(h1(x));
[0099]
将所述加密数据与预处理后的本地数据联合运算获得运算数据的方法包括如下步骤:
[0100]
获取一个随机序列,并与所述密钥联立生成密钥序列;
[0101]
根据密钥序列和所述加密数据进行选择运算,获得选择序列;
[0102]
根据密钥序列和加密数据进行选择运算,获得选择序列的方法包括如下步骤:
[0103]
构建与所述密钥序列项数相同的选择序列;
[0104]
获取随机序列s,并根据密钥k生成随机密钥序列:
[0105][0106]
将密钥序列中的元素进行逐一判断,当密钥序列中的元素为零时,则选择序列相同位置也为零;
[0107]
否则将该元素与加密数据中相同位置的元素进行异或运算,将异或运算的结果作为选择序列中该位置的元素;
[0108]
具体包括如下步骤:
[0109]
根据密钥序列s和加密数据δ计算获得选择序列c,满足:
[0110]
当密钥序列中的元素s[i]=0时,则选择序列相应位置的元素为:则选择序列相应位置的元素为:
[0111]
否则该位置中的元素即为:
[0112]
将选择序列的各个元素拼接后输入第二单向函数获得运算数据;
[0113]
将选择序列c中的各个元素进行拼接后,作为单向函数h2的参数得到包括:
[0114][0115]
其中||...||为拼接操作,在本技术中单向函数h2的选择包括sha1、blake、sha256、md5中的一种或多种,需要说明的是,单向函数h1和h2在计算时选择不同的函数进行计算。
[0116]
s23:将获得的运算数据发送给发起方。
[0117]
如图3、图4所示,公开了一种基于不经意伪随机函数的隐匿求交方法,所述方法应用于发起方和数据方,包括如下步骤:
[0118]
s31:发起方对本地数据进行预处理后得到加密数据,并将所述加密数据发送给数据方;
[0119]
其中,对发起方的本地数据进行预处理后得到加密数据的方法包括如下步骤:
[0120]
获取发起方的本地数据,并对所述发起方的本地数据进行二次加密;
[0121]
对二次加密后的数据进行转换获得加密数据;
[0122]
二次加密的方法包括如下步骤:
[0123]
第一次加密:
[0124]
获取发起方的本地数据,将发起方的本地数据输入第一单向函数,获得第一次加密结果;
[0125]
具体加密步骤为:发起方首先获取自身的本地数据y={y1,y2,

,y
n1
},将发起方的本地数据输入至单向函数h1中,得到输出的结果为h1(y),h1是一个单向函数,需要满足输出为256位,所以可以使用sha-256;
[0126]
第二次加密:
[0127]
获取一个随机数作为随机函数的密钥;
[0128]
将第一次加密结果作为参数和所述密钥一起输入随机函数进行运算,获得第二次加密结果;
[0129]
具体加密步骤为:生成一个随机数k,以及随机函数aes(advancedencryptionstandard,高级加密标准),将随机数k作为随机函数aes的密钥,同时将第一次的加密结果h1(y)作为随机函数aes的参数输入,通过计算获得随机函数aes的输出为:v=fk(h1(y));
[0130]
对二次加密后的数据进行转换获得加密数据的方法包括如下步骤:
[0131]
生成一个全为1的第一矩阵,根据第二次加密结果将第一矩阵中的若干项置为零;
[0132]
所述第一矩阵为m行w列的矩阵,其中,w=600,m为发起方的本地数据的总数量;
[0133]
具体步骤为:
[0134]
生成一个m行w列值全为1的第一矩阵d,将第二次的加密结果v=fk(h1(y)),作为该矩阵的元素,并需满足di[v[i]]=0;其中i∈[w],w取值为600,m为发起方的本地数据总数量;
[0135]
根据获取的所述密钥以及第一矩阵d的列数构造出第二矩阵a和第三矩阵e;
[0136]
根据随机数k和第一矩阵d的列数构造第二矩阵以及第三矩阵
[0137]
将第二矩阵a与第一矩阵d的转置进行异或运算得到第四矩阵b;
[0138]
将第二矩阵a与第一矩阵d的转置进行异或运算得到矩阵
[0139]
将获得的第四矩阵与第三矩阵进行异或运算得到加密数据;
[0140]
将第四矩阵b与第三矩阵e进行异或运算得到加密数据:
[0141][0142]
运算结束后将加密数据δ发送给数据方;
[0143]
s32:数据方接收发起方发送的加密数据;
[0144]
s33:数据方将所述加密数据与预处理后的本地数据联合运算获得运算数据;
[0145]
数据方的本地数据的预处理方法包括如下步骤:
[0146]
获取数据方的本地数据,对所述数据方的本地数据进行二次加密;
[0147]
包括:
[0148]
第一次加密:
[0149]
获取数据方的本地数据,将所述数据方的本地数据输入第一单向函数获得第一次加密结果;
[0150]
数据方首先获取自身的本地数据x={x1,x2,...x
n1
},将数据方的本地数据输入至单向函数h1中,得到输出的结果为h1(x);
[0151]
第二次加密:
[0152]
获取发起方的密钥,将所述第一次加密结果和所述密钥输入随机函数进行运算,获得第二次加密结果;
[0153]
具体加密步骤为:获取参与方的随机数k作为密钥,以及随机函数 aes,将密钥k和第一次的加密结果h1(x)作为随机函数aes的参数输入,通过计算获得随机函数aes的输出为:u=fk(h1(x));
[0154]
将所述加密数据与预处理后的本地数据联合运算获得运算数据的方法包括如下步骤:
[0155]
获取一个随机序列,并与所述密钥联立生成密钥序列;
[0156]
根据密钥序列和所述加密数据进行选择运算,获得选择序列;
[0157]
根据密钥序列和加密数据进行选择运算,获得选择序列的方法包括如下步骤:
[0158]
构建与所述密钥序列项数相同的选择序列;
[0159]
获取随机序列s,并根据密钥k生成随机密钥序列:
[0160][0161]
将密钥序列中的元素进行逐一判断,当密钥序列中的元素为零时,则选择序列相同位置也为零;
[0162]
否则将该元素与加密数据中相同位置的元素进行异或运算,将异或运算的结果作为选择序列中该位置的元素;
[0163]
具体包括如下步骤:
[0164]
根据密钥序列s和加密数据δ计算获得选择序列c,满足:
[0165]
当密钥序列中的元素s[i]=0时,则选择序列相应位置的元素为:则选择序列相应位置的元素为:
[0166]
否则该位置中的元素即为:
[0167]
将选择序列的各个元素拼接后输入第二单向函数获得运算数据;
[0168]
将选择序列c中的各个元素进行拼接后,作为单向函数h2的参数得到包括:
[0169][0170]
其中||...||为拼接操作;
[0171]
计算结束后,数据方将运算数据发送至发起方;
[0172]
s34:发起方获取所述数据方基于所述加密数据运算获得的运算数据;
[0173]
s35:发起方将获得的运算数据与本方的运算数据进行比对,获得求交结果;
[0174]
发起方的运算数据获得方法包括如下步骤:
[0175]
将第二次加密结果作为第二矩阵的元素,并将各个元素进行拼接,将拼接结果输入第二单向函数进行运算,将运算结果作为发起方的运算数据。
[0176]
将第二矩阵a和随机函数aes的输出v联合拼接后输入单向函数得到运算数据,即:δ=h2(a1[v[1]]||

||aw[v[w]]);
[0177]
其中||...||为拼接操作。
[0178]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0179]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0180]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0181]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0182]
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0183]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1