RSARivest-Shamir-Adleman)是一种经典 非对称加密 算法,基于大整数分解困难性,可用于公钥加密、密钥封装和 数字签名

核心问题

RSA 解决的是“如何用公开密钥让别人加密给我,或用私钥生成别人可验证的签名”的问题。它让公钥可以公开传播,而私钥保留在持有者手中。

核心机制

RSA 密钥生成的核心是选择两个大素数 pq,计算:

公钥通常是 (n, e),私钥包含能计算逆运算的 d。简化的 textbook RSA 形式是:

但这个公式只说明数学结构,不能直接作为安全工程方案。真实加密应使用 RSA-OAEP,真实签名应使用 RSA-PSS 或经过严格规范的签名方案。

工程用途

  • 证书和签名验证:传统 PKI 和代码签名系统中仍常见 RSA 签名。
  • 密钥封装:用 RSA 公钥包裹随机会话密钥,再用 对称加密 保护数据。
  • 兼容旧系统:一些老 TLS、企业证书和硬件模块仍依赖 RSA。

边界与常见坑

  • textbook RSA 不安全:没有 OAEP/PSS 等填充时,RSA 容易受到确定性、结构性和选择密文攻击。
  • RSA 不适合直接加密大数据:可加密数据长度受模数和填充限制,通常只加密会话密钥。
  • 密钥长度要足够:现代系统通常至少使用 2048 位 RSA,更长期安全常用 3072 位或更高。
  • 签名和加密用途要隔离:同一密钥跨用途使用会扩大攻击面。
  • 私钥保护比算法名更重要:私钥文件权限、HSM、备份、轮换和撤销决定实际安全边界。

相关术语