3.3.4 RSA

2025-06-16 19:03:26 更新

(一)RSA算法

属于非对称加密算法,由Ronald Rivest、Adi Shamir、Leonard Adleman在1977年公开发表。

(1)特点:公钥和私钥(存在数学关系)都可用于加密消息,用于加密消息的密钥与解密消息的密钥相反。

(2)公私钥关系:一个用于加密,另一个用于解密。从一个无法推导出另外一个。

(3)隐患:RSA 算法基于大数分解 (无法抵抗穷举攻击),量子计算对 RSA 算法构成较大威胁。拥有N量子位的量子计算机,每次可进行2N次运算,密钥为1024位的RSA算法,1台512量子比特位的量子计算机在1秒内破解。

(二)RSA应用

  1. SSH、OpenPGP、S/MIME和SSL/TLS都依赖于RSA进行加密和数字签名功能
  2. RSA在浏览器中使用,在不可信任的互联网中建立安全连接
  3. RSA签名验证是网络系统中的常见操作

(三)RSA算法

RSA(Rivest-Shamir-Adleman)算法是一种广泛使用的公钥加密算法。在RSA中,公钥和私钥是由一对大质数 p 和 q 生成的。公钥通常表示为 (e,n),私钥表示为 (d,n),

其中:

n=p×q

e 是公钥的指数,通常是一个小整数,且 1<e<ϕ(n) 且 e 与 ϕ(n) 互质。

ϕ(n)=(p−1)(q−1) 是欧拉函数,用于计算 n 的卡迈克尔函数值。

d 是私钥指数,满足 d×e≡1(modϕ(n))。

【读作:d 乘以 e 同余于 1 模 phi(n) 或者 d 乘以 e 的结果,在模 phi(n) 的意义下,等于1 】

注意:以上参数中,公钥(e,n)可以公开,其他参数不可以公开。

(1)加密

密文 = 明文E mod N

E和N的组合就是公钥(E, N)

(2)解密

明文 = 密文D mod N

D和N的组合就是私钥(D, N)

(3)生成密钥对

公钥是(E, N),私钥是(D, N),求E、D、N的过程就是生成密钥对的过程。

(四)RSA签名机制

RSA即可用于加密,也可用于签名。

签名公式(消息加密公式):签名=me mod n

(五)非对称加密算法

  1. 加密/解密
  2. 数字签名:发送方使用自己的私钥签署报文,接收方用对方公钥验证签名
  3. 密钥交换:通信双方协商会话密钥

(1)Elgamal算法

是基于迪菲-赫尔曼密钥交换的非对称加密算法,在1985年由塔希尔·盖莫尔提出。既能用于数据加密也能用于数字签名。是基于有限域中离散对数问题的难解性。

(2)DSA算法

DSA算法是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS (Digital Signature Standard)。 基于整数有限域离散对数难题。

(3)DH(Diffie-Hellman)算法

又称密钥一致协议。由公开密钥密码体制奠基人Diffie和Hellman在1976年提出。原理是通过共享参数(公钥)、私有参数(私钥)及算法协商对称秘钥,然后用它加密后面的通信。

(4)ECC椭圆加密算法

由Koblitz和Miller于1985年提出。利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。