Skip to content

按体系组织:签名算法 → X.509 证书 → CA 运营 → 工程部署。

签名算法

参考:RFC 8032 EdDSA · RFC 8017 RSA-PSS

算法密钥特点推荐
Ed2551932 byte确定性签名;快;侧信道友好新项目首选
RSA-PSS≥2048 bit广泛兼容;密钥大遗留互操作
ECDSAP-256 等k 须随机且唯一;泄露可恢复私钥谨慎使用
DSA1024+ bit已过时避免
BLS配对曲线签名聚合;区块链特定场景
<ul>
  <li>哈希-签名范式:先 H(m) 再签;预处理须一致</li>
  <li>JWT 签名算法须在解码时硬编码白名单,禁 <code>alg: none</code></li>
</ul>
<p class="kb-ref">CTF:<a href="https://ctf-wiki.org/crypto/signature/rsa/rsa/" target="_blank" rel="noopener">RSA 签名</a> · <a href="https://ctf-wiki.org/crypto/signature/dsa/dsa/" target="_blank" rel="noopener">DSA</a></p>

X.509 证书

参考:RFC 5280 · CTF Wiki · 证书格式

证书字段

  • Subject:持有者身份(CN、O、SAN 扩展)
  • Issuer:签发 CA
  • Validity:notBefore / notAfter
  • SubjectPublicKeyInfo:公钥与算法 OID
  • Extensions:SAN(多域名)、KeyUsage、BasicConstraints

验证流程

  1. 检查有效期、吊销状态(OCSP/CRL)
  2. 验证签名:用 Issuer 公钥验证证书签名
  3. 沿链向上至信任锚(根 CA)
  4. 检查 SAN 是否匹配连接域名

练习:openssl x509 -in cert.pem -text -noout 解析真实证书。

CA 运营与吊销

参考:Let's Encrypt · Certificate Transparency

  • ACME 协议:Let's Encrypt 自动化域名验证与签发(HTTP-01、DNS-01)
  • 证书透明度(CT):所有签发证书记入公开 Merkle 日志,供审计
  • OCSP:在线查询证书是否吊销;OCSP Stapling 由服务器代查
  • CRL:吊销列表;体积大、更新慢,逐步被 OCSP 补充
  • 证书固定(Pinning):客户端硬编码信任公钥;运维风险高,移动端曾大量误配

工程部署

  • 私钥进 HSM 或云 KMS;规划轮换与证书生命周期
  • TLS 证书与代码签名证书分离管理
语言库用途
PythonPyNaCl SigningKeyEd25519 签名
PythonPyJWTJWT 编解码
Rusted25519-dalek、ring::signature签名验签
<p class="kb-note-inline">练习:自签证书 + HTTPS 配置。本站笔记 <span class="crypto-pending">待撰写</span>。</p>

WIZARD