Entry № 1032
可复现构建
可复现构建 是什么?
可复现构建通过特定的构建实践,使同一份源代码在同一构建指令下,无论何时何地构建都能产生比特位一致的工件。
可复现构建消除构建过程中的非确定性,使任何拥有源代码和构建配方的人都能独立重建出完全相同的二进制,并按字节与发布版本比较。这需要控制时间戳、构建路径、环境变量、随机性、本地化、文件顺序与编译器选项。Reproducible Builds 项目、Debian、NixOS、Arch Linux、Tor、F-Droid 与 Bazel 在该领域投入颇多。结合签名 provenance,可复现构建让第三方 rebuilder 验证某个二进制确实来自公开的源代码,从而帮助识别单一构建者被入侵的情形(如 SolarWinds 事件)。它也是达到 SLSA 最高构建等级的必备条件,并是关键开源软件赢得信任的基础。
● 示例
- 01
对 Tor Browser 发布版本进行独立重建,结果与官方二进制按字节完全一致。
- 02
基于 Bazel 的服务,在任意 worker 上由同一提交产生相同的 SHA-256 摘要。
● 常见问题
可复现构建 是什么?
通过特定的构建实践,使同一份源代码在同一构建指令下,无论何时何地构建都能产生比特位一致的工件。 它属于网络安全的 应用安全 分类。
可复现构建 是什么意思?
通过特定的构建实践,使同一份源代码在同一构建指令下,无论何时何地构建都能产生比特位一致的工件。
如何防御 可复现构建?
针对 可复现构建 的防御通常结合技术控制与运营实践,详见上方完整定义。
可复现构建 还有哪些其他名称?
常见的别称包括: 确定性构建, 比特级一致构建。