背景技术
随着通信技术的发展,通信安全变得越来越重要。目前流行的两种数据加密体系:对称密钥加密法和非对称密钥加密法。常用的对称加密法如DES、AES。非对称密钥法又称为公开密钥方法,常用的非对称密钥法如RSA,ECC等。
在使用对称密钥加密算法进行通信的密钥加密通信***中,通信双方需要约定一个密钥,其相对比较固定,并且对称密钥加密算法是公开的,很容易受到攻击,并且时间长了该固定密钥容易被攻击方猜到导致整个***崩溃。
如果通信双方使用临时的随机密钥,一次一密钥的方法,无疑增加了攻击的难度,几乎不可能靠猜测密钥的办法来攻击密钥***。即使某一次通信的临时密钥被猜到,也不会影响到其它节点的通信或下一次的通信的安全性。但是,在密钥是临时随机的密钥情况下,通信的双方也还是需要交换密钥,以保持双方的密钥一致。因此,在交换密钥的过程中仍存在密钥被截取的风险。这就需要一种安全的密钥交换机制。
首次提出在通信中公开传递密钥的方法是由戴费和海尔曼提出的密钥交换算法,简称为DH密钥交换体制,它不是加密算法,但可以在网络中公开传输密钥。这种密钥交换技术的目的在于使得两个用户安全地交换一个密钥以便用于以后的报文加密。
DH密钥交换算法的有效性依赖于计算离散对数的难度。简言之,可以如下定义离散对数:首先定义一个素数p的原根,为其各次幂产生从1到P-1的所有整数根,也就是说,如果a是素数p的一个原根,那么数值amod p,a2mod p,…,ap-1mod p(这里,mod是取模运算符)是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。
对于一个整数b和素数p的一个原根a,可以找到唯一的指数i,使得:
b=ai mod p 其中0≤i≤(p-1)
指数i称为b的以a为基数的模p的离散对数或者指数。该值被记为inda,p(b)。
基于此,可以定义DH密钥交换算法。该算法描述如下:
(a)有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根。
(b)假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA<q,并计算公开密钥YA=aXA mod q。用户A对XA的值保密存放而使YA能被用户B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=aXB mod q。用户B对XB的值保密存放而使YB能被用户A公开获得。
(c)用户A产生共享秘密密钥的计算式是K=(YB)XA mod q。同样,用户B产生共享秘密密钥的计算式是K=(YA)XB mod q。这两个计算产生相同的结果:
K=(YB)XA mod q
=(aXB mod q)XA mod q
=(aXB)XA mod q (根据取模运算规则得到)
=aXB XA mod q
=(aXA)XBmod q
=(aXA mod q)XB mod q
=(YA)XB mod q
因此,相当于双方已经交换了一个相同的秘密密钥。
(d)因为XA和XB是保密的,一个攻击方可以利用的参数只有q、a、YA和YB。因而攻击方被迫取离散对数来确定密钥。例如,要获取用户B的秘密密钥,攻击方必须先计算XB=inda,q(YB),然后再使用用户B采用的同样方法计算其秘密密钥K。
DH密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难。对于大的素数,计算出离散对数几乎是不可能的。
DH密钥交换体制虽然目前来看是比较安全的,但其运算量非常大。比如DH算法中,为了实现一个30位二进制数的密钥交换,可能需要计算2147483647(32位二进制数)的9223372036854775807(64位二进制数)次方模除1073741824(30位二进制数),这样的计算一般只能在大型机和小型机上实现。而攻击方要破解这30位的密钥如果用穷举法暴力破解,以当前的普通PC机几分钟内可以完成。如果把密钥长度提高到64位,其计算量将是相当大的。虽然现在有很多DH方法的优化方法,使得可以在PC机上实现DH交换,但是运算量也是非常可观的。
对于密钥交换方法也有很多其它的方法(比如基于线性不定方程求解困难而设置的密钥交换体制),虽然运算量会比DH的运算量小几个数量级,但是同样都是基于数学NP问题的设定,其共同特点都是数学运算量特别大,解该数学问题很困难。但是数学NP问题不是无解的问题,随着技术进步和研究的不断深入,可能会找到一个比较有效的数学方法来解该NP问题,届时这些方法将会失效。
因此,需要一种运算量较小并且不易破解的密钥交换方法和***。
发明内容
本发明的目的在于提供一种用于在使用密钥进行加密通信的通信***中的密钥交换方法,该密钥交换方法仅需要较少的运算量即可实现加密密钥的交换,并且不易被破解。
本发明的一方面提供一种用于密钥加密通信***中的密钥交换方法,其特征在于包括:第一通信节点生成第一随机数,并将生成的第一随机数发送给第二通信节点;第二通信节点生成第二随机数,并将生成的第二随机数发送给第一通信节点;第一通信节点对第一随机数和第二随机数进行预定运算,以生成种子随机数,并且第一通信节点使用预先与第二通信节点确定的加密算法和原始密钥对种子随机数进行加密,以生成加密密钥;第二通信节点对第一随机数和第二随机数进行预定运算,以生成种子随机数,并且第二通信节点使用预先与第一通信节点确定的加密算法和原始密钥对种子随机数进行加密,以生成加密密钥。
优选地,将生成的第二随机数发送给第一通信节点的步骤可包括:第二通信节点将第二随机数和第二通信节点的设备标识码发送给第一通信节点,其中,第一通信节点使用第二通信节点的设备标识码对原始密钥进行分散运算,并使用经过分散运算后的原始密钥对种子随机数进行加密,以生成加密密钥。
优选地,第二通信节点可使用第二通信节点的设备标识码对原始密钥进行分散运算,并使用经过分散运算后的原始密钥对种子随机数进行加密,以生成加密密钥。
优选地,所述预定运算可以是拼接处理、相加、相减、相乘之一。
优选地,所述加密算法可以是数据加密标准DES、三重数据加密标准3DES、高级加密标准AES之一。
优选地,第一通信节点还可将用于标识加密算法的编号和/或用于标识原始密钥的编号发送给第二通信节点,其中,第一通信节点和第二通信节点基于用于标识加密算法的编号和/或用于标识原始密钥的编号从预先确定的多种加密算法和/或多个原始密钥中选择对种子随机数进行加密时使用的加密算法和/或原始密钥。
优选地,第一通信节点还可将用于标识加密算法和原始密钥之一的第一编号发送给第二通信节点,其中,第一通信节点和第二通信节点基于第一编号从第一通信节点和第二通信节点预先确定的多种加密算法和多个原始密钥中选择对种子随机数进行加密时使用的加密算法和原始密钥之一,第二通信节点还将用于标识加密算法和原始密钥中的另一个的第二编号发送给第二通信节点,其中,第一通信节点和第二通信节点基于第二编号从第一通信节点和第二通信节点预先确定的多种加密算法和多个原始密钥中选择对种子随机数进行加密时使用的加密算法和原始密钥中的另一个。
优选地,原始密钥可包括多条原始子密钥,第一通信节点和第二通信节点逐一使用所述多条原始子密钥对种子随机数进行加密。
优选地,加密算法和原始密钥可以以无法从外部被访问的形式被存储在第一通信节点和第二通信节点中。
优选地,加密算法和原始密钥可被存储在第一安全设备和第二安全设备中,第一安全设备仅能由第一通信节点访问,第二安全设备仅能由第二通信节点访问。
此外,可以以明文或密文方式发送第一随机数和第二随机数。
根据本发明的密钥交换方案,通信节点可以明文发送随机数。由于对随机数进行加密的加密算法和密钥并没有被发送,这样即使随机数在传输过程中被截获,也无法准确地得到用于通信的加密密钥。同时,在通信节点相互交换随机数之后,不需要像现有DH密钥交换方案那样进行大量计算,而是仅仅需要在双方接收到对方的随机数之后用原始密钥对随机数进行加密,这相对来讲需要很少的计算量,从而加快了密钥交换速度。
将在接下来的描述中部分阐述本发明另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明的实施而得知。
具体实施方式
现在,将参照附图更充分地描述不同的示例实施例,其中,一些示例性实施例在附图中示出。
实施例1
图1示出根据本发明的示例性实施例的用于密钥加密***中的密钥交换方法的流程图。
在图1示出的密钥加密通信***中,存在作为通信双方的通信节点A和通信节点B。通信节点A和通信节点B可以是各种通信设备。
在步骤101,通信节点A生成随机数RA,并将生成的随机数RA发送给通信节点B。
在步骤102,通信节点B生成随机数RB,并将生成的随机数RB发送给通信节点A。
在步骤103,通信节点A基于随机数RA和随机数RB生成用于密钥加密通信的密钥KA。
具体地说,通信节点A对随机数RA和随机数RB进行预定的运算,以得到种子随机数RC。例如,该预定的运算可以是拼接、相加、相减、相乘等。在进行拼接时,如果随机数RA的长度为n个字节,随机数RB的长度为m个字节,则拼接后的种子随机数的长度为n+m个字节。
例如,随机数RA的长度为8个字节,随机数RB的长度为8个字节,拼接后的种子随机数的长度为16个字节。
随后,通信节点A使用预先与通信节点B协商的加密算法和原始密钥K对种子随机数RC进行加密,以得到用于密钥加密通信的密钥KA。
在步骤104,通信节点B基于随机数RA和随机数RB生成用于密钥加密通信的密钥KA。
具体地说,通信节点B对随机数RA和随机数RB进行预定的运算,以得到种子随机数RC。随后,通信节点B使用预先与通信节点A协商确定的加密算法和原始密钥K对种子随机数RC进行加密,以得到用于密钥加密通信的密钥KA。
这样,通信节点A和B都获得了密钥KA,从而实现了密钥的交换。
随后,可使用密钥KA进行通信节点A和B之间的数据通信。
在步骤105,通信节点A使用在步骤103生成的密钥KA对将被发送到通信节点B的内容进行加密,并将加密后的内容发送到通信节点B。
在步骤106,通信节点B从通信节点A接收所述加密的内容,并使用在步骤104生成的密钥KA对所述加密的内容进行解密。
实施例2
图2示出根据本发明的另一示例性实施例的用于密钥加密通信***中的密钥交换方法的流程图。
在图2示出的密钥加密通信***可以为服务器一客户端的通信环境或者基站一终端的通信环境。假设服务器或基站作为通信节点A,客户端或终端作为通信节点B。
通信***中的每一个客户端或终端都有一个唯一的编号(例如,8字节的整数),其被称为设备标识码(ID)。
原始密钥K存储在通信节点A和B中。在通信节点B中,使用通信节点B的设备ID将原始密钥K进行分散运算,将分散结果K1存储在通信节点B中。
在步骤201,通信节点A生成随机数RA,并将生成的随机数RA发送给通信节点B。
在步骤202,通信节点B生成随机数RB,并将生成的随机数RB和自己的设备ID发送给通信节点A。
在步骤203,通信节点A使用从通信节点B接收的设备ID对原始密钥K进行分散来得到分散结果K1,并使用已经与通信节点B预先确定的加密算法和分散结果K1对随机数RA和随机数RB的拼接结果RC进行加密,从而得到最终的加密密钥KA。
在步骤204,通信节点B使用已经与通信节点A预先确定的加密算法和分散结果K1对随机数RA和随机数RB的预定运算结果RC进行加密,从而得到最终的加密密钥KA。
在步骤205,通信节点A使用在步骤203生成的加密密钥KA对将被发送到通信节点B的内容进行加密,并将加密后的内容发送到通信节点B。
在步骤206,通信节点B从通信节点A接收所述加密的内容,并使用在步骤204生成的加密密钥KA对所述加密的内容进行解密。
在实施例2中,通信节点A使用从通信节点B接收的设备ID对原始密钥K进行分散来得到分散结果K1,并使用已经与通信节点B预先确定的加密算法和分散结果K1对随机数RA和随机数RB的拼接结果RC进行加密。这样,由于在实施例2中进行了上述分散和加密操作,与实施例1相比,实施例2的技术方案进一步增强了加密效果,提高了破解难度。
在另一个实施例中,通信节点A与通信节点B预先确定的加密算法也可以是DES(数据加密标准)算法或3DES(三重数据加密标准)算法,使用DES算法或3DES算法对种子随机数RC进行的加密可表示为:
KA=DesEncrypt(RC,K),
其中,DesEncrypt()为DES算法或3DES算法。
为了进一步增强安全性,优选地使用3DES算法。
DES算法是均衡加密算法的标准,用于加密非机密的信息,当时要破解DES算法是非常困难的。但是时至今日,随着技术的发展,已经有很多种比较有效的DES破解方法,使得DES算法已经不是很安全了。由于DES使用的密钥长度只有56位,即使使用暴力破解的办法,在联网技术如此发达的今天已经可以很快破解。但是使用16字节密钥的3DES算法现在却没有有效的破解办法。因此,在使用3DES的情况下,可具有更高的安全性。
此外,在另一实施例中,也可使用安全性比3DES算法更高的AES(高级加密标准)算法。
在根据本发明的另一实施例中,通信节点可以以明文发送随机数RA和随机数RB。由于对随机数RC进行加密的加密算法和密钥并没有被发送,这样即使随机数在传输过程中被截获,也无法准确地得到用于通信的加密密钥。应该理解,对随机数RA和/或随机数RB加密之后再进行发送也是可行的。
同时,在通信节点A和B相互交换随机数之后,不需要像DH密钥交换方案那样进行大量计算,而是仅仅需要在双方接收到对方的随机数之后用原始密钥K对随机数进行加密,这相对来讲需要很少的计算量。例如,在使用3DES的情况下,在密钥交换过程中消耗的计算量比DH密钥交换方案要小多个数量级,并且可以获得更快的速度。
在另一实施例中,原始密钥K可包括多条原始子密钥。在此情况下,在步骤103和104中,逐一使用所述多条原始子密钥对种子随机数RC进行加密,每条原始子密钥的加密结果作为下一原始子密钥的加密对象。
在另一实施例中,通信节点B与通信节点A可预先确定多种加密算法和/或多个原始密钥K。此时,通信节点A将加密算法和/或原始密钥的编号连同随机数RA发送给通信节点B,从而由通信节点A来确定使用的加密算法和/或原始密钥。这样,通信节点A和通信节点B都可以根据该编号来选择使用的加密算法和/或原始密钥。应该理解,也可以由通信节点B来确定使用的加密算法和/或原始密钥。
此外,在预先确定多种加密算法和多个原始密钥K的情况下,通信节点A将加密算法和原始密钥之一的编号连同随机数RA发送给通信节点B,通信节点B将加密算法和原始密钥中的另一个的编号连同随机数RB发送给通信节点A,从而通信节点A和B根据上述编号来选择使用的加密算法和原始密钥。换句话说,由通信节点A和B分别确定加密算法或原始密钥。
这样,通过设置多种加密算法和多个原始密钥,可以进一步增强通信的安全性。
在本发明中,加密算法和原始密钥被保存在通信节点中,从通信节点的外部无法访问加密算法和原始密钥。
例如,加密算法和原始密钥可以以配置文件的形式加载或直接编译到在通信节点运行的通信程序中。
此外,也可将加密算法和原始密钥保存在单独一个安全设备中。该安全设备可以设置在每个通信节点中,或者被配置为独立于通信节点并仅能由与之对应的通信节点访问。此外,计算密钥KA的处理也可由该安全设备执行,通信节点只需将随机数RA或RB(以及加密算法和/或原始密钥的编号)输入到该安全设备,由该安全设备(根据编号确定使用的加密算法和/或原始密钥并)计算密钥KA,并输出给通信节点。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,以上的实施方式仅用于说明本发明的技术方案而非限制性的,本领域的技术人员可根据本发明做出各种相应的改变、或选取以上的实施例的组合、或选定其它不是常用的加密算法,或密钥长度可以进行改变。这些改变都应被认为属于本发明所附的权利要求的保护范围。