Okay, nach 2 Monaten harter Arbeit gebe ich auf. Das Projekt "Führe das Groth16 Trusted Setup in einem TEE durch und erhalte eine Remote-Bestätigung, dass der toxische Abfall zerstört wurde" war erfolglos. TLDR unten. Ich erwähne das hier nur, weil ich nicht möchte, dass jemand davon abgehalten wird, daran zu arbeiten, weil er denkt, ich arbeite noch daran, obwohl ich es nicht tue.
TLDR: - Das einzige TEE, das dies derzeit tun kann (soweit ich sehen kann), ist TDX, da es die erforderlichen Garantien für verschlüsselten RAM bietet. (Denken Sie daran, dass es für dieses Projekt nicht ausreicht zu wissen, dass der richtige Code im TEE ausgeführt wird, Sie müssen AUCH wissen, dass ein physischer Angreifer am Gerät während der Zeremonie den RAM nicht dumpen und den giftigen Abfall lernen kann). - Die TDX Remote Attestation signiert über "MRTD", was ein Hash ist, der sich ändert, wenn sich auch nur ein Byte des VM-Images ändert. - Daher müssen zukünftige Prüfer/Nutzer, um zu überprüfen, dass TDX den richtigen Code während des vertrauenswürdigen Setups ausgeführt hat (insbesondere in automatisierter Form), in der Lage sein, diesen MRTD-Hash zu reproduzieren, was wiederum erfordert, dass das VM-Image aus dem menschenlesbaren Quellcode auf eine bitgenaue reproduzierbare Weise neu erstellt wird. - Ich war nicht in der Lage, ein GCP-Image auf eine bitgenaue reproduzierbare Weise zu erstellen. (Selbst ein super minimales, das nur bootet und einen SSH-Port öffnet und buchstäblich nichts anderes).
Ich bin mir nicht sicher, ob das mit den vorhandenen Standardwerkzeugen möglich ist. Es könnte erforderlich sein, bestehende Werkzeuge anzupassen. StageX war äußerst hilfreich, daher empfehle ich, es so oft wie möglich zu verwenden. Die Probleme treten auf, wenn Sie etwas benötigen, das derzeit nicht über eine StageX-Schicht verfügbar ist. Dann müssen Sie alles, was Sie benötigen, aus dem Quellcode erstellen (da das Herunterladen von Tarballs ohne eigene Kompilierung ein Risiko in der Lieferkette darstellt). Und ich habe festgestellt, dass das Erstellen/Kompilieren von _meist_ Software aus dem Quellcode auf eine bitgenaue reproduzierbare Weise äußerst zeitaufwendig, schwierig und anfällig ist. Und in vielen Fällen war ich nicht in der Lage, es *überhaupt* zu tun.
Ich empfehle, alle Builds von Software, die Sie benötigen, in einem Docker-Container durchzuführen, der nur aus hash-fixierten StageX-Schichten besteht. Diese Technik hat mir den größten Nutzen gebracht.
3,3K