Okay, nach 2 Monaten solider Anstrengung klopfe ich auf. Das Projekt "Vertrauenswürdige Einrichtung von Groth16 in einem TEE und eine Remote-Bescheinigung, dass der Giftmüll vernichtet wurde" war nicht erfolgreich. Wird TLDR unten. Ich erwähne es hier nur, weil ich nicht möchte, dass sich jemand davon abhalten lässt, daran zu arbeiten, weil er denkt, dass ich immer noch daran arbeite, obwohl ich es in Wirklichkeit 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 dies mit vorhandenen Standardwerkzeugen möglich ist. Möglicherweise müssen vorhandene Tools angepasst werden. StageX war sehr 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 einen StageX-Layer verfügbar ist. Denn dann müssen Sie alles, was Sie brauchen, aus dem Quellcode erstellen (da das Herunterladen von Tarballs, ohne sie selbst zu erstellen, ein Risiko für die Lieferkette darstellt). Und ich habe festgestellt, dass das Erstellen/Kompilieren der _meisten_ Software aus dem Quellcode auf eine bitweise Reproduzierbarkeit außerordentlich zeitaufwändig, schwierig und spröde ist. Und in vielen Fällen war ich *überhaupt* nicht in der Lage, es 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,68K