7.5 公开密钥加密算法:RSA
RSA 是现代互联网中使用最广泛的非对称加密算法之一。
RSA 的安全性基于对大数分解的难度。
7.5.1 密钥生成
RSA 密钥对的生成遵循以下步骤:
- 挑选两个非常大的质数 和 。
- 计算 。
- 计算 。
- 挑选公钥指数 满足 且 与 互质。常用值为 65537。
- 计算私钥指数 满足 。
- 最终得出公钥为 ,私钥为 。
其中:
- 密钥长度例如 2048 位、4096 位,是指模数 的位数。
- 为欧拉函数,指小于等于 的正整数中与 互质的个数。
- RSA 利用私钥可计算出公钥。
7.5.2 加密和解密
由于实践中 RSA 加密解密过程十分复杂,此处仅简要描述重点部分。
首先将待加密数据按规定的规则转为整数 ,满足 :
- 使用公钥加密时,将整数 代入公式 , 即为密文。使用私钥加密时只需要将 替换为 。
- 使用私钥解密时,将密文 代入公式 ,即可还原明文 。使用公钥解密时只需要将 替换为 。
从上可以看出,RSA 加密和解密计算量非常大,若所有消息均由 RSA 加密将对硬件造成很大的压力,因此常见做法是双方使用 RSA 加密交换一个对称加密的密钥,然后在此次会话的后续报文使用对称加密。HTTPS 使用的就是这种做法。