RSA 私钥与 CRT 加速
RSA 私钥除了模数 n 与私钥指数 d 之外,通常还包含 p、q、dP、dQ、qInv 等参数,用于中国剩余定理(CRT)加速:把一次大数模幂拆成两次规模较小的模幂再合并结果,私钥运算速度可提升数倍,典型为 3 到 4 倍。HSM 与主流密码库普遍采用这种方式,因此私钥文件里这些参数是否存在,会直接体现在签名与解密的性能上。
基本信息
| 参数 | n、e、d、p、q、dP、dQ、qInv |
|---|---|
| CRT 加速 | 私钥运算约提升数倍(典型 3 到 4 倍) |
| 常见格式 | PKCS#1 PEM(BEGIN RSA PRIVATE KEY)或 PKCS#8 |
| 格式转换 | PKCS#1 与 PKCS#8 互转会保留同样的参数 |
| 风险 | p 与 q 泄漏等同于私钥泄漏 |
典型使用场景
- 排查签名服务性能:私钥缺少 CRT 参数时运算明显变慢
- 格式转换后核对私钥参数是否完整
- 与 HSM 对接时确认设备内部是否使用 CRT 加速
- 安全评审中确认私钥文件的权限与存放位置
- 密钥迁移后验证新旧私钥是否确为同一对材料
查看与校验私钥参数
查看与校验私钥参数
# 查看私钥是否包含 CRT 参数
openssl pkey -in rsa.key -text -noout | grep -E 'prime1|prime2|exponent1|exponent2|coefficient'
# 校验私钥内部一致性(参数不匹配会直接报错)
openssl rsa -in rsa.key -check -noout
# 转成 PKCS#8 后参数仍然保留
openssl pkcs8 -topk8 -nocrypt -in rsa.key -out rsa.p8参数与作用
| 参数 | 含义 | 影响 |
|---|---|---|
| n、e | 模数与公开指数 | 公钥部分 |
| d | 私钥指数 | 无 CRT 时直接用它运算,速度较慢 |
| p、q | 两个大素因子 | 泄漏等同于私钥泄漏 |
| dP、dQ、qInv | CRT 中间值 | 存在时可显著加速私钥运算 |
| 格式 | PKCS#1 或 PKCS#8 | 转换不影响参数完整性 |
私钥文件被复制或放在宽权限目录时,CRT 参数会一并泄漏:p 与 q 一旦外泄,除更换密钥并重签证书之外没有补救办法。生产环境建议把私钥放入 HSM 或密钥管理服务,只在受控流程中分发与使用。
运维提示:轮换密钥时要同步更新所有依赖该私钥的系统(网关、签名服务、第三方对接方),只换其中一处会导致部分调用验签失败。私钥文件建议使用专用账号与 600 权限保存,并纳入备份与审计范围。