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倍

安全

一般

验证

数据量

只用来加密密钥

密钥管理

复杂

简单