Oké, na 2 maanden van stevige inspanning, tik ik eruit. Het project "do Groth16 vertrouwde opstelling in een TEE en ontvang een attest op afstand dat het giftige afval is vernietigd" is niet succesvol geweest. Zal TLDR hieronder. Ik noem het hier alleen omdat ik niet wil dat iemand ervan wordt weerhouden eraan te werken omdat ze denken dat ik er nog steeds aan werk, terwijl dat in feite niet zo is.
TLDR: - De enige TEE die dit momenteel kan doen (voor zover ik kan zien) is TDX, omdat het de vereiste garanties voor versleuteld RAM heeft. (Vergeet niet, voor dit project is het niet genoeg om te weten dat de juiste code draait in de TEE, je MOET ook weten dat een fysieke aanvaller bij de machine het RAM niet kan dumpen tijdens de ceremonie en de giftige afvalstoffen kan leren). - De TDX remote attestation ondertekent "MRTD", wat een hash is die verandert als er ook maar één byte van de VM-afbeelding verandert. - Dus voor een toekomstige auditor/gebruiker om te verifiëren dat de TDX de juiste code draaide tijdens de vertrouwde setup (vooral op een geautomatiseerde manier), moeten ze in staat zijn om die MRTD-hash te reproduceren, wat op zijn beurt vereist dat de VM-afbeelding opnieuw wordt opgebouwd vanuit de mens leesbare broncode op een bit-voor-bit reproduceerbare manier. - Ik ben er niet in geslaagd om een GCP-afbeelding op een bit-voor-bit reproduceerbare manier te maken. (Zelfs een super minimale, die gewoon opstart en een SSH-poort opent en letterlijk niets anders).
Ik weet niet zeker of dit mogelijk is met bestaande kant-en-klare tooling. Het kan nodig zijn om bestaande tooling aan te passen. StageX was zeer nuttig, dus ik raad aan om dat zoveel mogelijk te gebruiken. De problemen komen wanneer je iets nodig hebt dat momenteel niet beschikbaar is via een StageX-laag. Want dan moet je alles wat je nodig hebt vanaf de bron bouwen (want het downloaden van tarballs zonder ze zelf te bouwen is een risico in de toeleveringsketen). En ik heb gemerkt dat het bouwen/compileren van _meeste_ software vanaf de broncode op een bit-voor-bit reproduceerbare manier buitengewoon tijdrovend, moeilijk en broos is. En in veel gevallen ben ik er *helemaal* niet in geslaagd om het te doen.
Ik raad aan om alle builds van software die je nodig hebt binnen een Docker-container te doen die alleen bestaat uit hash-gepinde StageX-lagen. Die techniek heeft me de meeste voordelen opgeleverd.
3,76K