# RSA是什么？定义、例子与常见误区

> RSA 是 1977 年提出的公钥算法，TLS 用它对证书和握手进行签名，在 TLS 1.3 之前还用它传输会话密钥。

Source: https://ssl.sh/zh/glossary/rsa/
Last updated: 2026-11-10

RSA 得名于 Ron Rivest、Adi Shamir 和 Leonard Adleman，是一种公钥密码体制，安全性建立在"分解两个大素数乘积很困难"之上。密钥长度指模数的位数，比如 2048 位。RSA 既能签名也能加密。TLS 中它用于证书签名和握手签名，填充方式有 PKCS#1 v1.5 和 RSA-PSS（TLS 1.3 的握手签名要求 RSA-PSS）；在 TLS 1.2 及更早版本中，它还可以直接传输会话秘密。

## 为什么重要
RSA 仍是部署最广的证书密钥类型，Baseline Requirements 要求 RSA 密钥至少 2048 位。2048 位约相当于 112 位安全强度，3072 位约 128 位。与 [ECDSA](https://ssl.sh/zh/glossary/ecdsa/) 相比，RSA 的密钥和签名更大，签名运算更慢。RSA 密钥传输没有前向保密，应当关闭：2017 年的 [ROBOT](https://ssl.sh/zh/glossary/robot/) 研究发现，大量服务器仍因此暴露在 Bleichenbacher 式填充预言攻击之下。大规模量子计算机运行 Shor 算法可以破解 RSA，这也是[后量子密码](https://ssl.sh/zh/glossary/post-quantum-cryptography/)迁移的起因。国内云厂商的证书控制台通常也让你在 RSA 和 ECC 之间选择密钥算法。

## 例子
生成 2048 位 RSA 私钥并据此创建 CSR：

```bash
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out example.com.key
openssl req -new -key example.com.key -out example.com.csr -subj "/CN=example.com"
```

## 常见误区
- **RSA 证书就意味着 RSA 密钥交换。** RSA 证书完全可以配合具备前向保密的 ECDHE-RSA 套件使用，RSA 密钥传输是另一回事，可以单独关闭。
- **想安全就得用 4096 位 RSA。** 2048 位是公认的下限。4096 位会拖慢每次握手，ECDSA P-256 能以更低成本提供更高强度。
- **RSA 已经被量子计算机破解了。** 现有量子计算机远不能分解 RSA-2048，担忧的是未来能力以及今天被录下的数据。

## 相关术语

- [公钥](https://ssl.sh/zh/glossary/public-key/): 公钥是非对称密钥对中可以公开的一半，写在证书里，供他人验证由对应私钥生成的签名。
- [私钥](https://ssl.sh/zh/glossary/private-key/): 私钥是非对称密钥对中保密的那一半，TLS 服务器用它证明自己拥有证书里的那把公钥。
- [密钥长度](https://ssl.sh/zh/glossary/key-size/): 密钥长度是密钥的位数，其安全含义取决于算法，例如 256 位的 ECDSA 密钥比 2048 位的 RSA 密钥更强。
- [数字签名](https://ssl.sh/zh/glossary/digital-signature/): 数字签名是用私钥对消息计算出的一个值，任何持有对应公钥的人都能验证它，从而确认消息来源和内容未被篡改。
- [ECDSA](https://ssl.sh/zh/glossary/ecdsa/): ECDSA 是基于椭圆曲线的数字签名算法，在 TLS 证书中作为 RSA 的替代方案，密钥和签名更小、签名运算更快。
- [密钥交换](https://ssl.sh/zh/glossary/key-exchange/): 密钥交换是 TLS 握手中客户端与服务器建立共享秘密的步骤，保护连接的对称密钥都由这个共享秘密派生而来。
- [ROBOT](https://ssl.sh/zh/glossary/robot/): ROBOT 是 2017 年公布的研究，发现大量 TLS 实现仍存在 1998 年的 Bleichenbacher RSA 填充预言机，攻击者可借此解密 RSA 密钥交换。
- [后量子密码](https://ssl.sh/zh/glossary/post-quantum-cryptography/): 后量子密码（PQC）是专为抵御大规模量子计算机攻击而设计的公钥密码算法，用来替代可能被量子计算机破解的 RSA 和 ECC。
