Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
本文通过应用克莱尼第二递归定理来构建能够仅凭内置数据相互重建并验证彼此精确源代码的节点,从而解决了相互证明的无限回归问题,进而消除了在不同计算架构之间对可信第三方或外部参考值的需求。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
在安全计算领域,有一个根本性的需求,即证明一台计算机程序确实如其所声称的那样。这个过程被称为远程度量(remote attestation),它是数字世界中安全人员在允许进入受限建筑前检查驾驶执照的行为。保安会将照片和详细信息与一份关于有效执照应有的样子之信任数据库进行对比。如果细节匹配,此人即可进入。在数字领域,一个计算机程序会生成一个唯一的指纹,称为“度量值”(measurement),该值会与验证者持有的参考值(一个已知的、预期的指纹)进行比较。当一方检查另一方时,这套系统运作得非常完美;但当两台或多台计算机需要同时互相检查时,它就会撞上一堵逻辑之墙。如果计算机 A 需要知道计算机 B 的指纹来验证它,而计算机 B 也需要知道计算机 A 的指纹来验证它,那么双方都无法在已经拥有答案之前开始这个过程。这创造了一个循环依赖:每台机器都在等待对方提供它开始验证所需的证明。
位于日本名古屋的 Acompany Co., Ltd. 的研究人员找到了一种方法,可以在不依赖中央权威机构或预先存在的信任代码列表的情况下打破这个循环。他们并没有将这个问题视为一个安全谜题,而是将其视为一个逻辑和自我引用问题。通过应用被称为克莱尼第二递归定理(Kleene's second recursion theorem)的数学原理,他们证明了一组计算机可以通过编程,使其自身的内存中包含其他所有成员的精确源代码。这使得每台机器都能从零开始重建其同伴的代码,实时计算出正确的指纹,并在无需向外部请求答案的情况下验证对方的身份。该团队构建了工作原型来证明这一概念,展示了两台安全计算机如何仅利用自身携带的数据便成功实现了相互的完整性验证。
问题的核心在于现代安全环境(如可信执行环境,Trusted Execution Environments)的本质,这些环境是隔离的空间,可以在其中处理敏感数据而无需担心被窥视或篡改。在典型的设置中,单台计算机向服务器证明其可信度。服务器持有批准的代码指纹列表,并将计算机的报告与该列表进行比对。然而,在一个多台计算机必须协作完成机密任务的去中心化网络中,每台机器既是检查者,也是被检查者。如果它们试图将伙伴的预期指纹硬编码到自己的软件中,就会陷入无限循环。为了知道伙伴 B 的指纹,计算机 A 必须知道 B 的代码。但 B 的代码包含了 A 的指纹,而获取 A 的指纹又需要知道 A 的代码,而 A 的代码又包含了 B 的指纹,如此循环往复,永无止境。以往解决这一困境的方法包括引入一个受信任的第三方来分发指纹,或者依赖特定的硬件特性在启动时注入这些数值。这些方法虽然有效,但它们重新引入了信任中心点,或者将解决方案与特定类型的硬件绑定,从而限制了其应用范围和方式。
研究人员通过将一组计算机视为一个单一的、互连的系统,提出了另一条路径。他们意识到,如果每台计算机都能从一组共享指令中生成其同伴的代码,那么循环依赖就可以得到解决。利用一种允许程序引用其自身源代码的计算机科学概念,他们设计了一种方法,将一组程序转化为一组自包含的单元。每个单元都携带了整个程序家族的完整描述。当一台计算机启动时,它会读取这种内部描述,重建其伙伴的精确源代码,然后计算出伙伴的指面值。由于重建过程是在内部完成的,计算机不需要信任外部列表;它只需根据已拥有的数据计算出答案。这种方法消除了对中央权威机构的需求,并且可以在不同的安全硬件类型上运行,无需对底层的安全工具进行更改。
为了证明这一理论,团队创建了两个工作演示。第一个侧重于直接测量运行中代码的系统,例如标准的 Linux 系统。他们构建了一个名为 PyReflect 的工具,该工具可以接收代码模板并自动生成具有自我引用能力的程序。在测试中,由软件安全模块支持的两台虚拟机成功交换了验证报告。每台机器都重建了对方的代码,计算了预期的指纹,并确认了对方正在运行正确的软件。第二个演示针对的是测量编译后的构建产物(build artifact)的系统,例如 AWS Nitro Enclaves,这些是专门的安全容器。在这里,过程更加复杂,因为计算机不仅必须重建源代码,还必须精确地重建最终的可执行文件。他们开发了名为 NixReflect 的工具来处理这一过程。在实验中,两个安全隔离区被启动,每个隔离区都独立地从其自身内存中存储的数据里重建了对方的整个镜像。随后,它们计算了重建镜像的指纹,并将其与对方报告的指纹进行对比。结果完全匹配,证明了机器可以仅凭其内部数据推导出正确的参考值。
研究人员还测量了这种方法的成本。在安全隔离区的案例中,重建对方镜像的过程比仅仅计算代码哈希值的过程要慢得多。在他们的特定测试案例中,重建和构建过程耗时约 6.8 秒,而简单的哈希计算耗时不到 0.1 秒。这种差异预计会随着应用程序变得更加复杂而增大,因为计算机必须遍历整个依赖链来重建软件。尽管存在这种时间成本,实验仍证实了该方法是可行的,且不需要任何新硬件或受信任的第三方。团队指出,对于更复杂的系统,可以将重建过程卸载到部署前的安全构建环境中,从而降低运行时成本,但这会引入关于构建环境本身的一套新的信任假设。
这项工作的意义在于它能够解决长期阻碍完全去中心化安全计算的逻辑死锁。通过展示可以通过自包含重建实现相互度量,研究人员为那些不信任单一实体的点对点网络提供了一条前进的道路。该方案是架构无关的,这意味着它可以应用于各种类型的安全硬件,而无需对硬件的安全栈进行定制化修改。它依赖于计算的基本属性而非特定的硬件特性,使其成为未来机密计算的一种通用工具。虽然目前的原型只是概念验证演示,但它们确立了参考值引导(reference-value bootstrapping)问题可以在没有受信任第三方的情况下得到解决,为更强大、更独立的网络铺平了道路。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。