RSA 是第一个实用的公钥密码体制(Rivest–Shamir–Adleman,1977):公钥公开用于加密,私钥秘密用于解密,解决了对称密码的密钥分发难题。它的安全性建立在大数分解的困难性上,是 TLS、数字签名等现代安全协议的基础。
密钥生成
- 选两个大素数 p,q,计算 n=pq 与 φ(n)=(p−1)(q−1)
- 选加密指数 e 满足 gcd(e,φ(n))=1
- 计算解密指数 d≡e−1(modφ(n))(由Bezout 定理保证存在)
- 公钥 (n,e),私钥 d;p,q 须销毁
加密与解密
明文 m(0≤m<n):
c≡me(modn),m≡cd(modn)
正确性由欧拉定理保证:mφ(n)≡1(modn),于是
cd≡med=m1+kφ(n)≡m(modn)
安全性
- 若能分解 n 求出 p,q,即可算出 φ(n) 并恢复 d;目前没有已知的经典多项式分解算法(见大数分解)
- 密钥长度建议 2048 位以上;小指数需配合填充(如 OAEP)抵御低指数攻击
示例
取 p=61,q=53:n=3233,φ(n)=3120,e=17,d≡17−1≡2753(mod3120)。加密 m=65:
c≡6517≡2790(mod3233)
解密 27902753≡65(mod3233),还原明文。
应用
RSA 用于密钥交换(TLS)与数字签名;解密可用CRT 加速至约 4 倍速度,模幂运算由快速幂实现。