数据传输方法、装置、设备和存储介质转让专利

申请号 : CN202110556787.X

文献号 : CN113381854B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张帅邱炜伟李伟汪小益刘毅恒

申请人 : 杭州趣链科技有限公司

摘要 :

本申请公开了一种数据传输方法、装置、设备和存储介质,属于通信技术领域。包括:生成包含有第一公钥、第一私钥和第一模数的第一密钥对,第一模数与第二设备生成的第二密钥对中的第二模数相同,第二密钥对包括第二公钥、第二私钥和第二模数;使用第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据并发送给第二设备;接收第二设备发送的第二数据,第二数据是第二设备使用第二公钥和第二模数对k个第一数据中的第b个第一数据进行加密得到的;使用第一私钥和第一模数解密第二数据,得到第三数据并发送给第二设备。本申请可以在保证隐私性和正确性的情况下进行数据传输,此数据传输过程的计算复杂度较小,可以节省处理资源。

权利要求 :

1.一种数据传输方法,其特征在于,应用于第一设备,包括:

生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;

使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;

将所述k个第一数据发送给所述第二设备;

接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数对所述k个第一数据中的第b个第一数据进行加密得到的,所述b为小于或等于k的正整数;

使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;

将所述第三数据发送给所述第二设备。

2.一种数据传输方法,其特征在于,应用于第一设备,包括:

生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;

使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;

将所述k个第一数据划分为t个数据集,采用t选1‑不经意传输OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;

接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数对所述目标数据集包括的所述第b个第一数据进行加密得到的;

使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;

将所述第三数据发送给所述第二设备。

3.如权利要求2所述的方法,其特征在于,所述k为大于7的整数,所述t为大于或等于2且小于(k‑3)/2的整数。

4.如权利要求1‑3任一所述的方法,其特征在于,所述生成第一密钥对,包括:采用RSA算法生成所述第一密钥对。

5.如权利要求1‑3任一所述的方法,其特征在于,所述使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,包括:对于所述k个原始数据中的任意一个原始数据,根据所述第一公钥和所述第一模数,通E过公式C1=M1 mod N对所述一个原始数据进行加密,得到一个第一数据,所述C1为所述一个第一数据,所述M1为所述一个原始数据,所述E为所述第一公钥,所述N为所述第一模数,所述mod为求余函数;

所述使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,包括:D

根据所述第一私钥和所述第一模数,通过公式M2=C2 mod N对所述第二数据进行解密,得到所述第三数据,所述C2为所述第二数据,所述M2为所述第三数据,所述D为所述第一私钥。

6.一种数据传输方法,其特征在于,所述方法包括:

第一设备生成第一密钥对,第二设备生成第二密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;

所述第一设备使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据发送给所述第二设备,所述k为大于或等于2的整数;

所述第二设备接收到所述k个第一数据后,使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备,所述b为小于或等于k的正整数;

所述第一设备接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;

所述第二设备接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。

7.一种数据传输方法,其特征在于,所述方法包括:

第一设备生成第一密钥对,第二设备生成第二密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;

所述第一设备使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据划分为t个数据集,采用t选1‑不经意传输OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述k为大于或等于2的整数,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;

所述第二设备接收到所述目标数据集后,使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备;

所述第一设备接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;

所述第二设备接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。

8.一种数据传输装置,其特征在于,包括:

生成模块,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;

加密模块,用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;

发送模块,用于将所述k个第一数据发送给所述第二设备;

接收模块,用于接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据得到的,所述b为小于或等于k的正整数;

解密模块,用于使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;

所述发送模块,还用于将所述第三数据发送给所述第二设备。

9.一种数据传输装置,其特征在于,包括:

生成模块,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;

加密模块,用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;

发送模块,用于将所述k个第一数据划分为t个数据集,采用t选1‑不经意传输OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;

接收模块,用于接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据得到的;

解密模块,用于使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;

所述发送模块,还用于将所述第三数据发送给所述第二设备。

10.一种数据传输系统,其特征在于,所述系统包括:

第一设备,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数;

第二设备,用于生成第二密钥对,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;

所述第一设备,还用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据发送给所述第二设备,所述k为大于或等于2的整数;

所述第二设备,还用于接收到所述k个第一数据后,使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备,所述b为小于或等于k的正整数;

所述第一设备,还用于接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;

所述第二设备,还用于接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。

11.一种数据传输系统,其特征在于,所述系统包括:

第一设备,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数;

第二设备,用于生成第二密钥对,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;

所述第一设备,还用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据划分为t个数据集,采用t选1‑不经意传输OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述k为大于或等于2的整数,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;

所述第二设备,还用于接收到所述目标数据集后,使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备;

所述第一设备,还用于接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;

所述第二设备,还用于接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。

12.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至5任一项所述的方法。

13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的方法。

说明书 :

数据传输方法、装置、设备和存储介质

技术领域

[0001] 本申请涉及通信技术领域,特别涉及一种数据传输方法、装置、设备和存储介质。

背景技术

[0002] OT(Oblivious Transfer,不经意传输)协议是密码学的一个基本协议。OT协议作为一种可保护隐私的双方通信协议,能使通信双方以一种选择模糊化的方式传送数据。具体为,发送方拥有k个数据,接收方拥有从这k个数据中选择一个数据的权利,发送方和接收方执行k选1‑OT协议后,接收方得到这k个数据中的一个数据,发送方无法获知接收方得到的是哪一个数据,而接收方除了已得到的这一个数据之外无法获知该k个数据中的其他数据,如此,可以保护双方隐私。然而,k选1‑OT协议的计算复杂度较高,会耗费较多的处理资源。

发明内容

[0003] 本申请提供了一种数据传输方法、装置、设备和存储介质,可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。所述技术方案如下:
[0004] 第一方面,提供了一种数据传输方法,应用于第一设备,包括:
[0005] 生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;
[0006] 使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;
[0007] 将所述k个第一数据发送给所述第二设备;
[0008] 接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数对所述k个第一数据中的第b个第一数据进行加密得到的,所述b为小于或等于k的正整数;
[0009] 使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;
[0010] 将所述第三数据发送给所述第二设备。
[0011] 在本申请中,由于k个第一数据是第一设备对k个原始数据加密得到,所以第一设备将k个第一数据发送给第二设备后,第二设备根据k个第一数据不能获知k个原始数据,从而可以保证第一设备的隐私性。由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。因而第一设备将第三数据发送给第二设备后,第二设备可以对第三数据解密来得到k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。综上,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0012] 可选地,所述生成第一密钥对,包括:
[0013] 采用RSA算法生成所述第一密钥对。
[0014] 可选地,所述使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,包括:
[0015] 对于所述k个原始数据中的任意一个原始数据,根据所述第一公钥和所述第一模E数,通过公式C1=M1 mod N对所述一个原始数据进行加密,得到一个第一数据,所述C1为所述一个第一数据,所述M1为所述一个原始数据,所述E为所述第一公钥,所述N为所述第一模数,所述mod为求余函数;
[0016] 可选地,所述使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,包括:
[0017] 根据所述第一私钥和所述第一模数,通过公式M2=C2D mod N对所述第二数据进行解密,得到所述第三数据,所述C2为所述第二数据,所述M2为所述第三数据,所述D为所述第一私钥。
[0018] 第二方面,提供了一种数据传输方法,应用于第一设备,包括:
[0019] 生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;
[0020] 使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;
[0021] 将所述k个第一数据划分为t个数据集,采用t选1‑OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;
[0022] 接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数对所述目标数据集包括的所述第b个第一数据进行加密得到的;
[0023] 使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;
[0024] 将所述第三数据发送给所述第二设备。
[0025] 在本申请中,由于第一设备是采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备,所以在第二设备得到目标数据集时,第一设备无法获知第二设备得到的是t个数据集中的哪一个数据集,且第二设备除了已得到的目标数据集之外无法获知t个数据集中的其他数据集。并且,由于目标数据集包括的第一数据都是对原始数据加密得到的,所以第一设备将目标数据集发送给第二设备,第二设备根据目标数据集不能获知原始数据。如此,可以保护双方隐私。由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。因而第一设备将第三数据发送给第二设备后,第二设备可以对第三数据解密来得到k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。综上,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0026] 可选地,所述k为大于7的整数,所述t为大于或等于2且小于(k‑3)/2的整数。
[0027] 可选地,所述生成第一密钥对,包括:
[0028] 采用RSA算法生成所述第一密钥对。
[0029] 可选地,所述使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,包括:
[0030] 对于所述k个原始数据中的任意一个原始数据,根据所述第一公钥和所述第一模E数,通过公式C1=M1 mod N对所述一个原始数据进行加密,得到一个第一数据,所述C1为所述一个第一数据,所述M1为所述一个原始数据,所述E为所述第一公钥,所述N为所述第一模数,所述mod为求余函数;
[0031] 可选地,所述使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,包括:
[0032] 根据所述第一私钥和所述第一模数,通过公式M2=C2D mod N对所述第二数据进行解密,得到所述第三数据,所述C2为所述第二数据,所述M2为所述第三数据,所述D为所述第一私钥。
[0033] 第三方面,提供了一种数据传输方法,所述方法包括:
[0034] 第一设备生成第一密钥对,第二设备生成第二密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;
[0035] 所述第一设备使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据发送给所述第二设备,所述k为大于或等于2的整数;
[0036] 所述第二设备接收到所述k个第一数据后,使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备,所述b为小于或等于k的正整数;
[0037] 所述第一设备接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;
[0038] 所述第二设备接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。
[0039] 第四方面,提供了一种数据传输方法,所述方法包括:
[0040] 第一设备生成第一密钥对,第二设备生成第二密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;
[0041] 所述第一设备使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据划分为t个数据集,采用t选1‑OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述k为大于或等于2的整数,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;
[0042] 所述第二设备接收到所述目标数据集后,使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备;
[0043] 所述第一设备接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;
[0044] 所述第二设备接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。
[0045] 第五方面,提供了一种数据传输装置,包括:
[0046] 生成模块,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;
[0047] 加密模块,用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;
[0048] 发送模块,用于将所述k个第一数据发送给所述第二设备;
[0049] 接收模块,用于接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据得到的,所述b为小于或等于k的正整数;
[0050] 解密模块,用于使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;
[0051] 所述发送模块,还用于将所述第三数据发送给所述第二设备。
[0052] 第六方面,提供了一种数据传输装置,包括:
[0053] 生成模块,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数,所述第一模数与第二设备生成的第二密钥对中的第二模数相同,所述第二密钥对包括第二公钥、第二私钥和所述第二模数;
[0054] 加密模块,用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,所述k为大于或等于2的整数;
[0055] 发送模块,用于将所述k个第一数据划分为t个数据集,采用t选1‑OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;
[0056] 接收模块,用于接收所述第二设备发送的第二数据,所述第二数据是所述第二设备使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据得到的;
[0057] 解密模块,用于使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据;
[0058] 所述发送模块,还用于将所述第三数据发送给所述第二设备。
[0059] 第七方面,提供了一种数据传输系统,所述系统包括:
[0060] 第一设备,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数;
[0061] 第二设备,用于生成第二密钥对,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;
[0062] 所述第一设备,还用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据发送给所述第二设备,所述k为大于或等于2的整数;
[0063] 所述第二设备,还用于接收到所述k个第一数据后,使用所述第二公钥和所述第二模数加密所述k个第一数据中的第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备,所述b为小于或等于k的正整数;
[0064] 所述第一设备,还用于接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;
[0065] 所述第二设备,还用于接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。
[0066] 第八方面,提供了一种数据传输系统,所述系统包括:
[0067] 第一设备,用于生成第一密钥对,所述第一密钥对包括第一公钥、第一私钥和第一模数;
[0068] 第二设备,用于生成第二密钥对,所述第二密钥对包括第二公钥、第二私钥和第二模数,所述第一模数和所述第二模数相同;
[0069] 所述第一设备,还用于使用所述第一公钥和所述第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将所述k个第一数据划分为t个数据集,采用t选1‑OT协议将所述t个数据集中的目标数据集发送给所述第二设备,所述k为大于或等于2的整数,所述t为大于或等于2且小于k的整数,所述目标数据集为包括所述k个第一数据中的第b个第一数据的数据集,所述b为小于或等于k的正整数;
[0070] 所述第二设备,还用于接收到所述目标数据集后,使用所述第二公钥和所述第二模数加密所述目标数据集包括的所述第b个第一数据,得到第二数据,将所述第二数据发送给所述第一设备;
[0071] 所述第一设备,还用于接收到所述第二数据后,使用所述第一私钥和所述第一模数解密所述第二数据,得到第三数据,将所述第三数据发送给所述第二设备;
[0072] 所述第二设备,还用于接收到所述第三数据后,使用所述第二私钥和所述第二模数解密所述第三数据,得到第四数据。
[0073] 第九方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面提供的数据传输方法。
[0074] 第十方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第二方面提供的数据传输方法。
[0075] 第十一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的数据传输方法。
[0076] 第十二方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面提供的数据传输方法。
[0077] 第十三方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的数据传输方法的步骤。
[0078] 第十四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面提供的数据传输方法的步骤。
[0079] 可以理解的是,上述第三方面、第五方面、第七方面、第九方面、第十一方面、第十三方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。上述第二方面、第四方面、第六方面、第八方面、第十方面、第十二方面、第十四方面的有益效果可以参见上述第二方面中的相关描述,在此不再赘述。

附图说明

[0080] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0081] 图1是本申请实施例提供的一种数据传输系统的示意图;
[0082] 图2是本申请实施例提供的一种数据传输方法的流程图;
[0083] 图3是本申请实施例提供的另一种数据传输方法的流程图;
[0084] 图4是本申请实施例提供的一种数据传输装置的结构示意图;
[0085] 图5是本申请实施例提供的另一种数据传输装置的结构示意图;
[0086] 图6是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0087] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0088] 应当理解的是,本申请提及的“多个”是指两个或两个以上。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0089] 在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
[0090] 本申请实施例提供的数据传输方法可以应用于需要保护通信双方隐私的场景。具体为,发送方拥有k个数据,接收方拥有从这k个数据中选择一个数据的权利,发送方和接收方执行本申请实施例提供的数据传输方法后,接收方得到这k个数据中的一个数据,发送方无法获知接收方得到的是哪一个数据,而接收方除了已得到的这一个数据之外无法获知该k个数据中的其他数据,如此,可以保护双方隐私。本申请实施例提供的数据传输方法的计算复杂度相比于现有的k选1‑OT协议的计算复杂度低,从而可以节省处理资源。
[0091] 下面对本申请实施例提供的系统架构予以说明。
[0092] 图1是本申请实施例提供的一种数据传输系统的示意图。参见图1,该数据传输系统包括第一设备101和第二设备102。第一设备101和第二设备102可以通过有线连接或无线连接进行通信。
[0093] 第一设备101和第二设备102均可以是通用计算机设备或专用计算机设备。在具体实现中,第一设备101或第二设备102可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定第一设备101或第二设备102的类型。
[0094] 第一设备101为数据发送方。第一设备101中可以包括k个原始数据,k为大于或等于2的整数。第二设备102为数据接收方。第二设备102需要从第一设备中获取指定的原始数据,即第二设备102需要获取第一设备101中的k个原始数据中的第b个原始数据,b为小于或等于k的正整数,b是第二设备102预设的,且只有第二设备102获知b,第一设备101不能获知b。
[0095] 第一设备101和第二设备102是以一种选择模糊化的方式来传输数据。具体地,第一设备101和第二设备102可以执行下文图2实施例或图3实施例所述的数据传输方法来进行数据传输。
[0096] 下面对本申请实施例提供的数据传输方法进行详细地解释说明。
[0097] 图2是本申请实施例提供的一种数据传输方法的流程图。参见图2,该方法包括以下步骤。
[0098] 步骤201:第一设备生成第一密钥对。
[0099] 第一设备为数据发送方。第一设备中可以包括k个原始数据,k为大于或等于2的整数。为了保证第一设备与第二设备在数据传输过程中的隐私性,第一设备需要生成第一密钥对以在数据传输过程中使用。
[0100] 第一密钥对包括第一公钥、第一私钥和第一模数。第一公钥和第一模数可以结合用来加密数据或解密数据,第一私钥和第一模数也可以结合用来加密数据或解密数据。使用第一公钥和第一模数加密的数据可以使用第一私钥和第一模数来解密,同样,使用第一私钥和第一模数加密的数据可以使用第一公钥和第一模数来解密。
[0101] 可选地,第一设备可以采用RSA算法生成第一密钥对。具体地,第一设备可以先获取第一质数和第二质数;将第一质数与第二质数之积确定为第一模数;将第一数值和第二数值的最小公倍数作为第三数值,第一数值是第一质数减1得到的,第二数值是第二质数减1得到的;根据第三数值确定第一公钥,第一公钥大于1且小于第三数值,且第一公钥与第三数值互质;根据第一公钥和第三数值确定第一私钥,第一公钥与第一私钥之积除以第三数值的余数为1。
[0102] 例如,第一设备先获取第一质数和第二质数,假设第一质数是3,第二质数是11。则第一设备可以确定第一模数为3×11=33。第一数值为3‑1=2,第二数值为11‑1=10,则第一设备可以确定2和10的最小公倍数10为第三数值。由于第一公钥大于1且小于10,所以第一公钥的取值范围为{3,7,9},又由于第一公钥与10互质,所以第一设备可以确定第一公钥为3。由于3与第一私钥之积除以10的余数为1,所以第一设备可以确定第一私钥为7。如此,第一设备生成的第一密钥对为:第一公钥:3,第一私钥:7,第一模数:33。
[0103] 步骤202:第二设备生成第二密钥对。
[0104] 第二设备为数据接收方。第二设备需要从第一设备中获取指定的原始数据,即第二设备需要获取第一设备中的k个原始数据中的第b个原始数据,b为小于或等于k的正整数,b是第二设备预设的,且只有第二设备获知b,第一设备不能获知b。为了保证第二设备与第一设备在数据传输过程中的隐私性,第二设备需要生成第二密钥对以在数据传输过程中使用。
[0105] 第二密钥对包括第二公钥、第二私钥和第二模数。第二公钥和第二模数可以结合用来加密数据或解密数据,第二私钥和第二模数也可以结合用来加密数据或解密数据。使用第二公钥和第二模数加密的数据可以使用第二私钥和第二模数来解密,同样,使用第二私钥和第二模数加密的数据可以使用第二公钥和第二模数来解密。值得注意的是,本申请实施例中,第二模数与第一模数相同。
[0106] 可选地,第二设备可以采用RSA算法生成第二密钥对。具体地,第二设备可以先获取第三质数和第四质数;将第三质数与第四质数之积确定为第二模数;将第四数值和第五数值的最小公倍数作为第六数值,第四数值是第三质数减1得到的,第五数值是第四质数减1得到的;根据第六数值确定第二公钥,第二公钥大于1且小于第六数值,且第二公钥与第六数值互质;根据第二公钥和第六数值确定第二私钥,第二公钥与第二私钥之积除以第六数值的余数为1。
[0107] 值得注意的是,本申请实施例不对步骤201和步骤202的执行顺序作限定,也即,可以先执行步骤201再执行步骤202,或者,可以先执行步骤202再执行步骤201,或者,可以同时执行步骤201和步骤202。
[0108] 步骤203:第一设备使用第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据。
[0109] 具体地,对于k个原始数据中的任意一个原始数据,根据第一公钥和第一模数,通E过公式C1=M1 mod N对这个原始数据进行加密,得到一个第一数据。其中,C1为这个第一数据,M1为这个原始数据,E为第一公钥,N为第一模数,mod为求余函数。
[0110] 例如,k个原始数据中的一个原始数据为2。假设第一密钥对为:第一公钥:3,第一E私钥:7,第一模数:33。则第一设备可以通过公式C1=M1 mod N对2进行加密,得到一个第一
3
数据为2mod 33=8。
[0111] 步骤204:第一设备将k个第一数据发送给第二设备。
[0112] 由于k个第一数据是第一设备对k个原始数据加密得到,所以第一设备将k个第一数据发送给第二设备后,第二设备根据k个第一数据不能获知k个原始数据,从而可以保证第一设备的隐私性。
[0113] 步骤205:第二设备接收到k个第一数据后,使用第二公钥和第二模数加密k个第一数据中的第b个第一数据,得到第二数据。
[0114] 第二设备在接收到k个第一数据后,可以根据自己预设的b的值,从k个第一数据中获取第b个第一数据,然后使用第二公钥和第二模数加密k个第一数据中的第b个第一数据,得到第二数据。
[0115] 第二设备使用第二公钥和第二模数加密k个第一数据中的第b个第一数据的操作与第一设备使用第一公钥和第一模数加密k个原始数据中的任意一个原始数据的操作类似,本申请实施例对此不再详细阐述。
[0116] 这种情况下,第二数据是对k个原始数据中的第b个原始数据加密过两次得到的,且是先使用第一密钥对中的第一公钥和第一模数进行加密,再使用第二密钥对中的第二公钥和第二模数进行加密。
[0117] 步骤206:第二设备将第二数据发送给第一设备。
[0118] 由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。
[0119] 步骤207:第一设备接收到第二数据后,使用第一私钥和第一模数解密第二数据,得到第三数据。
[0120] 具体地,第一设备可以根据第一私钥和第一模数,通过公式M2=C2D mod N对第二数据进行解密,得到第三数据。其中,C2为所述第二数据,M2为第三数据,D为第一私钥。
[0121] 例如,第二数据为6。假设第一密钥对为:第一公钥:3,第一私钥:7,第一模数:33。D 7
则第一设备可以通过公式M2=C2 mod N对6进行解密,得到第三数据为6mod 33=30。
[0122] 值得注意的是,由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。
[0123] 步骤208:第一设备将第三数据发送给第二设备。
[0124] 由于第三数据是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据,所以第一设备可以将第三数据发送给第二设备,以供第二设备对第三数据解密来得到k个原始数据中的第b个原始数据。
[0125] 步骤209:第二设备接收到第三数据后,使用第二私钥和第二模数解密第三数据,得到第四数据。
[0126] 第二设备使用第二私钥和第二模数解密第三数据的操作与上述第一设备使用第一私钥和第一模数解密第二数据的操作类似,本申请实施例对此不再详细阐述。
[0127] 由于第三数据是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据,所以第二设备使用第二私钥和第二模数解密第三数据后得到的第四数据就是k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。
[0128] 在本申请实施例中,第一设备生成的第一密钥对中的第一模数和第二设备生成的第二密钥对中的第二模数相同。第一设备使用第一密钥对中的第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将k个第一数据发送给第二设备。第二设备接收到k个第一数据后,使用第二密钥对中的第二公钥和第二模数加密k个第一数据中的第b个第一数据,得到第二数据,将第二数据发送给第一设备。第一设备接收到第二数据后,使用第一密钥对中的第一私钥和第一模数解密第二数据,得到第三数据,将第三数据发送给第二设备。第二设备接收到第三数据后,使用第二密钥对中的第二私钥和第二模数解密第三数据,得到第四数据。如此,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0129] 图3是本申请实施例提供的一种数据传输方法的流程图。参见图3,该方法包括以下步骤。
[0130] 步骤301:第一设备生成第一密钥对。
[0131] 第一设备为数据发送方。第一设备中可以包括k个原始数据,k为大于或等于2的整数。为了保证第一设备与第二设备在数据传输过程中的隐私性,第一设备需要生成第一密钥对以在数据传输过程中使用。
[0132] 第一密钥对包括第一公钥、第一私钥和第一模数。第一公钥和第一模数可以结合用来加密数据或解密数据,第一私钥和第一模数也可以结合用来加密数据或解密数据。使用第一公钥和第一模数加密的数据可以使用第一私钥和第一模数来解密,同样,使用第一私钥和第一模数加密的数据可以使用第一公钥和第一模数来解密。
[0133] 可选地,第一设备可以采用RSA算法生成第一密钥对。具体地,第一设备可以先获取第一质数和第二质数;将第一质数与第二质数之积确定为第一模数;将第一数值和第二数值的最小公倍数作为第三数值,第一数值是第一质数减1得到的,第二数值是第二质数减1得到的;根据第三数值确定第一公钥,第一公钥大于1且小于第三数值,且第一公钥与第三数值互质;根据第一公钥和第三数值确定第一私钥,第一公钥与第一私钥之积除以第三数值的余数为1。
[0134] 例如,第一设备先获取第一质数和第二质数,假设第一质数是3,第二质数是11。则第一设备可以确定第一模数为3×11=33。第一数值为3‑1=2,第二数值为11‑1=10,则第一设备可以确定2和10的最小公倍数10为第三数值。由于第一公钥大于1且小于10,所以第一公钥的取值范围为{3,7,9},又由于第一公钥与10互质,所以第一设备可以确定第一公钥为3。由于3与第一私钥之积除以10的余数为1,所以第一设备可以确定第一私钥为7。如此,第一设备生成的第一密钥对为:第一公钥:3,第一私钥:7,第一模数:33。
[0135] 步骤302:第二设备生成第二密钥对。
[0136] 第二设备为数据接收方。第二设备需要从第一设备中获取指定的原始数据,即第二设备需要获取第一设备中的k个原始数据中的第b个原始数据,b为小于或等于k的正整数,b是第二设备预设的,且只有第二设备获知b,第一设备不能获知b。为了保证第二设备与第一设备在数据传输过程中的隐私性,第二设备需要生成第二密钥对以在数据传输过程中使用。
[0137] 第二密钥对包括第二公钥、第二私钥和第二模数。第二公钥和第二模数可以结合用来加密数据或解密数据,第二私钥和第二模数也可以结合用来加密数据或解密数据。使用第二公钥和第二模数加密的数据可以使用第二私钥和第二模数来解密,同样,使用第二私钥和第二模数加密的数据可以使用第二公钥和第二模数来解密。值得注意的是,本申请实施例中,第二模数与第一模数相同。
[0138] 可选地,第二设备可以采用RSA算法生成第二密钥对。具体地,第二设备可以先获取第三质数和第四质数;将第三质数与第四质数之积确定为第二模数;将第四数值和第五数值的最小公倍数作为第六数值,第四数值是第三质数减1得到的,第五数值是第四质数减1得到的;根据第六数值确定第二公钥,第二公钥大于1且小于第六数值,且第二公钥与第六数值互质;根据第二公钥和第六数值确定第二私钥,第二公钥与第二私钥之积除以第六数值的余数为1。
[0139] 值得注意的是,本申请实施例不对步骤301和步骤302的执行顺序作限定,也即,可以先执行步骤301再执行步骤302,或者,可以先执行步骤302再执行步骤301,或者,可以同时执行步骤301和步骤302。
[0140] 步骤303:第一设备使用第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据。
[0141] 具体地,对于k个原始数据中的任意一个原始数据,根据第一公钥和第一模数,通E过公式C1=M1 mod N对这个原始数据进行加密,得到一个第一数据。其中,C1为这个第一数据,M1为这个原始数据,E为第一公钥,N为第一模数,mod为求余函数。
[0142] 例如,k个原始数据中的一个原始数据为2。假设第一密钥对为:第一公钥:3,第一E私钥:7,第一模数:33。则第一设备可以通过公式C1=M1 mod N对2进行加密,得到一个第一
3
数据为2mod 33=8。
[0143] 步骤304:第一设备将k个第一数据划分为t个数据集,采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备。
[0144] t为大于或等于2且小于k的整数。t选1‑OT协议的计算复杂度小于k选1‑OT协议的计算复杂度。
[0145] 目标数据集为包括k个第一数据中的第b个第一数据的数据集。第一设备可以将k个第一数据按序划分为t个数据集。比如,t为2且k为100时,第一设备可以将100个第一数据中的前50个第一数据划分到第一个数据集,将这100个第一数据中的后50个第一数据划分到第二个数据集。
[0146] 由于第一设备是采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备,所以在第二设备得到目标数据集时,第一设备无法获知第二设备得到的是t个数据集中的哪一个数据集,且第二设备除了已得到的目标数据集之外无法获知t个数据集中的其他数据集。并且,由于目标数据集包括的第一数据都是对原始数据加密得到的,所以第一设备将目标数据集发送给第二设备,第二设备根据目标数据集不能获知原始数据。如此,可以保护双方隐私。
[0147] 第一设备采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备的操作与相关技术中某个设备采用多选1‑OT协议将多个数据中的某一个数据发送给另一设备的操作类似,本申请实施例对此不进行详细阐述。
[0148] 步骤305:第二设备接收到目标数据集后,使用第二公钥和第二模数加密目标数据集包括的原先属于k个第一数据中的第b个第一数据,得到第二数据。
[0149] 第二设备在接收到目标数据集后,可以根据自己预设的b的值,从目标数据集中获取原先属于k个第一数据中的第b个第一数据,然后使用第二公钥和第二模数加密k个第一数据中的第b个第一数据,得到第二数据。
[0150] 第二设备使用第二公钥和第二模数加密k个第一数据中的第b个第一数据的操作与第一设备使用第一公钥和第一模数加密k个原始数据中的任意一个原始数据的操作类似,本申请实施例对此不再详细阐述。
[0151] 这种情况下,第二数据是对k个原始数据中的第b个原始数据加密过两次得到的,且是先使用第一密钥对中的第一公钥和第一模数进行加密,再使用第二密钥对中的第二公钥和第二模数进行加密。
[0152] 步骤306:第二设备将第二数据发送给第一设备。
[0153] 由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。
[0154] 步骤307:第一设备接收到第二数据后,使用第一私钥和第一模数解密第二数据,得到第三数据。
[0155] 具体地,第一设备可以根据第一私钥和第一模数,通过公式M2=C2D mod N对第二数据进行解密,得到第三数据。其中,C2为所述第二数据,M2为第三数据,D为第一私钥。
[0156] 例如,第二数据为6。假设第一密钥对为:第一公钥:3,第一私钥:7,第一模数:33。D 7
则第一设备可以通过公式M2=C2 mod N对2进行加密,得到第三数据为6mod 33=30。
[0157] 值得注意的是,由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。
[0158] 步骤308:第一设备将第三数据发送给第二设备。
[0159] 由于第三数据是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据,所以第一设备可以将第三数据发送给第二设备,以供第二设备对第三数据解密来得到k个原始数据中的第b个原始数据。
[0160] 步骤309:第二设备接收到第三数据后,使用第二私钥和第二模数解密第三数据,得到第四数据。
[0161] 第二设备使用第二私钥和第二模数解密第三数据的操作与上述第一设备使用第一私钥和第一模数解密第二数据的操作类似,本申请实施例对此不再详细阐述。
[0162] 由于第三数据是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据,所以第二设备使用第二私钥和第二模数解密第三数据后得到的第四数据就是k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。
[0163] 值得注意的是,作为一种示例,t可以为大于或等于2且小于(k‑3)/2的整数,k可以为大于7的整数。在一些实施例中,k选1‑OT协议的计算复杂度可以为2k,这种情况下,本申请实施例提供的数据传输方法的计算复杂度为k+2t+3,所以在t大于或等于2且小于(k‑3)/2的情况下,本申请实施例提供的数据传输方法的计算复杂度必然小于k选1‑OT协议的计算复杂度。
[0164] 在本申请实施例中,第一设备生成的第一密钥对中的第一模数与第二设备生成的第二密钥对中的第二模数相同。第一设备使用第一密钥对中的第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,将k个第一数据划分为t个数据集,采用t选1‑不经意传输OT协议将t个数据集中的目标数据集发送给第二设备。第二设备接收到目标数据集后,使用第二密钥对中的第二公钥和第二模数加密目标数据集包括的原先属于k个第一数据中的第b个第一数据,得到第二数据,将第二数据发送给第一设备。第一设备接收到第二数据后,使用第一密钥对中的第一私钥和第一模数解密第二数据,得到第三数据,将第三数据发送给第二设备。第二设备接收到第三数据后,使用第二密钥对中的第二私钥和第二模数解密第三数据,得到第四数据。如此,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0165] 图4是本申请实施例提供的一种数据传输装置的结构示意图。该数据传输装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图6所示的计算机设备。参见图4,该装置包括:生成模块401、加密模块402、发送模块403、接收模块404和解密模块405。
[0166] 生成模块401,用于生成第一密钥对,第一密钥对包括第一公钥、第一私钥和第一模数,第一模数与第二设备生成的第二密钥对中的第二模数相同,第二密钥对包括第二公钥、第二私钥和第二模数;
[0167] 加密模块402,用于使用第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,k为大于或等于2的整数;
[0168] 发送模块403,用于将k个第一数据发送给第二设备;
[0169] 接收模块404,用于接收第二设备发送的第二数据,第二数据是第二设备使用第二公钥和第二模数对k个第一数据中的第b个第一数据进行加密得到的,b为小于或等于k的正整数;
[0170] 解密模块405,用于使用第一私钥和第一模数解密第二数据,得到第三数据;
[0171] 发送模块403,还用于将第三数据发送给第二设备。
[0172] 可选地,生成模块401用于:
[0173] 采用RSA算法生成第一密钥对。
[0174] 可选地,加密模块402用于:
[0175] 对于k个原始数据中的任意一个原始数据,根据第一公钥和第一模数,通过公式C1E=M1 mod N对这一个原始数据进行加密,得到一个第一数据,C1为这一个第一数据,M1为这一个原始数据,E为第一公钥,N为第一模数,mod为求余函数;
[0176] 可选地,解密模块405用于:
[0177] 根据第一私钥和第一模数,通过公式M2=C2D mod N对第二数据进行解密,得到第三数据,C2为第二数据,M2为第三数据,D为第一私钥。
[0178] 在本申请实施例中,由于k个第一数据是第一设备对k个原始数据加密得到,所以第一设备将k个第一数据发送给第二设备后,第二设备根据k个第一数据不能获知k个原始数据,从而可以保证第一设备的隐私性。由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。因而第一设备将第三数据发送给第二设备后,第二设备可以对第三数据解密来得到k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。综上,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0179] 图5是本申请实施例提供的一种数据传输装置的结构示意图。该数据传输装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图6所示的计算机设备。参见图5,该装置包括:生成模块501、加密模块502、发送模块503、接收模块504和解密模块505。
[0180] 生成模块501,用于生成第一密钥对,第一密钥对包括第一公钥、第一私钥和第一模数,第一模数与第二设备生成的第二密钥对中的第二模数相同,第二密钥对包括第二公钥、第二私钥和第二模数;
[0181] 加密模块502,用于使用第一公钥和第一模数加密k个原始数据中的每个原始数据,得到k个第一数据,k为大于或等于2的整数;
[0182] 发送模块503,用于将k个第一数据划分为t个数据集,采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备,t为大于或等于2且小于k的整数,目标数据集为包括k个第一数据中的第b个第一数据的数据集,b为小于或等于k的正整数;
[0183] 接收模块504,用于接收第二设备发送的第二数据,第二数据是第二设备使用第二公钥和第二模数对目标数据集包括的原先属于k个第一数据中的第b个第一数据进行加密得到的;
[0184] 解密模块505,用于使用第一私钥和第一模数解密第二数据,得到第三数据;
[0185] 发送模块506,还用于将第三数据发送给第二设备。
[0186] 可选地,k为大于7的整数,t为大于或等于2且小于(k‑3)/2的整数。
[0187] 可选地,生成模块501用于:
[0188] 采用RSA算法生成第一密钥对。
[0189] 可选地,加密模块502用于:
[0190] 对于k个原始数据中的任意一个原始数据,根据第一公钥和第一模数,通过公式C1E=M1 mod N对这一个原始数据进行加密,得到一个第一数据,C1为这一个第一数据,M1为这一个原始数据,E为第一公钥,N为第一模数,mod为求余函数;
[0191] 可选地,解密模块505用于:
[0192] 根据第一私钥和第一模数,通过公式M2=C2D mod N对第二数据进行解密,得到第三数据,C2为第二数据,M2为第三数据,D为第一私钥。
[0193] 在本申请实施例中,由于第一设备是采用t选1‑OT协议将t个数据集中的目标数据集发送给第二设备,所以在第二设备得到目标数据集时,第一设备无法获知第二设备得到的是t个数据集中的哪一个数据集,且第二设备除了已得到的目标数据集之外无法获知t个数据集中的其他数据集。并且,由于目标数据集包括的第一数据都是对原始数据加密得到的,所以第一设备将目标数据集发送给第二设备,第二设备根据目标数据集不能获知原始数据。如此,可以保护双方隐私。由于第二数据是第二设备对k个第一数据中的第b个第一数据加密得到,所以第二设备将第二数据发送给第一设备后,第一设备根据第二数据不能获知第二数据是对k个第一数据中的哪个第一数据加密得到的,如此第一设备也就不能获知第二设备想要得到的是k个原始数据中的哪个原始数据,从而可以保证第二设备的隐私性。由于第一设备的第一密钥对中的第一模数和第二设备的第二密钥对中的第二模数相同,所以第一设备可以使用第一密钥对中的第一私钥和第一模数,来对经过第一设备和第二设备的两次加密(即将k个原始数据中的第b个原始数据,先使用第一密钥对中的第一公钥和第一模数加密,再使用第二密钥对中的第二公钥和第二模数加密)得到的第二数据进行解密,对第二数据解密得到的第三数据实际上就是使用第二公钥和第二模数对k个原始数据中的第b个原始数据加密得到的数据。因而第一设备将第三数据发送给第二设备后,第二设备可以对第三数据解密来得到k个原始数据中的第b个原始数据。如此,可以保证第二设备获取到的原始数据的正确性。综上,第一设备和第二设备可以在保证隐私性和正确性的情况下进行数据传输,且此数据传输过程的计算复杂度较小,可以节省处理资源。
[0194] 需要说明的是:上述实施例提供的数据传输装置在数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0195] 上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
[0196] 上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
[0197] 图6为本申请实施例提供的一种计算机设备的结构示意图。如图6所示,计算机设备6包括:处理器60、存储器61以及存储在存储器61中并可在处理器60上运行的计算机程序62,处理器60执行计算机程序62时实现上述实施例中的数据传输方法中由第一设备执行的步骤。
[0198] 计算机设备6可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备6可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备6的类型。本领域技术人员可以理解,图6仅仅是计算机设备6的举例,并不构成对计算机设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
[0199] 处理器60可以是中央处理单元(Central Processing Unit,CPU),处理器60还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field‑Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
[0200] 存储器61在一些实施例中可以是计算机设备6的内部存储单元,比如计算机设备6的硬盘或内存。存储器61在另一些实施例中也可以是计算机设备6的外部存储设备,比如计算机设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器61还可以既包括计算机设备6的内部存储单元也包括外部存储设备。存储器61用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,比如计算机程序的程序代码等。存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
[0201] 本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
[0202] 本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
[0203] 本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
[0204] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read‑Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD‑ROM(Compact Disc Read‑Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
[0205] 应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
[0206] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0207] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0208] 在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0209] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0210] 以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。