对称密码可以有效地加密任何明文,通常用于通信会话的加密。然而,随着对称加密的应用越来越广泛,会话密钥的管理也面临着挑战。假设网络中有n一个实体需要两两个通信,所以每个实体必须与任何其他实体保持会话密钥,总会话密钥的数量是,即达到O(n2)密钥管理的复杂性显著增加。另一方面,分组加密主要依赖于多轮复合材料的扩散和混淆操作,需要进一步提高安全强度。
公钥密码也被称为非对称密码,即加密钥不同于解密钥,一个公钥被称为公钥,一个私钥被称为私钥。公钥密钥被称为私钥。公钥和私钥在数学上是密切相关的,公钥加密的信息只能用相应的私钥解密,反之亦然。由于公钥算法不需要在线密钥服务器,因此密钥分配变得简单。一个人可以在与许多人交流时使用相同的密钥对,而不是与每个人分别使用不同的密钥。只要私钥是保密的,它就可以随意分发公钥,用户可以与任何数量的人一个密钥对,而不是为每个人设置一个密钥,显著降低了密钥管理的复杂性,简化了密钥管理操作,有效地提高了密码学的可用性。
公钥加密是一种干扰信息的方法。使用该方法的双方都有一对密钥,其中一个可以公开共享,另一个只能由预定的目标接收器知道。任何人都可以使用私人公共密钥来加密信息。然而,只要预定接收器的解密钥得到安全保护,信息就无法解密。一般来说,公钥算法的设计依赖于经典的数学问题。即将到来的攻击者在没有私钥的情况下破解公钥加密系统,并等效地映射到解决数学问题。这样,如果攻击者能够在没有私钥的情况下解决公钥加密,就相当于解决公共知识问题。因此,这种模型假设已成为公钥密码安全的保证基石。
1976年,Whitfield Diffie和Martin Hellman 共同发表学术论文《New Direction in Cryptography》,建立了公钥加密系统。公钥加密是一项重大创新,从根本上改变了加密和解密的过程,成为40年来信息安全应用领域的核心技术。2015年,Diffie和Hellman由于发明了公钥加密技术,两位密码学家还获得了计算机领域诺贝尔美誉的图灵奖。
1. Diffie-Hellman密钥交换算法
下面以Alice和Bob为例介绍以Diffie和Hellman命名的DH密钥交换原理。
(1)选择可开放的大质数p和底数g。
(2)Alice和Bob分别选择私有素数a和b。
图1给出了Alice和Bob公开交换g、p、A、B,最后,他们计算获得共享密钥K=gab的基本过程。DH协商密钥的目的是让Alice和Bob即使双方的通信数据被截获,任何第三方实体也无法计算相同的密钥。
图1 DH密钥交换原理
让我们看一个简单的例子来解释Alice和Bob协商计算会话密钥K的过程。
1)Alice与Bob协定使用p=23,g=5。
2)Alice选择秘密整数a=6,计算A=gamodp并发送给Bob:A=56mod 23=8。
3)Bob选择秘密整数b=15,计算B=gbmodp并发送给Alice:B=515mod 23=19。
4)Alice计算K=Bamodp,即196mod 23=2。
5)Bob计算K=Abmodp,即815mod 23=2。
DH它是一种公钥算法,应用的数论问题是大数离散对数求解问题,即已知g、a,计算A=ga很容易,但相反,已知A和g,求解a这是困难的。这样,即使攻击者被截获A和B,也无法计算a和b,因此,无法计算获得K。
2. RSA公钥算法
1976年在美国斯坦福大学公开密钥算法 Diffie和Hellman 两人首先发明的,但是目前最流行的RSA算法规则是1977年MIT教授Ronald L.Rivest、Adi Shamir和Leonard M.Adleman共同发明。RSA它还取自三位数学家的第一个字母。RSA算法依赖于大数因素分解问题,即给定两个大素数p、q,计算它们的乘积n=pq很容易,但相反,给定n,求解p和q这是一个经典的数论问题。
(1)密钥生成
①选择两个大素数:p和q。
②计算欧拉函数:φ(n)=(p−1)(q−1)。
③选择正整数e,使gcd(e,φ(n))=1,即e和φ(n)互为素数。
④根据de=1(modφ(n)),利用Euclid算法计算出d。
⑤公钥即为K=<e,n>。
⑥私钥即为S=<d,p,q>。
(2)公钥加密
①记明文信息为m(二进制),将m分成等长数据块m1,m2,…,mi,块长s,其中2s≤n。
②加密:ci≡mi^e(modn)
③解密:mi≡ci^d(modn)
一开始,RSA选用的n长度达到512 bit以当时的计算机运算能力,安全性已被公认为足够强大。随着并行计算水平的快速发展和量子计算等新计算的出现,RSA安全强度也开始受到威胁。RSA选定的公钥长度已达4 096 bit。
与对称密码相比,公钥密码具有难度大、安全强度高、计算成本高等特点。因此,在日常应用中,RSA算法和AES混合算法通常称为数字信封技术,如图2所示。
图2 数字信封技术
虽然安全强度高,但由于 RSA 公钥加密需要大量的资源,所以通常会话加密使用AES和AES会话密钥可以通过RSA公钥加密,AES密钥的加密结果与会话密文一起发送给接收方。这种技术被称为数字信封,可以确保只持有RSA只有合法的私钥接收方才能解开AES获得最终会话明文的密钥。