1. 背景:
单钥密码随着网络规模的扩大,密钥的管理成为一个难点,并且无法解决消息确认问题。
为了解决这些问题。1976年W.Diffie和M.E.Heilinan提出的一种新型双钥密码体制。由于双钥密码体制的加密和解密不同,且能公开加密密钥,而仅需保密解密密钥,所以双钥密码不存在密钥管理问题。双钥密码还有一个优点是可以拥有数字签名等新功能。1977年由Rivest,Shamir和Ad1eman三人提出了RSA密码体制,但RSA的安全性一直未能得到理论上的证明。
2. 概述:
公钥加密使用两个密钥-一个公钥和一个私钥,这两个密钥在数学上是相关的。为了与对称密钥加密相对照,公钥加密有时也叫做不对称密钥加密。在公钥加密中,公钥可在通信双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密(如下图所示)。
由于它用私钥加密的数据只有公钥才能还原,这被用在数字签名中。
3. 原理:
生成密钥:
1. 随意找两个大质数 p, q
2. 算出 n = p * q
3. 取一小奇数 e 和 (p - 1)*(q - 1) 互质
4. 解出 d * e ≡ 1 (mod n) 的 d
5. e, n 为公开密钥
6. d, n 为私人密钥
加密:
设消息为 M (< n), 则密文 C = M^e (mod n)
解密:
设密文为 C, 则明文为 M = C^d (mod n)
签名:
设信息为 M (< n), 则签名信息 S = M^d (mod n)
检验:
设签名信息为 S, 则原信息为 M = S^e (mod n)
下面举个例子:
如果p = 3, q = 7,那么
n = p * q = 21
加密密钥e与(p - 1)*(q - 1) = 2 * 6 = 12没有公因子。
随机选取e,如5,那么
d = 5-1 mod 12 = 5 相当于1=(e * d) mod 12
公开e和n,将d保密,丢弃p和q。
加密消息M = 4
C = M^e mod n = 4^5 mod 21 = 16
解密消息时需要用解密密钥d进行相同的指数运算。因而:
M = C^d mod n = 16^5 mod 21 = 4
4. 和DES的比较
DES | RSA | |
方式 | 对称 | 非对称 |
速度 | 快 | 慢1000倍 |
安全 | 一般 | 高 |
验证 | 否 | 是 |
数据量 | 大 | 只用来加密密钥 |
密钥管理 | 复杂 | 简单 |