分层安全性提供深度防御
Bitcoin Core代码的完整性不能仅仅依赖于少数几个密码密钥,这就是为什么存在很多其他检查的原因。这里有很多安全层来提供深度防御:
一、Pull请求安全性
1、任何人都可以通过在Bitcoin/Bitcoin上打开针对主分支的Pull请求,并自由地提出代码更改请求。
2、 开发人员审核Pull请求,以确保它们无害。任何人都可自由地审查Pull请求并提供反馈。在为Bitcoin Core做出贡献时,是没人监督或门槛的。如果一个Pull请求,它的确是有用的,并且对其没有合理的反对意见,那么维护者就会将其合并到Core软件。
3、Core维护者设置此预Push,以确保他们不会将未签名的提交推送到存储库中。
4、可选择通过OpenTimestamps对合并 提交安全地添加时间戳;
5、Travis Continuous Integration系统定期运行此脚本以检查Git树(历史)的完整性,并验证Master分支中的所有提交是否都使用其中一个可信PGP密钥进行签名;
6、任何想要运行此脚本以验证所有合并提交PGP签名的人,都可以追溯到2015年12月,这个过程大约需要25分钟。
二、发布安全性
1、 Gitian确定性构建系统是由多个开发人员独立运行的,其目标是创建相同的二进制文件。如果有人设法创建与其他开发人员的构建不匹配的构建,则表明引入了非确定性,因此最终版本不会发生。如果存在非确定性,开发人员会找出出错的地方,修复它,然后构建另一个候选版本。一旦确定性构建成功,那么开发人员就会对生成的二进制文件进行签名,从而保证二进制文件和工具链不被篡改且使用了相同的源。此方法删除了构建和分发过程中的单点故障,任何具有技术技能的人都可以运行自己的构建系统。
2、一旦Gitian构建完成,并得到了构建者签署,一位 Bitcoin Core 的维护者将PGP签署一个消息,其中包含每个构建的SHA256哈希值。如果您决定运行预先构建的二进制文件,则可以在下载后检查其哈希值,然后 使用哈希值验证签名版本消息的真实性。
3、以上所有内容都是开源的,并且任何具有技能的人都可对其进行审核。
4、最后,即使在完成上述所有质量和完整性检查之后,提交到Bitcoin Core并最终进入版本的代码也不会被任何中心化的组织部署到节点网络上。相反,每个节点操作员必须有意识地决定更新他们运行的代码。 Bitcoin Core故意没有设置自动更新功能,因此用户可自行决定需要运行什么版本的代码。
尽管Bitcoin Core项目实施了以上所有技术安全措施,但它们并不是完美的,理论上它们中的任何一个都可能受到损害。
Bitcoin Core代码完整性的最后一道防线与任何其他开源项目相同,即开发者需时刻保持警惕,审查Bitcoin Core代码的眼睛越多,恶意或有缺陷代码进入发布版客户端的可能性就越小。
一、Pull请求安全性
1、任何人都可以通过在Bitcoin/Bitcoin上打开针对主分支的Pull请求,并自由地提出代码更改请求。
2、 开发人员审核Pull请求,以确保它们无害。任何人都可自由地审查Pull请求并提供反馈。在为Bitcoin Core做出贡献时,是没人监督或门槛的。如果一个Pull请求,它的确是有用的,并且对其没有合理的反对意见,那么维护者就会将其合并到Core软件。
3、Core维护者设置此预Push,以确保他们不会将未签名的提交推送到存储库中。
4、可选择通过OpenTimestamps对合并 提交安全地添加时间戳;
5、Travis Continuous Integration系统定期运行此脚本以检查Git树(历史)的完整性,并验证Master分支中的所有提交是否都使用其中一个可信PGP密钥进行签名;
6、任何想要运行此脚本以验证所有合并提交PGP签名的人,都可以追溯到2015年12月,这个过程大约需要25分钟。
二、发布安全性
1、 Gitian确定性构建系统是由多个开发人员独立运行的,其目标是创建相同的二进制文件。如果有人设法创建与其他开发人员的构建不匹配的构建,则表明引入了非确定性,因此最终版本不会发生。如果存在非确定性,开发人员会找出出错的地方,修复它,然后构建另一个候选版本。一旦确定性构建成功,那么开发人员就会对生成的二进制文件进行签名,从而保证二进制文件和工具链不被篡改且使用了相同的源。此方法删除了构建和分发过程中的单点故障,任何具有技术技能的人都可以运行自己的构建系统。
2、一旦Gitian构建完成,并得到了构建者签署,一位 Bitcoin Core 的维护者将PGP签署一个消息,其中包含每个构建的SHA256哈希值。如果您决定运行预先构建的二进制文件,则可以在下载后检查其哈希值,然后 使用哈希值验证签名版本消息的真实性。
3、以上所有内容都是开源的,并且任何具有技能的人都可对其进行审核。
4、最后,即使在完成上述所有质量和完整性检查之后,提交到Bitcoin Core并最终进入版本的代码也不会被任何中心化的组织部署到节点网络上。相反,每个节点操作员必须有意识地决定更新他们运行的代码。 Bitcoin Core故意没有设置自动更新功能,因此用户可自行决定需要运行什么版本的代码。
尽管Bitcoin Core项目实施了以上所有技术安全措施,但它们并不是完美的,理论上它们中的任何一个都可能受到损害。
Bitcoin Core代码完整性的最后一道防线与任何其他开源项目相同,即开发者需时刻保持警惕,审查Bitcoin Core代码的眼睛越多,恶意或有缺陷代码进入发布版客户端的可能性就越小。