软件包签名
软件包签名 是什么?
软件包签名对软件包进行加密签名,使使用者能够验证发布者身份并确认工件在发布后未被篡改。
软件包签名将一个工件(二进制、库、容器镜像、操作系统包、语言模块)与发布者的加密身份绑定。验证方在安装或运行前,会将签名与期望的密钥、证书或透明日志条目对照。常见生态包括 Sigstore Cosign(OCI 镜像与语言包)、GPG 签名的 Linux 发行包、Windows 的 Authenticode、macOS/iOS 的 codesign,以及使用 PGP 的 Maven Central。现代实践倾向使用短期密钥与基于 OIDC 的身份(Sigstore),搭配透明日志(Rekor)以提供可公开审计性,而不是长期保管离线密钥。包签名与 SBOM、SLSA provenance、可复现构建互为补充:它回答"是谁发布的、是否完整?",其他工具则回答"里面有什么、是怎么造的?"。
● 示例
- 01
用 Sigstore Cosign 对发布版本的二进制签名,并把签名记录到 Rekor。
- 02
通过 apt 与发行版 GPG 公钥验证 Debian 软件包签名。
● 常见问题
软件包签名 是什么?
对软件包进行加密签名,使使用者能够验证发布者身份并确认工件在发布后未被篡改。 它属于网络安全的 应用安全 分类。
软件包签名 是什么意思?
对软件包进行加密签名,使使用者能够验证发布者身份并确认工件在发布后未被篡改。
软件包签名 是如何工作的?
软件包签名将一个工件(二进制、库、容器镜像、操作系统包、语言模块)与发布者的加密身份绑定。验证方在安装或运行前,会将签名与期望的密钥、证书或透明日志条目对照。常见生态包括 Sigstore Cosign(OCI 镜像与语言包)、GPG 签名的 Linux 发行包、Windows 的 Authenticode、macOS/iOS 的 codesign,以及使用 PGP 的 Maven Central。现代实践倾向使用短期密钥与基于 OIDC 的身份(Sigstore),搭配透明日志(Rekor)以提供可公开审计性,而不是长期保管离线密钥。包签名与 SBOM、SLSA provenance、可复现构建互为补充:它回答"是谁发布的、是否完整?",其他工具则回答"里面有什么、是怎么造的?"。
如何防御 软件包签名?
针对 软件包签名 的防御通常结合技术控制与运营实践,详见上方完整定义。
软件包签名 还有哪些其他名称?
常见的别称包括: 代码签名, 工件签名。
● 相关术语
- appsec№ 226
Cosign
Sigstore 项目提供的开源命令行工具,可使用有密钥或无密钥工作流对 OCI 工件及其他软件进行签名、验证与证明。
- appsec№ 1044
Sigstore
Linux 基金会下的开源项目,通过短期密钥、OIDC 身份和透明日志,使签名、验证与保护软件工件变得简单。
- appsec№ 1069
软件供应链安全
保护软件生产链中每一个环节——源代码、依赖、构建、签名、分发与部署——使其免受篡改、恶意代码与完整性破坏的学科。
- appsec№ 870
来源证明(Provenance Attestation)
对软件工件如何生成(源代码、构建系统、参数与依赖)进行签名且可机器验证的声明,使使用者能够信任其来源。
- cryptography№ 321
数字签名
一种公钥密码学机制,用于证明消息或文档的真实性、完整性以及不可否认性。
- appsec№ 1053
SLSA Framework
Supply-chain Levels for Software Artifacts:OpenSSF 发布的分级要求集合,逐级强化软件构建、签名与验证,以抵御供应链篡改。