好吧,经过 2 个月的扎实努力,我开始了。 “在 TEE 中进行 Groth16 可信设置并获得有毒废物已被销毁的远程证明”项目没有成功。下面会TLDR。 在这里提及只是因为我不想让任何人因为他们认为我仍在做这件事而被劝阻,而实际上我并没有。
简而言之: - 目前唯一能够做到这一点的 TEE(据我所知)是 TDX,因为它具备所需的加密 RAM 保证。(请记住,对于这个项目,仅仅知道 TEE 中运行的是正确的代码是不够的,您还需要知道物理攻击者在机器上无法在仪式期间转储 RAM 并了解有毒废物)。 - TDX 远程证明对 “MRTD” 进行签名,这是一个哈希值,如果 VM 镜像的任何字节发生变化,它也会改变。 - 因此,为了让未来的审计员/用户验证 TDX 在受信任的设置期间是否运行了正确的代码(尤其是在任何自动化的方式下),他们需要能够重现该 MRTD 哈希,而这又需要以逐位可重现的方式从人类可读的源代码重建 VM 镜像。 - 我无法以逐位可重现的方式创建 GCP 镜像。(即使是一个超级最小的镜像,仅仅启动并打开 SSH 端口,实际上什么也不做)。
我不确定现有的现成工具是否可以做到这一点。它可能需要调整现有工具。 StageX 非常有帮助,所以我建议尽可能多地使用它。当您需要当前无法通过 StageX 层获得的任何内容时,问题就会出现。因为这样你就需要从源代码构建你需要的任何东西(因为下载 tarball 而不自己构建它们是一种供应链风险)。 而且我发现,以逐位可重复的方式从源代码构建/编译 _大多数_ 软件非常耗时、困难且脆弱。在许多情况下,我*根本*无法做到这一点。
我建议在一个仅由哈希固定的 StageX 层组成的 Docker 容器内构建任何所需的软件。这种技术给了我最大的收益。
3.7K