本文目录
理解 RSA 加密
RSA 是最基础的公钥密码学算法之一,被用于保护从网络流量到电子邮件加密和数字签名的方方面面。它的工作原理是生成两把在数学上相互关联的密钥——一把任何人都可用来加密数据或验证签名的公钥,以及一把只有所有者用来解密数据或创建签名的私钥。其安全性依赖于分解两个极大素数之乘积这一数学难题。
尽管椭圆曲线密码学等新算法不断涌现,RSA 在许多系统中依然不可或缺。它是 HTTPS 所用 X.509 证书的默认签名算法,是众多合规框架的必备算法,也是某些遗留系统唯一支持的选项。理解 RSA 密钥生成,有助于你在密钥长度、输出格式以及不同算法在安全基础设施中的适用场景上做出明智的决策。
如何使用 RSA 密钥生成器
CheckTown 的 RSA 密钥生成器使用 Web Crypto API 在你的浏览器中创建密钥对,实现安全的客户端生成。
- 选择密钥长度——2048 位(推荐的最低值)、3072 位(适合大多数用途)或 4096 位(安全性最高,但运算较慢)
- 选择输出格式——PEM(Base64 编码,广泛用于 Web 服务器和 OpenSSL)或 JWK(JSON 格式,常见于 Web API 和 JWT 库)
- 点击“生成”创建密钥对——私钥和公钥会分别显示在各自的字段中
- 复制或下载密钥——用公钥进行加密或验证,并妥善保管私钥以供解密或签名
免费试用 —— 无需注册
生成 RSA 密钥 →RSA 密钥长度与安全性
选择合适的 RSA 密钥长度需要在安全强度与性能之间取得平衡。密钥越长越安全,但加密和签名运算的速度也越慢。
- 2048 位是目前 NIST 和大多数行业标准推荐的最低值——它在约 2030 年之前能提供足够的安全性,但应被视为基准值,而非长期选择
- 3072 位推荐用于需要在 2030 年之后仍保持安全的系统——它提供相当于 128 位的安全级别,是大多数新部署的理想之选
- 4096 位提供最高的 RSA 安全级别,推荐用于证书颁发机构、长期使用的签名密钥,以及那些能够承受更长密钥带来的性能开销的高价值系统
常见问题
PEM 格式和 JWK 格式有什么区别?
PEM(Privacy Enhanced Mail)是一种 Base64 编码格式,外面包裹着如 BEGIN PUBLIC KEY 和 END PUBLIC KEY 这样的页眉页脚行。它是 OpenSSL、Web 服务器和证书颁发机构的标准格式。JWK(JSON Web Key)则将密钥表示为一个 JSON 对象,用具名字段表示每个数学分量。它用于 Web 应用、OAuth 系统以及以 JSON 为原生数据格式的 JWT 令牌签名。
RSA 现在使用起来还安全吗?
安全,采用适当密钥长度的 RSA 对于当前用途仍然是安全的。不过,务必至少使用 2048 位,对于新系统则更推荐 3072 位或 4096 位。RSA 最终会受到运行 Shor 算法的量子计算机的威胁,但能够破解 RSA 的实用型量子计算机预计至少还要十年才会出现。对于没有遗留约束的新项目,可以考虑 Ed25519 等椭圆曲线算法,它们能以更短的密钥提供相当的安全性。
我可以用生成的密钥进行 JWT 签名吗?
可以。RSA 密钥被广泛用于签名和验证 JSON Web Token。请使用 RS256、RS384 或 RS512 算法(分别对应 RSA 搭配 SHA-256、SHA-384 或 SHA-512)。私钥在你的服务器上为令牌签名,公钥则可以分享给任何需要验证该令牌的服务。JWK 输出格式对 JWT 库尤为方便,因为大多数库都直接接受 JWK 格式的密钥。