跳到主要内容
ecdsa.com

代码签名

用 X.509 证书、平台密钥、OpenPGP 或 Sigstore 对可执行文件、软件包、脚本或固件签名,使操作系统、应用商店和用户能够验证发布者并发现篡改。
其他写法code signingcode-signing certificatesoftware signingEV code signing

格式因平台而异:Windows PE 文件、MSI 和 PowerShell 使用 Authenticode;Apple 代码签名使用 Developer ID 证书并配合公证;Android 使用 APK 签名方案;Java 使用 JAR 签名;RPM 和 Debian 仓库使用 OpenPGP 签名;容器镜像用 cosign 签名;UEFI 安全启动有自己的密钥层级。有了时间戳,签名的有效期可以超过签名所用证书的有效期。

公开受信任的代码签名证书遵循 CA/Browser Forum 的《代码签名基线要求》:自2023年6月1日起,私钥必须在硬件模块中生成和保存(最低要求为 FIPS 140-2 第 2 级或通用准则 EAL 4+),自2026年3月1日起,证书最长有效期为 460 天(CSC-31 投票)。

签名密钥被盗是一再出现的攻击途径(Stuxnet 使用的驱动程序证书、Adobe 构建服务器于2012年被入侵),因此用硬件保存密钥、独立的签名服务和吊销预案比算法选择更重要。

标准与参考资料

全部术语