第三章:技术Lesson 16: Reflections on Don't Trust, Verify

第十六课:对「不要信任,要验证」的思考

"现在需要证据,"国王说,"然后是判决。"

朗读者:Guy Swann


比特币旨在取代,或至少提供传统货币的替代方案。传统货币与中央权威机构绑定,无论我们谈论的是美元这样的法定货币,还是《堡垒之夜》的V-币这样的现代垄断货币。在这两个例子中,你都必须信任中央权威机构来发行、管理和流通你的货币。比特币解开了这种绑定,比特币解决的主要问题是信任问题。

"传统货币的根本问题在于使其运作所需的所有信任。[...] 我们所需要的是一个基于密码学证明而不是信任的电子支付系统" — 中本聪 (Satoshi)

比特币通过完全去中心化解决了信任问题,没有中央服务器或可信任的第三方。不仅没有可信任的第三方,而是没有可信任的任何一方。当没有中央权威时,就没有人需要信任。完全去中心化就是创新。它是比特币韧性的根源,是它仍然存活的原因。去中心化也是我们有挖矿、节点、硬件钱包,以及区块链的原因。你唯一需要"信任"的是我们对数学和物理学的理解不是完全错误的,以及大多数矿工诚实行事(这是有激励的)。

虽然常规世界在"信任,但要验证"的假设下运作,但比特币在"不要信任,要验证"的假设下运作。中本聪在比特币白皮书的介绍和结论中都明确表达了消除信任的重要性。

"结论:我们提出了一个不依赖信任的电子交易系统。" — 中本聪 (Satoshi Nakamoto)

请注意,这里的"不依赖信任"是在非常特定的背景下使用的。我们谈论的是可信任的第三方,即你信任来生产、持有和处理你的货币的其他实体。例如,假设你可以信任你的计算机。

正如肯·汤普森 (Ken Thompson) 在他的图灵奖演讲中所展示的,在计算世界中,信任是一个极其棘手的问题。运行程序时,你必须信任各种软件(和硬件),理论上它们可能以恶意方式改变你试图运行的程序。正如汤普森在他的《信任的反思》中总结的:"道德很明显。你无法信任不是完全由你自己创建的代码。"

肯·汤普森黑客攻击示意图

汤普森证明,即使你有源代码访问权限,你的编译器——或任何其他程序处理程序或硬件——都可能被破坏,检测这种后门将非常困难。因此,在实践中,一个真正无需信任的系统并不存在。你必须从头开始创建所有软件所有硬件(汇编器、编译器、链接器等),而不依赖任何外部软件或软件辅助机械。

"如果你想从头开始制作苹果派,你必须先发明宇宙。" — 卡尔·萨根 (Carl Sagan)

肯·汤普森黑客是一个特别巧妙且难以检测的后门,让我们快速看一下一个无需修改任何软件就能工作的难以检测的后门。研究人员发现了一种方法,通过改变硅杂质的极性来破坏安全关键硬件。仅仅通过改变制造计算机芯片的材料的物理特性,他们就能够破坏一个密码学安全的随机数生成器。由于这种变化看不见,这种后门无法通过光学检查检测到,而光学检查是这类芯片最重要的篡改检测机制之一。

隐蔽的掺杂级硬件木马

隐蔽的掺杂级硬件木马,作者:贝克尔 (Becker)、雷加佐尼 (Regazzoni)、帕尔 (Paar)、伯里森 (Burleson)

听起来很可怕?嗯,即使你能从头开始构建一切,你仍然必须信任底层数学。你必须信任secp256k1是一个没有后门的椭圆曲线。是的,恶意后门可以插入到密码学函数的数学基础中,可以说这至少已经发生过一次。有充分的理由保持偏执,从你的硬件、软件到所使用的椭圆曲线,一切都可能有后门,这是其中一些理由。

"不要信任。要验证。"

上述例子应该说明无需信任的计算是乌托邦式的。比特币可能是最接近这种乌托邦的系统,但它仍然是信任最小化的——旨在尽可能消除信任。可以说,信任链是无穷无尽的,因为你还必须信任计算需要能量,P不等于NP,以及你实际上在基础现实中,而不是被恶意行为者囚禁在模拟中。

开发者们正在开发工具和程序来进一步最小化任何剩余的信任。例如,比特币开发者创建了Gitian,这是一种创建确定性构建的软件分发方法。想法是如果多个开发者能够重现相同的二进制文件,恶意篡改的机会就会减少。花哨的后门不是唯一的攻击向量。简单的勒索或敲诈也是真正的威胁。就像主要协议一样,去中心化被用来最小化信任。

正在进行各种努力来改善肯·汤普森的黑客如此巧妙地指出的引导的鸡和蛋问题。其中一个努力是Guix(发音为geeks),它使用功能声明的包管理,通过设计实现逐位可重现的构建。结果是你不再需要信任任何软件提供服务器,因为你可以通过从头重建来验证提供的二进制文件没有被篡改。最近,一个拉取请求被合并,将Guix集成到比特币构建过程中。

先有鸡还是先有蛋的引导问题

先有鸡还是先有蛋?

幸运的是,比特币并不依赖单一算法或硬件。比特币激进去中心化的一个效果是分布式安全模型。虽然上述描述的后门不可轻视,但不太可能每个软件钱包、每个硬件钱包、每个密码学库、每个节点实现,以及每种语言的每个编译器都被破坏。可能,但极不可能。

请注意,你可以在不依赖任何计算硬件或软件的情况下生成私钥。你可以抛硬币几次,尽管根据你的硬币和抛掷风格,这种随机性来源可能不够随机。有理由为什么像冰川协议 (Glacier)这样的存储协议建议使用赌场级骰子作为两个熵源之一。

比特币迫使我反思不信任任何人实际意味着什么。它提高了我对引导问题的认识,以及开发和运行软件中隐含的信任链。它也提高了我对软件和硬件可能被破坏的多种方式的认识。

比特币教会了我不要信任,要验证。

掉进兔子洞

信任的反思 作者:肯·汤普森 (Ken Thompson)
可信任的第三方是安全漏洞 作者:尼克·萨博 (Nick Szabo)
比特币白皮书 作者:中本聪 (Satoshi Nakamoto)
51%攻击 作者:比特币开发者指南贡献者
引导 作者:Guix手册贡献者
椭圆曲线密码学 (ECC) 后门 作者:维基百科贡献者
Secp256k1 作者:比特币维基贡献者

购买图书 »

除非另有说明,本站内容均采用知识共享署名-相同方式共享4.0国际(CC BY-SA 4.0)许可证授权。如果你喜欢本站内容,有很多方式表达支持