对信任的信任之反思(1984)[pdf]
肯·汤普森(Ken Thompson)在其1984年图灵奖演讲中提出一项深刻的计算机安全悖论:你无法完全信任任何未经你亲自验证的代码。他通过一个编译器后门实验证明,恶意代码可以通过编译器自我复制,即便源代码完全透明,攻击痕迹依然可以彻底隐藏。这篇论文阐述了“信任信任”(Trusting Trust)攻击的根本机制,警示现代软件供应链信任的脆弱性。
背景速读
- Ken Thompson 是 UNIX 操作系统的共同创造者,也是 1983 年图灵奖得主。这篇是他当年的图灵奖演讲全文。
- 所谓的 "Trusting Trust 攻击":Thompson 展示了如何修改 C 编译器,使其在编译 login 程序时植入后门;然后删除编译器源码中的恶意代码,只让编译好的二进制保留这个能力。甚至可以让编译器在编译自身的源代码时也保留该后门,使得源码审查完全失效。
- 核心观点:你无法信任任何不是完全由你自己从源代码构建的软件——而即便你从源码构建,如果编译器本身可能被污染,信任链依然断裂。也就是说,信任无法通过审查源码来建立。
- 这篇演讲是计算机安全领域的基础文献,首次系统性地提出了 "信任链"(chain of trust)和 "可信计算基"(trusted computing base)的概念,对后来的软件供应链安全、可信启动、编译器加固等实践有深远影响。