VPN技术的开放性预示着必须采用各种公开密码算法,这样算法的安全强度不能依赖于算法本身,只能依靠密钥的机密性。大规模部署VPN,也离不开自动密钥管理协议的支持。
1.RSA密码体制
RSA是一种根据它的发明者Rivest、Shamir和Adleman命 名的公开密钥算法。它方便了对称密钥加密中的密钥交换过程。
1976年,Diffie和Hellman为解决密钥管理问题,在他们的奠基性的工作《密码学的新方向》一文中,提出一种密钥交换协议,允许在不安全的媒体上通过通信双方交换信息,安全地传送秘密密钥。在此新思想的基础上,很快出现了非对称密钥密码体制,即公钥密码体制。在公钥体制中,加密密钥不同于解密密钥,加密密钥公之于众,谁都可以使用;解密密钥只有解密人自己知道。它们分别称为公开密钥和秘密密钥。在迄今为止的所有公钥密码体系中,RSA系统是最著名、使用最多的一种。
下面主要讲述RSA算法的基本要素。
RSA的安全性依赖于大数分解。公开密钥和私有密钥都是两个大素数(大于100个十进制位)的函数。下面描述密钥对是如何产生的。
1)选择两个大素数p和q,计算n=p×q,φ(n)=(p-1)×(q-1)。
2)随机选择和φ(n)互质的数d,要求d<φ(n)。
3)利用Euclid算法计算e,满足:e×d≡1mod(p-1)×(q-1),即d、e的乘积和1模φ(n)同余。
4)于是,数(n,e)是加密密钥,(n,d)是解密密钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
加密信息m时,首先把m分成等长数据块m1,m2,…,mi,块长s,其中2s≤n,s尽可能的大。对应的密文:
ci=(mi)emod(n) (6-1)
解密时做如下计算:
mi=(Ci)dmod(n) (6-2)
RSA也可用于数字签名,方案是用式(6-1)签名,式(6-2)验证。具体操作时考虑到安全性和m信息量较大等因素,一般是先做HASH运算。
对于巨大的质数p和q,计算乘积n=p×q非常简便,而逆运算却非常难,这是一种“单向性”,相应的函数称为“单向函数”。任何单向函数都可以作为某一种公开密钥密码系统的基础,而单向函数的安全性也就是这种公开密钥密码系统的安全性。
RSA算法安全性的理论基础是大数的因子分解问题至今没有很好的算法,因而公开e和n不易求出p、q及d。RSA算法要求p和q是两个足够大的素数(例如100位十进制数)且长度相差比较小。
为了说明该算法的工作过程,下面给出一个简单例子,显然在这里只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大得多。
【例】选取p=3,q=11,则n=33,φ(n)=(p-1)(q-1)=20。选取d=13(大于p和q的数,且小于φ(n),并与φ(n)互质,即最大公约数是1),通过e×13=1 mod 20,计算出e=17(大于p和q,与φ(n)互质)。
假定明文为整数M=8,则密文C为:
C=Memodn=817mod33=2251799813685248mod33=2
恢复原明文M为:
M=Cdmodn=213mod33=8192mod33=8
因为e和d互逆,公开密钥加密方法也允许采用这样的方式对加密信息进行“签名”,以便接收方能确定签名不是伪造的。
假设A和B希望通过公开密钥加密方法进行数据传输,A和B分别公开加密算法和相应的密钥,但不公开解密算法和相应的密钥。A和B的加密算法分别是ECA和ECB,解密算法分别是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。若A要向B发送明文P,不是简单地发送ECB(P),而是先对P施以其解密算法DCA,再用加密算法ECB对结果加密后发送出去。(www.xing528.com)
密文C为:C=ECB(DCA(P))
B收到C后,先后施以其解密算法DCB和加密算法ECA,得到明文P。
这样B就确定报文确实是从A发出的,因为只有当加密过程利用了DCA算法,用ECA才能获得P,只有A才知道DCA算法,任何人,即使是B也不能伪造A的签名。
2.Diffie-Hellman密钥交换协议
Diffie-Hellman密钥交换协议是W.Diffie和M.Hellman提出的,一种简化在非安全网络上交换秘密密钥的公开密钥加密算法。他们在1977年出版了第一个公开密钥加密的公开搜索。它的主要目的是简化在不安全网络上交换秘密会话密钥的过程。
它实质是一个通信双方进行密钥协定的协议:两个实体中的任何一个使用自己的私钥和另一实体的公钥,得到一个对称密钥,这一对称密钥其他实体都计算不出来。DH算法的安全性基于有限域上计算离散对数的困难性。离散对数的研究现状表明:所使用的DH密钥至少需要1024位,才能保证有足够的中、长期安全。
DH算法是用于密钥交换的最早最安全的算法之一。DH算法的基本工作原理是:通信双方公开或半公开交换一些准备用来生成密钥的“材料数据”,在彼此交换过密钥生成“材料”后,两端可以各自生成出完全一样的共享密钥。在任何时候,双方都绝不交换真正的密钥。
DH密钥交换协议如下:首先,Alice和Bob双方约定两个大整数n和g,其中1<g<n,这两个整数无须保密,然后执行下面的过程:
1)Alice随机选择一个大整数x(保密),并计算X=gx mod n;
2)Bob随机选择一个大整数y(保密),并计算Y=gy mod n;
3)Alice把X发送给Bob,Bob把Y发送给Alice;
4)Alice计算K=Y x mod n;
5)Bob计算K=Xy mod n。
最后得出的K即是共享的密钥。
监听者Oscar在网络上只能监听到X和Y,但无法通过X和Y计算出x和y,因此,Oscar无法计算出K=gxy mod n。
3.OAKLEY密钥决定协议
Oakley描述了一系列的密钥交换模式,提供密钥交换和刷新功能。
4.SKEME:SecureKeyExchangeMechanism
Hugo Krawczik提出了“安全密钥交换机制(SKEME)”,SKEME描述了通用密钥交换技术,提供匿名性、防抵赖和快速刷新。
5.互联网安全联盟及密钥管理协议
互联网安全联盟及密钥管理协议(Internet Security Association and Key Management Proto-col,ISAKMP)是一个定义在主机之间交换密钥和协商安全参数的框架。ISAKMP定义密钥在非安全网络上交换的一般机制,ISAKMP定义的信息包括报文中消息的位置和通信过程发生的机制,但它不指明使用的协议和算法。
6.互联网密钥交换
互联网密钥交换(Internet Key Exchange,IKE)是一种实现密钥交换定义的协议。IKE是一种在ISAKMP框架下运行的协议。它是从其他密钥交换协议Oakley和SKEME中派生而来的。IKE用于在对等端之间认证密钥并在它们之间建立共享的安全策略。
IKE考虑了IPSec使用的所有算法交换秘密密钥的复杂性。通过将密钥管理函数替代普通的密钥管理协议,简化了将新的算法添加进IPSec栈的过程。IKE使用公开密钥加密算法在非安全网络上安全地交换密钥。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。