CN103001957A - 一种密钥生成方法、设备及服务器 - Google Patents

一种密钥生成方法、设备及服务器 Download PDF

Info

Publication number
CN103001957A
CN103001957A CN2012104890408A CN201210489040A CN103001957A CN 103001957 A CN103001957 A CN 103001957A CN 2012104890408 A CN2012104890408 A CN 2012104890408A CN 201210489040 A CN201210489040 A CN 201210489040A CN 103001957 A CN103001957 A CN 103001957A
Authority
CN
China
Prior art keywords
equipment
server
array
random
random number
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.)
Granted
Application number
CN2012104890408A
Other languages
English (en)
Other versions
CN103001957B (zh
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.)
Age Of Security Polytron Technologies Inc
Guangzhou University
Original Assignee
GUANGDONG CERTIFICATE AUTHORITY
Guangzhou University
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 GUANGDONG CERTIFICATE AUTHORITY, Guangzhou University filed Critical GUANGDONG CERTIFICATE AUTHORITY
Priority to CN201210489040.8A priority Critical patent/CN103001957B/zh
Publication of CN103001957A publication Critical patent/CN103001957A/zh
Application granted granted Critical
Publication of CN103001957B publication Critical patent/CN103001957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明涉及密钥协商相关技术领域,特别是涉及一种密钥生成方法、设备及服务器。该密钥生成方法包括:第一设备和第二设备分别选择多个随机数,计算多个相关数;发送一部分的随机数和一部分的相关数到第一服务器,以及发送另一部分的随机数和相关数到第二服务器;第一服务器和第二服务器分别根据接收到的随机数和相关数进行计算得到服务器参数;第一设备、第二设备通过第一服务器和第二服务器执行安全多方计算协议进行模指数运算得到设备参数;第一设备和第二设备采用服务器参数和设备参数的组合作为密钥。本发明的密钥生成方法,使得两个计算能力很弱的设备,在服务器不可信的情形下,也能借助服务器实现模指数的外包计算,得到一个共同的密钥。

Description

一种密钥生成方法、设备及服务器
技术领域
本发明涉及密钥协商相关技术领域,特别是涉及一种密钥生成方法、设备及服务器。
背景技术
密钥协商是一个基本的密码学协议,最早的有效密钥协商协议是Diffie-Hellman协议。Diffie和Hellman已经在不安全的信道上研究了密钥交换的问题。密钥协商的目标是在两个具有计算能力的参与者中间安全交换一个密钥,该密钥能够用来作为一个密码系统的加密和解密密钥。
Diffie-Hellman密钥协商协议在离散对数问题是难处理的假设下,这个方案是安全的。方案在Zp中运行,其中p是一个素数。假设g是Zp的一个生成元,g,p都是公开的。在这个协议中,因为A和B都有较强的计算能力,所以他们能够自己计算模指数。Diffie-Hellman密钥协商协议
a)A随机选择一个数α∈[0,p-2];
b)A计算gαmodp,并把它发送给B;
c)B随机选择一个数β∈[0,p-2];
d)B计算gβmodp,并把它发送给A;
e)A计算K=(gβ)αmodp,B计算K=(gα)βmodp。
则A与B获得相同的密钥K,并采用该密钥K对A与B之间的通信进行加密。
然而在不安全的环境,特别是在云计算环境中,如果A和B的计算能力太弱而无法实现模指数的计算,它们不得不求助于云计算服务器来计算模指数。把计算任务外包给一个不诚实的云计算服务商,则用户可能得到不诚实的外包服务。在一个外包计算任务的方案中,安全性应该由如下的两个方面构成:(1)私有性。一旦用户提供一个询问,服务器能使用该询问计算一个结果。对于服务器和外部攻击者,询问和结果都是在加密或隐藏的形式。(2)正确性。服务器为用户需求所计算的结果是正确的,而且用户能够有效地验证服务器返回的计算结果的正确性。除此之外,用户正确的验证应该比直接地计算结果更有效。
但是,云计算服务器执行Diffie-Hellman密钥协商协议要求A和B把他们的密钥α,β以及密钥K泄露给云计算服务器。如果用户对于抵抗内部和外部攻击者的安全性非常敏感,则在云计算中执行传统的Diffie-Hellman密钥协商协议是不可行的。
发明内容
基于此,有必要针对两个计算能力很弱的用户在服务器不诚实的情形下无法安全实现密钥协商的技术问题,提供一种密钥生成方法。
一种密钥生成方法,包括:
获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
计算多个第一相关数,得到包括多个第一相关数的第一相关数组,其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
根据第一随机数计算得到第一设备中间参数,并发送给第二设备;
接收第二设备发送的第二设备中间参数,所述第二设备中间参数由第二设备随机获取的多个第二随机数计算得到;
将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
接收第一服务器发送的第一服务器参数,其中,所述第一服务器参数由第一服务器对第一随机数组第一部分、第一相关数组第二部分进行计算得到;
接收第二服务器发送的第二服务器参数,其中,所述第二服务器参数由第二服务器对第一随机数组第二部分和第一相关数组第一部分进行计算得到;
通过第一服务器和第二服务器根据第一相关数及第二设备中间参数执行安全多方计算协议进行模指数运算得到第一设备参数,并发送到第二设备;
接收第二设备发送的第二设备参数,其中,所述第二设备参数由第二设备通过第一服务器和第二服务器根据第二相关数及第一设备中间参数执行安全多方计算协议进行模指数运算得到,所述第二相关数由第二设备根据第二随机数与第二根随机数计算得到,所述第二根随机数由第二设备随机选择;
采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数生成密钥。
在其中一个实施例中,第一相关数组第一部分中的任意一个第一相关数,由第一根随机数及第一随机数组第一部分中的一个第一随机数计算得到;第一相关数组第二部分中的任意一个第一相关数,由第一根随机数及第一随机数组第二部分中的一个第一随机数计算得到。
在其中一个实施例中,具体包括:
初始化选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
获取一个随机数α作为第一根随机数,获取两个随机数α1和α1'作为第一随机数,得到包括α1和α1'的第一随机数组,其中,α,α1,α1'∈[0,p-2];
计算两个第一相关数α2和α2',得到包括α2和α2'的第一相关数组,其中,α2=α-α1mod(p-1),α2'=α-α1'mod(p-1);
计算两个第一设备中间参数
Figure BDA00002466232600031
Figure BDA00002466232600032
Figure BDA00002466232600033
Figure BDA00002466232600034
发给第二设备;
接收第二设备发送的两个第二设备中间参数
Figure BDA00002466232600035
Figure BDA00002466232600036
其中,β1和β1'为第二设备随机获取的两个第二随机数,β1,β1'∈[0,p-2];
将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,第一随机数组第一部分为α1,第一随机数组第二部分为α1',将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,第一相关数组第一部分为α2,第一相关数组第二部分为α2',将α1和α2'发送给第一服务器,将α2和α1'发送给第二服务器;
接收由第一服务器发送的第一服务器参数K11和K22',其中,K11由第一服务器根据
Figure BDA00002466232600037
得到,K22'由第一服务器根据
Figure BDA00002466232600038
计算得到,其中,β2'由第二设备根据β2'=β-β1'mod(p-1)得到,β为第二设备随机获取的第二根随机数,β∈[0,p-2];
接收由第二服务器发送的第二服务器参数K11'和K22,其中,K11'由第二服务器根据
Figure BDA00002466232600041
计算得到,K22由第二服务器根据
Figure BDA00002466232600042
计算得到,其中,β2由第二设备根据β2=β-β1mod(p-1)得到;
与第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,分别得到两个第一设备参数K21和K21',其中,
Figure BDA00002466232600043
Figure BDA00002466232600044
并发送K21和K21'给第二设备;
接收第二设备发送的两个第二设备参数K12和K12',K12和K12'由第二设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算得到,其中, K 12 = ( g α 1 ) β 2 mod p , K 12 ′ = ( g α 1 ′ ) β 2 ′ mod p ;
如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥。
一种密钥生成设备,包括随机数选择模块、相关数计算模块、第一设备中间参数计算模块、第二设备中间参数接收模块、服务器发送模块、第一服务器参数接收模块、第二服务器参数接收模块、设备安全多方计算协议执行模块、第二设备参数接收模块和密钥生成模块:
随机数选择模块,用于获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
相关数计算模块,用于计算多个第一相关数,得到包括多个第一相关数的第一相关数组;其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
第一设备中间参数计算模块,用于根据第一随机数计算得到第一设备中间参数,并发送给第二设备;
第二设备中间参数接收模块,用于接收第二设备发送的第二设备中间参数,所述第二设备中间参数由第二设备随机获取的多个第二随机数计算得到;
服务器发送模块,用于将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
第一服务器参数接收模块,用于接收第一服务器发送的第一服务器参数,其中,所述第一服务器参数由第一服务器对第一随机数组第一部分、第一相关数组第二部分进行计算得到;
第二服务器参数接收模块,用于接收第二服务器发送的第二服务器参数,其中,所述第二服务器参数由第二服务器对第一随机数组第二部分和第一相关数组第一部分进行计算得到;
设备安全多方计算协议执行模块,用于通过第一服务器和第二服务器根据第一相关数及第二设备中间参数执行安全多方计算协议进行模指数运算得到第一设备参数,并发送到第二设备;
第二设备参数接收模块,用于接收第二设备发送的第二设备参数,其中,所述第二设备参数由第二设备通过第一服务器和第二服务器根据第二相关数及第一设备中间参数执行安全多方计算协议进行模指数运算得到,所述第二相关数由第二设备根据第二随机数与第二根随机数计算得到,所述第二根随机数由第二设备随机选择;
密钥生成模块,用于采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数生成密钥。
一种密钥生成方法,包括:
接收由第一设备生成的第一随机数组第一部分和第一相关数组第二部分;
接收由第二设备生成的第二随机数组第一部分和第二相关数第二部分组;
对接收到的第一随机数第一部分、第一相关数第二部分、第二随机数第一部分和第二相关数第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
与第一设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第一设备参数,所述第一设备参数与第一服务器参数用于第一设备生成密钥;
与第二设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第二设备参数,所述第二设备参数与第一服务器参数用于第二设备生成密钥。
在其中一个实施例中,具体包括:
选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
接收由第一设备生成的第一随机数组第一部分α1和第一相关数组第二部分α2';
接收由第二设备生成的第二随机数组第一部分β1和第二相关数组第二部分β2';
计算第一服务器参数
Figure BDA00002466232600061
Figure BDA00002466232600062
并把K11和K22'发送给第一设备和第二设备;
与第一设备和第二服务器共同执行安全多方计算协议进行模指数运算,以生成两个第一设备参数K21和K21',其中,
Figure BDA00002466232600063
Figure BDA00002466232600064
其中,
Figure BDA00002466232600065
Figure BDA00002466232600066
为第一设备从第二设备接收的两个第二设备中间参数,α2和α2'由第一设备根据α2=α-α1mod(p-1)和α2'=α-α1'mod(p-1)计算得到,α1和α1'为第一设备随机选择的第一随机数,α为第一设备随机选择的第一根随机数,α,α1,α1'∈[0,p-2];
与第二设备和第二服务器共同执行安全多方计算协议进行模指数运算,以生成两个第二设备参数K12和K12',其中,
Figure BDA00002466232600067
Figure BDA00002466232600068
其中,
Figure BDA00002466232600069
Figure BDA000024662326000610
为第二设备从第一设备接收的两个第一设备中间参数,β2和β2'由第二设备根据β2=β-β1mod(p-1)和β2'=β-β1'mod(p-1)得到,β1和β1'为第二设备随机选择的第二随机数,β为第二设备随机选择的第二根随机数,β1,β1'∈[0,p-2]。
一种密钥生成服务器,包括第一设备接收模块、第二设备接收模块、第一服务器参数生成模块、协调第一设备安全多方计算协议执行模块和协调第二设备安全多方计算协议执行模块:
第一设备接收模块,用于接收由第一设备生成的第一随机数组第一部分和第一相关数组第二部分;
第二设备接收模块,用于接收由第二设备生成的第二随机数组第一部分和第二相关数组第二部分;
第一服务器参数生成模块,用于对接收到的第一随机数组第一部分、第一相关数组第二部分、第二随机数组第一部分和第二相关数组第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
协调第一设备安全多方计算协议执行模块,用于与第一设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第一设备参数,所述第一设备参数与第一服务器参数用于第一设备生成密钥;
协调第二设备安全多方计算协议执行模块,用于与第二设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第二设备参数,所述第二设备参数与第一服务器参数用于第二设备生成密钥。
一种密钥生成方法,包括:
第一设备获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
计算多个第一相关数,得到包括多个第一相关数的第一相关数组,其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
第二设备获取一个随机数作为第二根随机数,获取多个随机数作为第二随机数,得到包括多个第二随机数的第二随机数组;
计算多个第二相关数,得到包括多个第二相关数的第二相关数组,其中,所述每个第二相关数由一个第二随机数与第二根随机数计算得到;
第一设备将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
第二设备将第二随机数组分为第二随机数组第一部分和第二随机数组第二部分,将第二相关数组分为第二相关数组第一部分和第二相关数组第二部分,将第二随机数组第一部分和第二相关数组第二部分发送给第一服务器,将第二随机数组第二部分和第二相关数组第一部分发送给第二服务器;
第一服务器对接收到的第一随机数组第一部分、第一相关数组第二部分、第二随机数组第一部分和第二相关数组第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
第二服务器对接收到的第一随机数组第二部分、第一相关数组第一部分、第二随机数组第二部分和第二相关数组第一部分进行计算得到第二服务器参数,并发送给第一设备和第二设备;
第一设备通过第一服务器和第二服务器执行安全多方计算协议进行模指数运算得到第一设备参数,并发送给第二设备;
第二设备通过第一服务器和第二服务器执行安全多方计算协议进行模指数运算得到第二设备参数,并发送给第一设备;
第一设备和第二设备采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数的组合作为密钥。
在其中一个实施例中:
第一相关数组第一部分中的任意一个第一相关数,由第一根随机数及第一随机数组第一部分中的一个第一随机数计算得到,第一相关数组第二部分中的任意一个第一相关数,由第一根随机数及第一随机数组第二部分中的一个第一随机数计算得到;
第二相关数组第一部分中的任意一个第二相关数,由第二根随机数及第二随机数组第一部分中的一个第二随机数计算得到,第二相关数组第二部分中的任意一个第二相关数,由第二根随机数及第二随机数第二部分中的一个第二随机数计算得到。
在其中一个实施例中,具体包括:
初始化选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
第一设备获取一个随机数α作为第一根随机数,获取两个随机数α1和α1'作为第一随机数,得到包括α1和α1'的第一随机数组,其中,α,α1,α1'∈[0,p-2],计算两个第一相关数α2和α2',得到包括α2和α2'的第一相关数组,其中,α2=α-α1mod(p-1),α2'=α-α1'mod(p-1),计算两个第一设备中间参数
Figure BDA00002466232600081
Figure BDA00002466232600082
Figure BDA00002466232600083
Figure BDA00002466232600084
发给第二设备;
第二设备获取一个随机数β作为第二根随机数,获取两个随机数β1和β1'作为第二随机数,得到包括β1和β1'的第二随机数组,其中,β,β1,β1'∈[0,p-2],计算两个第二相关数β2和β2',得到包括β2和β2'的第二相关数组其中,β2=β-β1mod(p-1),β2'=β-β1'mod(p-1),计算两个第二设备中间参数
Figure BDA00002466232600091
Figure BDA00002466232600093
发给第一设备;
第一设备将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,第一随机数组第一部分为α1,第一随机数组第二部分为α1',将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,第一相关数组第一部分为α2,第一相关数组第二部分为α2',将α1和α2'发送给第一服务器,将α2和α1'发送给第二服务器;
第二设备将第二随机数组分为第二随机数组第一部分和第二随机数组第二部分,第二随机数组第一部分为β1,第二随机数组第二部分为β1',将第二相关数组分为第二相关数组第一部分和第二相关数组第二部分,第二相关数组第一部分为β2,第二相关数组第二部分为β2',将β1和β2'发送给第一服务器,将β2和β1'发送给第二服务器;
第一服务器计算第一服务器参数
Figure BDA00002466232600096
第二服务器计算第二服务器参数
Figure BDA00002466232600097
Figure BDA00002466232600098
然后第一服务器将K11和K22'发送给第一设备和第二设备,第二服务器将K11'和K22发送给第一设备和第二设备;
第一设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,得到两个第一设备参数K21和K21',其中,
Figure BDA00002466232600099
K 12 ′ = ( g β 1 ′ ) α 2 ′ mod p ;
第二设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,得到两个第二设备参数K12和K12',其中,
Figure BDA000024662326000911
K 12 ′ = ( g α 1 ′ ) β 2 ′ mod p ;
第一设备发送K21和K21'给第二设备,第二设备发送K12和K12'给第一设备;
第一设备验证如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥;
第二设备验证如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥。
在其中一个实施例中,所述第一服务器与第二服务器通信隔断。以避免第一服务器与第二服务器之间互相通信交互第一设备与第二设备的安全信息。
上述的安全多方计算协议可以使用S.Hohenberger和A.Lysyanskaya提出的模指数外包计算协议。
本发明的密钥生成方法,在密钥生成的过程中,两个不诚实的服务器只能获得密钥生成过程中的部分信息,两个服务器的任何一方都不可能获得完整的秘密信息,从而保证密钥生成的安全性。因此两个计算能力很弱的设备用户,即使在服务器不可信的情形下,也能借助服务器实现模指数的外包计算,得到一个共同的密钥用于信息的加密和解密。
附图说明
图1为本发明的密钥生成系统100的方框示意图;
图2为由本发明的密钥生成设备和密钥生成服务器执行的密钥生成方法的流程图;
图3为本发明的密钥生成设备300的方框示意图;
图4为本发明的密钥服务器400的方框示意图;
图5为由本发明的密钥生成设备和密钥生成服务器执行的密钥生成方法的信息交互图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1示出了根据本发明的密钥生成系统100的方框示意图。如图1所示,所述密钥生成系统100包括第一设备101、第二设备102、第一服务器103和第二服务器104。
这里要说明的是,所述第一设备101、第二设备102、第一服务器103和第二服务器104应该包括本文中所公开的各种变型。
如图2示出了根据本发明的由本发明的密钥生成设备和密钥生成服务器执行的密钥生成方法的流程图。
如图2所示,结合图2的密钥生成系统100
在步骤S201,初始化选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g,p,g是公开的,设定一个离线的快速计算指数算法Rand1,然后转到步骤S102;
算法Rand1被一个素数p,一个生成元
Figure BDA00002466232600111
和一些其他的值初始化,它的每一次运算都产生一个独立的、随机的对(b,gbmodp),其中b∈[0,p-2]。一个可以替换的方法是使用一个可信任的服务器去提前多次执行算法Rand1,得到一个由独立、随机的对组成的表格,然后嵌入到要调用的设备的内存中。设备每一次运行Rand1,都输出表中的一个值。
在步骤S202,第一设备101选择一个随机数α作为第一根随机数,选择两个随机数α1和α1'作为第一随机数,得到包括α1和α1'的第一随机数组,其中α,α1,α1'∈[0,p-2],计算两个第一相关数α2和α2',得到包括α2和α2'的第一相关数组,其中α2=α-α1mod(p-1),α2'=α-α1'mod(p-1),然后运行Rand1两次,计算
Figure BDA00002466232600112
Figure BDA00002466232600113
Figure BDA00002466232600114
Figure BDA00002466232600115
发给第二设备102;
在步骤S203,第二设备102选择一个随机数β作为第二根随机数,选择两个随机数β1和β1'作为第二随机数,得到包括β1和β1'的第二随机数组,其中β,β1,β1'∈[0,p-2],计算两个第二相关数β2和β2',得到包括β2和β2'的第二相关数组,其中β2=β-β1mod(p-1),β2'=β-β1'mod(p-1),计算
Figure BDA00002466232600116
Figure BDA00002466232600117
Figure BDA00002466232600118
Figure BDA00002466232600119
发给第一设备101;
在步骤S204,第一设备101把两个第一随机数组分为第一随机数组第一部分α1和第一随机数组第二部分α1',把两个第一相关数组分为第一相关数组第一部分α2和第一相关数组第二部分α2',把第一随机数组第一部分α1和第一相关数组第二部分α2'发送给第一服务器103,把第一随机数组第二部分α1'和第一相关数组第一部分α2发送给第二服务器104,由于α2'仅与α1'及α有关,α2仅与α1及α有关,且第一服务器103和第二服务器104均不知道α,因此,第一服务器103和第二服务器104分别拿到第一设备101的部分秘密信息;
在步骤S205,第二设备102把两个第二随机数组分为第二随机数组第一部分β1和第二随机数组第二部分β1',把两个第二相关数组分为第二相关数组第一部分β2和第二相关数组第二部分β2',把第二随机数组第一部分β1和第二相关数组第二部分β2'发送给第一服务器103,把第二随机数组第二部分β1'和第二相关数组第一部分β2发送给第二服务器104,由于β2'仅与β1'及β有关,β2仅与β1及β有关,由于第一服务器103和第二服务器104均不知道β,因此,第一服务器103和第二服务器104分别拿到第二设备104的部分秘密信息;
在步骤S206,第一服务器103计算第一服务器参数
Figure BDA00002466232600121
Figure BDA00002466232600122
第二服务器104计算第二服务器参数
Figure BDA00002466232600123
Figure BDA00002466232600124
然后第一服务器103把K11和K22'发送给第一设备101和第二设备102,第二服务器104把K11'和K22发送给第一设备101和第二设备102;
在步骤S207,第一设备101、第一服务器103和第二服务器104共同执行安全多方计算协议进行模指数运算两次,分别得到两个第一设备参数K21和K21',其中K21根据α2
Figure BDA00002466232600125
生成,K21'根据α2'和
Figure BDA00002466232600126
生成;
在步骤S208,第二设备102、第一服务器103和第二服务器104共同执行安全多方计算协议进行模指数运算两次,分别得到两个第二设备参数K12和K12',其中K12根据β2
Figure BDA00002466232600127
生成,K12'根据β2'和
Figure BDA00002466232600128
生成;
在步骤S209,第一设备101验证K21和K21'的正确性,第二设备102验证K12和K12'的正确性。如果任何一个验证出错,则输出“错误”。否则,第一设备101发送K21和K21'给第二设备102,第二设备102发送K12和K12'给第一设备101;
在步骤S210,第一设备101和第二设备102各自验证K11K12K21K22=K11'K12'K21'K22'是否成立,如果不成立,输出“错误”,否则,第一设备101和第二设备102得到密钥K=K11K12K21K22
在后续第一设备101与第二设备102之间的通信,均采用各自的密钥进行加密和解密,由于两个设备的密钥相同,则第一设备101和第二设备102能实现正常通信。
必须指出的是,在上述步骤S202和S203中,采用两个第一随机数作为第一随机数组、采用两个第一相关数作为第一相关数组、采用两个第二随机数作为第二随机数组以及采用两个第二相关数作为第二相关数组均是出于算法简单的考虑,实际上可以采用多于两个的第一随机数、第一相关数、第二随机数和第二相关数进行组合,只要满足以下条件,即:“第一相关数组第一部分中的任意一个第一相关数,由第一根随机数及第一随机数组第一部分中的一个第一随机数计算得到,第一相关数组第二部分中的任意一个第一相关数,由第一根随机数及第一随机数组第二部分中的一个第一随机数计算得到;第二相关数组第一部分中的任意一个第二相关数,由第二根随机数及第二随机数组第一部分中的一个第二随机数计算得到,第二相关数组第二部分中的任意一个第二相关数,由第二根随机数及第二随机数第二部分中的一个第二随机数计算得到。”则第一服务器和第二服务器仅获得第一设备和第二设备的部分信息,从而保证安全性。当采用多于两个的第一随机数、第一相关数、第二随机数和第二相关数时,需要对后续步骤做相应的修改。本领域技术人员在经过有限次计算后可以得到相应的修改步骤。
在上述步骤S207和S208中,安全多方计算协议可以使用S.Hohenberger和A.Lysyanskaya提出的模指数外包计算协议,即
Figure BDA00002466232600131
K 21 ′ ← EXP ( α 2 ′ , g β 1 ′ ) , K 12 ← EXP ( β 2 , g α 1 ) , K 12 ′ ← EXP ( β 2 ′ , g α 1 ′ ) . 该模指数外包计算协议具体如下:
通过使用快速的离线指数计算和不可信的辅助服务器计算的预处理过程,S.Hohenberger和A.Lysyanskaya提出了一个使用不信任指数计算盒子U'=(U1',U2')去计算和检测模指数运算的外包计算协议,其中一旦协议开始,则U1'和U2'就不能交互。
在这个不信任的程序模型中,攻击者E为U1'和U2'写好代码,并把它们给诚实的用户T。如果是云计算环境中,U1'和U2'就是两个不信任的云计算服务器,而T就是一个用户。在本实施例中,第一服务器103和第二服务器104即所述的两个不可信的云计算服务器U1'和U2',而第一设备101和第二设备102即所述的诚实的用户T。
在该协议中,假设存在一个算法Rand1计算(b,gbmodp)。算法Rand1被一个素数p,一个生成元
Figure BDA00002466232600133
和一些其他的值初始化,它的每一次都产生一个独立的、随机的(b,gbmodp),其中b∈[0,p-2]。一个可以替换的方法是使用一个可信任的服务器去提前计算一个由独立、随机的对组成的表格,然后嵌入到T的内存中。每一次激活Rand1,它都输出表中的一个值。对于Rand1,至关重要的是它的输出与真实的随机数应该是不可区分的。
模指数外包计算算式:EXP(a,u)→uamodp,该算式表示,输入两个参数(a,u),经过运算后,输出uamodp,具体算法如下:
初始化:p,q是两个大素数,Zp *的阶是q。
1:T运行Rand1两次,输出(α,gαmodp),(β,gβmodp),其中v=gα,vb=gβ,且b=β/α。
2:T进行两次分解,一个分解是uα=(vw)α=vαwα=vbvcwα,其中w=u/v,c=α-b;另一个分解是vbvcwα=vb(fh)cwd+e=vbfchcwdwe,其中h=v/f,e=α-d。
3:对于每个程序,T固定两个测试询问运行Rand1得到
Figure BDA00002466232600141
Figure BDA00002466232600142
第一次测试询问,T询问U1,U1(d,w)→wd,U1(c,f)→fc
Figure BDA00002466232600143
U 1 ( t 2 / r 2 , g r 2 ) → g t 2 .
第二次测试询问,T询问U2,U2(e,w)→we,U2(c,h)→hc
Figure BDA00002466232600145
U 2 ( t 2 / r 2 , g r 2 ) → g t 2 .
4:T检查给U1和U2的测试询问是不是产生正确的输出(即
Figure BDA00002466232600147
Figure BDA00002466232600148
)。如果不成立,则输出“错误”,否则,他通过如下等式计算出uα
vbfchcwdwe=vb+cwd+e=vαwα=(vw)α=uα
作为一个例子,一种密钥协商协议:
初始化:Zp是一个有限域,p是一个素数,g是Zp的一个生成元。p,g是公开的。
1:用户A选择随机数α,α1,α1'∈[0,p-2],计算α2=α-α1mod(p-1),α2'=α-α1'mod(p-1),然后运行Rand1两次,得到并送
Figure BDA000024662326001410
给用户B;
2:用户B选择随机数β,β1,β1'∈[0,p-2],计算β2=β-β1mod(p-1),β2'=β-β1'mod(p-1),然后运行Rand1两次,得到
Figure BDA000024662326001411
并送
Figure BDA000024662326001412
Figure BDA000024662326001413
给用户A;
3:用户A送(α12')给U1,(α21')给U2
4:用户B送(β12')给U1,(β21')给U2
5:U1计算 K 11 = g α 1 β 1 mod p K 22 ′ = g α 2 ′ β 2 ′ mod p , U2计算 K 11 ′ = g α 1 ′ β 1 ′ mod p
Figure BDA00002466232600154
然后U1送K11,K22'给A和B,U2送K11',K22给A和B。
6:用户A和U1,U2运行模指数的外包计算两次,分别得到K21和K21',其中 K 21 ← EXP ( α 2 , g β 1 ) , K 21 ′ ← EXP ( α 2 ′ , g β 1 ′ ) .
7:用户B和U1,U2运行模指数的外包计算两次,分别得到K12和K12',其中 K 12 ← EXP ( β 2 , g α 1 ) , K 12 ′ ← EXP ( β 2 ′ , g α 1 ′ ) .
8:A验证K21和K21'的正确性,B验证K12和K12'的正确性。如果任何一个验证出错,则输出“错误”。否则,A发送K21和K21'给B,B发送K12和K12'给A。
9:A和B各自验证K11K12K21K22=K11'K12'K21'K22'是否成立,如果不成立,输出“错误”,否则双方得到一个共同的密钥K=K11K12K21K22
图3示出了根据本发明的密钥生成设备300的方框示意图。如图3所示,密钥生成设备300包括随机数选择模块301、相关数计算模块302、第一设备中间参数计算模块303、第二设备中间参数接收模块304、服务器发送模块305、第一服务器参数接收模块306、第二服务器参数接收模块307、设备安全多方计算协议执行模块308、第二设备参数接收模块309和密钥生成模块310:
随机数选择模块301,用于选择一个随机数作为第一根随机数,选择多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
相关数计算模块302,用于计算多个第一相关数,得到包括多个第一相关数的第一相关数组,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
第一设备中间参数计算模块303,用于根据第一随机数计算得到第一设备中间参数,并发送给第二设备;
第二设备中间参数接收模块304,用于接收第二设备发送的第二设备中间参数,所述第二设备中间参数由第二设备随机选择的多个第二随机数计算得到;
服务器发送模块305,用于把第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,把第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,把第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,把第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
第一服务器参数接收模块306,用于接收第一服务器发送的第一服务器参数,所述第一服务器参数由第一服务器对接收到的第一随机数组第一部分、第一相关数组第二部分进行计算得到;
第二服务器参数接收模块307,用于接收第二服务器发送的第二服务器参数,所述第二服务器参数由第二服务器对接收到的第一随机数组第二部分和第一相关数组第一部分进行计算得到;
设备安全多方计算协议执行模块308,用于通过第一服务器和第二服务器根据第一相关数及第二设备中间参数执行安全多方计算协议进行模指数运算得到第一设备参数,并发送到第二设备;
第二设备参数接收模块309,用于接收第二设备发送的第二设备参数,所述第二设备参数由第二设备通过第一服务器和第二服务器根据第二相关数及第一设备中间参数执行安全多方计算协议进行模指数运算得到,所述第二相关数由第二设备根据第二随机数与第二根随机数计算得到,所述第二根随机数由第二设备随机选择;
密钥生成模块310,用于采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数的组合作为密钥。
图4示出了根据本发明的密钥生成服务器400的方框示意图。
一种密钥生成服务器400,包括第一设备接收模块401、第二设备接收模块402、第一服务器参数生成模块403、协调第一设备安全多方计算协议执行模块404和协调第二设备安全多方计算协议执行模块405:
第一设备接收模块401,用于从第一设备接收由第一设备生成的第一随机数组第一部分和第一相关数组第二部分;
第二设备接收模块402,用于从第二设备接收由第二设备生成的第二随机数组第一部分和第二相关数组第二部分;
第一服务器参数生成模块403,用于对接收到的第一随机数组第一部分、第一相关数组第二部分、第二随机数组第一部分和第二相关数组第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
协调第一设备安全多方计算协议执行模块404,用于与第一设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第一设备参数,所述第一设备参数与第一服务器参数用于第一设备生成密钥;
协调第二设备安全多方计算协议执行模块405,用于与第二设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第二设备参数,所述第二设备参数与第一服务器参数用于第二设备生成密钥。
如图5示出了根据本发明的由本发明的密钥生成设备和密钥生成服务器执行的密钥生成方法的信息交互图。
步骤S510:第一设备101给第二设备102信息
Figure BDA00002466232600171
步骤S520:第二设备102给第一设备101信息
Figure BDA00002466232600172
步骤S531:第一设备101给第一服务器103信息(α12');
步骤S532:第一设备101给第二服务器104信息(α21');
步骤S541:第二设备102给第一服务器103信息(β12');
步骤S542:第二设备102给第二服务器104信息(β21');
步骤S551:第一服务器103给第一设备101信息K11,K22';
步骤S552:第一服务器103给第二设备102信息K11,K22';
步骤S553:第二服务器104给第一设备101信息K11',K22
步骤S554:第二服务器104给第二设备102信息K11',K22
步骤S560:在第一设备101、第一服务器103和第二服务器104中执行模指数的外包计算两次。第一服务器103和第二服务器104之间的虚线表示两个服务器没有交互;
步骤S570:在第二设备102、第一服务器103和第二服务器104中执行模指数的外包计算两次。第一服务器103和第二服务器104之间的虚线表示两个服务器没有交互;
步骤S581:第一设备101给第二设备102信息K21和K21';
步骤S582:第二设备102给第一设备101信息K12和K12';
步骤S590:第一设备101计算K1=K11K12K21K22,第二设备102各自计算K2=K11K12K21K22
对于第一服务器103和第二服务器104来说,第一服务器103缺少K11',K22,而第二服务器104缺少K11,K22',因此均无法计算出K1或者K2,从而保证了密钥生成的安全性。
作为一种具体的应用,两个服务器103和104可以为云服务器,云服务器的计算能力较强,但具有不安全性,特别适合本发明所提供的密钥生成方法。本发明提供的密钥生成方法,使得计算能力很弱的第一设备和第二设备得到一个公共的密钥K,但是云服务器没有得到K的任何信息。在密钥生成的过程中,两个不可信的服务器只能获得密钥生成过程中的部分信息,在两个服务器不能串通,即两个服务器隔绝通信的条件下,任何一方都不可能获得完整的秘密信息,从而保证密钥生成的安全性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种密钥生成方法,其特征在于,包括:
获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
计算多个第一相关数,得到包括多个第一相关数的第一相关数组,其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
根据第一随机数计算得到第一设备中间参数,并发送给第二设备;
接收第二设备发送的第二设备中间参数,所述第二设备中间参数由第二设备随机获取的多个第二随机数计算得到;
将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
接收第一服务器发送的第一服务器参数,其中,所述第一服务器参数由第一服务器对第一随机数组第一部分、第一相关数组第二部分进行计算得到;
接收第二服务器发送的第二服务器参数,其中,所述第二服务器参数由第二服务器对第一随机数组第二部分和第一相关数组第一部分进行计算得到;
通过第一服务器和第二服务器根据第一相关数及第二设备中间参数执行安全多方计算协议进行模指数运算得到第一设备参数,并发送到第二设备;
接收第二设备发送的第二设备参数,其中,所述第二设备参数由第二设备通过第一服务器和第二服务器根据第二相关数及第一设备中间参数执行安全多方计算协议进行模指数运算得到,所述第二相关数由第二设备根据第二随机数与第二根随机数计算得到,所述第二根随机数由第二设备随机选择;
采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数生成密钥。
2.根据权利要求1所述的密钥生成方法,其特征在于,第一相关数组第一部分中的任意一个第一相关数,由第一根随机数及第一随机数组第一部分中的一个第一随机数计算得到;第一相关数组第二部分中的任意一个第一相关数,由第一根随机数及第一随机数组第二部分中的一个第一随机数计算得到。
3.根据权利要求1所述的密钥生成方法,其特征在于,具体包括:
初始化选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
获取一个随机数α作为第一根随机数,获取两个随机数α1和α1'作为第一随机数,得到包括α1和α1'的第一随机数组,其中,α,α1,α1'∈[0,p-2];
计算两个第一相关数α2和α2',得到包括α2和α2'的第一相关数组,其中,α2=α-α1mod(p-1),α2'=α-α1'mod(p-1);
计算两个第一设备中间参数
Figure FDA00002466232500021
Figure FDA00002466232500023
Figure FDA00002466232500024
发给第二设备;
接收第二设备发送的两个第二设备中间参数
Figure FDA00002466232500025
Figure FDA00002466232500026
其中,β1和β1'为第二设备随机获取的两个第二随机数,β1,β1'∈[0,p-2];
将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,第一随机数组第一部分为α1,第一随机数组第二部分为α1',将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,第一相关数组第一部分为α2,第一相关数组第二部分为α2',将α1和α2'发送给第一服务器,将α2和α1'发送给第二服务器;
接收由第一服务器发送的第一服务器参数K11和K22',其中,K11由第一服务器根据
Figure FDA00002466232500027
得到,K22'由第一服务器根据计算得到,其中,β2'由第二设备根据β2'=β-β1'mod(p-1)得到,β为第二设备随机获取的第二根随机数,β∈[0,p-2];
接收由第二服务器发送的第二服务器参数K11'和K22,其中,K11'由第二服务器根据
Figure FDA00002466232500029
计算得到,K22由第二服务器根据
Figure FDA000024662325000210
计算得到,其中,β2由第二设备根据β2=β-β1mod(p-1)得到;
与第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,分别得到两个第一设备参数K21和K21',其中,
Figure FDA000024662325000212
并发送K21和K21'给第二设备;
接收第二设备发送的两个第二设备参数K12和K12',K12和K12'由第二设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算得到,其中, K 12 = ( g α 1 ) β 2 mod p , K 12 ′ = ( g α 1 ′ ) β 2 ′ mod p ;
如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥。
4.一种密钥生成设备,其特征在于,包括随机数选择模块、相关数计算模块、第一设备中间参数计算模块、第二设备中间参数接收模块、服务器发送模块、第一服务器参数接收模块、第二服务器参数接收模块、设备安全多方计算协议执行模块、第二设备参数接收模块和密钥生成模块:
随机数选择模块,用于获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
相关数计算模块,用于计算多个第一相关数,得到包括多个第一相关数的第一相关数组;其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
第一设备中间参数计算模块,用于根据第一随机数计算得到第一设备中间参数,并发送给第二设备;
第二设备中间参数接收模块,用于接收第二设备发送的第二设备中间参数,所述第二设备中间参数由第二设备随机获取的多个第二随机数计算得到;
服务器发送模块,用于将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
第一服务器参数接收模块,用于接收第一服务器发送的第一服务器参数,其中,所述第一服务器参数由第一服务器对第一随机数组第一部分、第一相关数组第二部分进行计算得到;
第二服务器参数接收模块,用于接收第二服务器发送的第二服务器参数,其中,所述第二服务器参数由第二服务器对第一随机数组第二部分和第一相关数组第一部分进行计算得到;
设备安全多方计算协议执行模块,用于通过第一服务器和第二服务器根据第一相关数及第二设备中间参数执行安全多方计算协议进行模指数运算得到第一设备参数,并发送到第二设备;
第二设备参数接收模块,用于接收第二设备发送的第二设备参数,其中,所述第二设备参数由第二设备通过第一服务器和第二服务器根据第二相关数及第一设备中间参数执行安全多方计算协议进行模指数运算得到,所述第二相关数由第二设备根据第二随机数与第二根随机数计算得到,所述第二根随机数由第二设备随机选择;
密钥生成模块,用于采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数生成密钥。
5.一种密钥生成方法,其特征在于,包括:
接收由第一设备生成的第一随机数组第一部分和第一相关数组第二部分;
接收由第二设备生成的第二随机数组第一部分和第二相关数第二部分组;
对接收到的第一随机数第一部分、第一相关数第二部分、第二随机数第一部分和第二相关数第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
与第一设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第一设备参数,所述第一设备参数与第一服务器参数用于第一设备生成密钥;
与第二设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第二设备参数,所述第二设备参数与第一服务器参数用于第二设备生成密钥。
6.根据权利要求5所述的密钥生成方法,其特征在于,具体包括:
选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
接收由第一设备生成的第一随机数组第一部分α1和第一相关数组第二部分α2';
接收由第二设备生成的第二随机数组第一部分β1和第二相关数组第二部分β2';
计算第一服务器参数
Figure FDA00002466232500042
并把K11和K22'发送给第一设备和第二设备;
与第一设备和第二服务器共同执行安全多方计算协议进行模指数运算,以生成两个第一设备参数K21和K21',其中,
Figure FDA00002466232500051
Figure FDA00002466232500052
其中,
Figure FDA00002466232500054
为第一设备从第二设备接收的两个第二设备中间参数,α2和α2'由第一设备根据α2=α-α1mod(p-1)和α2'=α-α1'mod(p-1)计算得到,α1和α1'为第一设备随机选择的第一随机数,α为第一设备随机选择的第一根随机数,α,α1,α1'∈[0,p-2];
与第二设备和第二服务器共同执行安全多方计算协议进行模指数运算,以生成两个第二设备参数K12和K12',其中,
Figure FDA00002466232500055
Figure FDA00002466232500056
其中,
Figure FDA00002466232500057
Figure FDA00002466232500058
为第二设备从第一设备接收的两个第一设备中间参数,β2和β2'由第二设备根据β2=β-β1mod(p-1)和β2'=β-β1'mod(p-1)得到,β1和β1'为第二设备随机选择的第二随机数,β为第二设备随机选择的第二根随机数,β1,β1'∈[0,p-2]。
7.一种密钥生成服务器,其特征在于,包括第一设备接收模块、第二设备接收模块、第一服务器参数生成模块、协调第一设备安全多方计算协议执行模块和协调第二设备安全多方计算协议执行模块:
第一设备接收模块,用于接收由第一设备生成的第一随机数组第一部分和第一相关数组第二部分;
第二设备接收模块,用于接收由第二设备生成的第二随机数组第一部分和第二相关数组第二部分;
第一服务器参数生成模块,用于对接收到的第一随机数组第一部分、第一相关数组第二部分、第二随机数组第一部分和第二相关数组第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
协调第一设备安全多方计算协议执行模块,用于与第一设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第一设备参数,所述第一设备参数与第一服务器参数用于第一设备生成密钥;
协调第二设备安全多方计算协议执行模块,用于与第二设备、第二服务器共同执行安全多方计算协议进行模指数运算,以生成第二设备参数,所述第二设备参数与第一服务器参数用于第二设备生成密钥。
8.一种密钥生成方法,其特征在于,包括:
第一设备获取一个随机数作为第一根随机数,获取多个随机数作为第一随机数,得到包括多个第一随机数的第一随机数组;
计算多个第一相关数,得到包括多个第一相关数的第一相关数组,其中,所述每个第一相关数由一个第一随机数与第一根随机数计算得到;
第二设备获取一个随机数作为第二根随机数,获取多个随机数作为第二随机数,得到包括多个第二随机数的第二随机数组;
计算多个第二相关数,得到包括多个第二相关数的第二相关数组,其中,所述每个第二相关数由一个第二随机数与第二根随机数计算得到;
第一设备将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,将第一随机数组第一部分和第一相关数组第二部分发送给第一服务器,将第一随机数组第二部分和第一相关数组第一部分发送给第二服务器;
第二设备将第二随机数组分为第二随机数组第一部分和第二随机数组第二部分,将第二相关数组分为第二相关数组第一部分和第二相关数组第二部分,将第二随机数组第一部分和第二相关数组第二部分发送给第一服务器,将第二随机数组第二部分和第二相关数组第一部分发送给第二服务器;
第一服务器对接收到的第一随机数组第一部分、第一相关数组第二部分、第二随机数组第一部分和第二相关数组第二部分进行计算得到第一服务器参数,并发送给第一设备和第二设备;
第二服务器对接收到的第一随机数组第二部分、第一相关数组第一部分、第二随机数组第二部分和第二相关数组第一部分进行计算得到第二服务器参数,并发送给第一设备和第二设备;
第一设备通过第一服务器和第二服务器执行安全多方计算协议进行模指数运算得到第一设备参数,并发送给第二设备;
第二设备通过第一服务器和第二服务器执行安全多方计算协议进行模指数运算得到第二设备参数,并发送给第一设备;
第一设备和第二设备采用第一服务器参数、第二服务器参数、第一设备参数及第二设备参数的组合作为密钥。
9.根据权利要求8所述的密钥生成方法,其特征在于:
第一相关数组第一部分中的任意一个第一相关数,由第一根随机数及第一随机数组第一部分中的一个第一随机数计算得到,第一相关数组第二部分中的任意一个第一相关数,由第一根随机数及第一随机数组第二部分中的一个第一随机数计算得到;
第二相关数组第一部分中的任意一个第二相关数,由第二根随机数及第二随机数组第一部分中的一个第二随机数计算得到,第二相关数组第二部分中的任意一个第二相关数,由第二根随机数及第二随机数第二部分中的一个第二随机数计算得到。
10.根据权利要求8所述的密钥生成方法,其特征在于,具体包括:
初始化选择一个有限域Zp,其中,p是一个素数,从Zp中选择一个生成元g;
第一设备获取一个随机数α作为第一根随机数,获取两个随机数α1和α1'作为第一随机数,得到包括α1和α1'的第一随机数组,其中,α,α1,α1'∈[0,p-2],计算两个第一相关数α2和α2',得到包括α2和α2'的第一相关数组,其中,α2=α-α1mod(p-1),α2'=α-α1'mod(p-1),计算两个第一设备中间参数
Figure FDA00002466232500071
Figure FDA00002466232500072
Figure FDA00002466232500073
Figure FDA00002466232500074
发给第二设备;
第二设备获取一个随机数β作为第二根随机数,获取两个随机数β1和β1'作为第二随机数,得到包括β1和β1'的第二随机数组,其中,β,β1,β1'∈[0,p-2],计算两个第二相关数β2和β2',得到包括β2和β2'的第二相关数组其中,β2=β-β1mod(p-1),β2'=β-β1'mod(p-1),计算两个第二设备中间参数
Figure FDA00002466232500075
Figure FDA00002466232500076
Figure FDA00002466232500077
发给第一设备;
第一设备将第一随机数组分为第一随机数组第一部分和第一随机数组第二部分,第一随机数组第一部分为α1,第一随机数组第二部分为α1',将第一相关数组分为第一相关数组第一部分和第一相关数组第二部分,第一相关数组第一部分为α2,第一相关数组第二部分为α2',将α1和α2'发送给第一服务器,将α2和α1'发送给第二服务器;
第二设备将第二随机数组分为第二随机数组第一部分和第二随机数组第二部分,第二随机数组第一部分为β1,第二随机数组第二部分为β1',将第二相关数组分为第二相关数组第一部分和第二相关数组第二部分,第二相关数组第一部分为β2,第二相关数组第二部分为β2',将β1和β2'发送给第一服务器,将β2和β1'发送给第二服务器;
第一服务器计算第一服务器参数
Figure FDA00002466232500082
第二服务器计算第二服务器参数
Figure FDA00002466232500083
Figure FDA00002466232500084
然后第一服务器将K11和K22'发送给第一设备和第二设备,第二服务器将K11'和K22发送给第一设备和第二设备;
第一设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,得到两个第一设备参数K21和K21',其中,
Figure FDA00002466232500085
K 21 ′ = ( g β 1 ′ ) α 2 ′ mod p ;
第二设备、第一服务器和第二服务器共同执行安全多方计算协议进行模指数运算,得到两个第二设备参数K12和K12',其中,
Figure FDA00002466232500087
K 12 ′ = ( g α 1 ′ ) β 2 ′ mod p ;
第一设备发送K21和K21'给第二设备,第二设备发送K12和K12'给第一设备;
第一设备验证如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥;
第二设备验证如果K11K12K21K22=K11'K12'K21'K22',则采用K=K11K12K21K22作为密钥。
CN201210489040.8A 2012-11-26 2012-11-26 一种密钥生成方法、设备及服务器 Active CN103001957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210489040.8A CN103001957B (zh) 2012-11-26 2012-11-26 一种密钥生成方法、设备及服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210489040.8A CN103001957B (zh) 2012-11-26 2012-11-26 一种密钥生成方法、设备及服务器

Publications (2)

Publication Number Publication Date
CN103001957A true CN103001957A (zh) 2013-03-27
CN103001957B CN103001957B (zh) 2015-07-15

Family

ID=47930101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210489040.8A Active CN103001957B (zh) 2012-11-26 2012-11-26 一种密钥生成方法、设备及服务器

Country Status (1)

Country Link
CN (1) CN103001957B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104735081A (zh) * 2015-04-07 2015-06-24 四川理工学院 一种云环境下安全模指数外包方法及系统
CN105119929A (zh) * 2015-09-09 2015-12-02 四川理工学院 单一恶意云服务器下的安全模指数外包方法及系统
CN109787998A (zh) * 2019-02-28 2019-05-21 矩阵元技术(深圳)有限公司 数据处理方法、装置、智能卡、终端设备和服务器
CN112003690A (zh) * 2019-08-16 2020-11-27 华控清交信息科技(北京)有限公司 密码服务系统、方法及装置
CN114826702A (zh) * 2022-04-11 2022-07-29 中国南方电网有限责任公司 数据库访问密码加密方法、装置和计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399660A (zh) * 2007-09-28 2009-04-01 华为技术有限公司 协商组群密钥的方法和设备
US20090287922A1 (en) * 2006-06-08 2009-11-19 Ian Herwono Provision of secure communications connection using third party authentication
GB2488753A (en) * 2011-02-24 2012-09-12 Carlos Eduardo Bevilacqua Leal Encrypted communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287922A1 (en) * 2006-06-08 2009-11-19 Ian Herwono Provision of secure communications connection using third party authentication
CN101399660A (zh) * 2007-09-28 2009-04-01 华为技术有限公司 协商组群密钥的方法和设备
GB2488753A (en) * 2011-02-24 2012-09-12 Carlos Eduardo Bevilacqua Leal Encrypted communication

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YONGLONG TANG,CHUNMING TANG: "Efficient Round-Optimal Secure Two-Party Computation from Σ-protocol", 《2010 INTERNATIONAL CONFERENCE ON COMMUNICATIONS AND MOBILE COMPUTING》 *
YONGLONG TANG,CHUNMING TANG: "Efficient Round-Optimal Secure Two-Party Computation from Σ-protocol", 《2010 INTERNATIONAL CONFERENCE ON COMMUNICATIONS AND MOBILE COMPUTING》, vol. 1, 31 December 2010 (2010-12-31) *
李强: "安全多方计算协议的研究与应用", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑(2005年)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104735081A (zh) * 2015-04-07 2015-06-24 四川理工学院 一种云环境下安全模指数外包方法及系统
CN105119929A (zh) * 2015-09-09 2015-12-02 四川理工学院 单一恶意云服务器下的安全模指数外包方法及系统
CN105119929B (zh) * 2015-09-09 2019-02-01 四川理工学院 单一恶意云服务器下的安全模指数外包方法及系统
CN109787998A (zh) * 2019-02-28 2019-05-21 矩阵元技术(深圳)有限公司 数据处理方法、装置、智能卡、终端设备和服务器
CN112003690A (zh) * 2019-08-16 2020-11-27 华控清交信息科技(北京)有限公司 密码服务系统、方法及装置
CN112003690B (zh) * 2019-08-16 2024-01-12 华控清交信息科技(北京)有限公司 密码服务系统、方法及装置
CN114826702A (zh) * 2022-04-11 2022-07-29 中国南方电网有限责任公司 数据库访问密码加密方法、装置和计算机设备

Also Published As

Publication number Publication date
CN103001957B (zh) 2015-07-15

Similar Documents

Publication Publication Date Title
KR101575030B1 (ko) 클라우드 상의 공유 데이터에 대한 다중 서명생성방법
Tseng et al. A chaotic maps-based key agreement protocol that preserves user anonymity
US9571274B2 (en) Key agreement protocol
EP3020158B1 (en) Key agreement device and method
CN102811125B (zh) 基于多变量密码体制的无证书多接收者签密方法
CN104270249A (zh) 一种从无证书环境到基于身份环境的签密方法
CN101815091A (zh) 密码提供设备、密码认证系统和密码认证方法
CN103414690A (zh) 一种可公开验证云端数据持有性校验方法
CN104301108A (zh) 一种从基于身份环境到无证书环境的签密方法
Kim et al. Device authentication protocol for smart grid systems using homomorphic hash
CN103001957B (zh) 一种密钥生成方法、设备及服务器
Clarke et al. Cryptanalysis of the dragonfly key exchange protocol
CN103475473A (zh) 数字签名方法和设备、数字签名中密码运算方法和服务器
CN105306212B (zh) 一种身份隐藏且强安全的签密方法
CN102291396B (zh) 可信平台远程证明的匿名认证算法
US20160352689A1 (en) Key agreement protocol
Bayat et al. A secure and efficient chaotic maps based authenticated key-exchange protocol for smart grid
Li et al. Privacy-preserving large-scale systems of linear equations in outsourcing storage and computation
Juniawan RSA implementation for data transmission security in BEM chairman E-voting Android based application
CN102246456A (zh) 用于对抗对基于循环群的加密的侧通道攻击的系统和方法
Guo et al. An efficient and secure certificateless authentication protocol for healthcare system on wireless medical sensor networks
WO2016187690A1 (en) Key agreement protocol
Yang et al. Efficient certificateless encryption withstanding attacks from malicious KGC without using random oracles
Lee Efficient three-party authenticated key agreements based on Chebyshev chaotic map-based Diffie–Hellman assumption
CN104184581B (zh) 一种带符号二次剩余类群中的公钥加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 510006 No. 230 West Ring Road, Guangzhou University, Guangdong, Guangzhou

Patentee after: Guangzhou University

Patentee after: Age of security Polytron Technologies Inc

Address before: 510006 No. 230 West Ring Road, Guangzhou University, Guangdong, Guangzhou

Patentee before: Guangzhou University

Patentee before: Guangdong Certificate Authority Center Co., Ltd.