Ok, etter 2 måneder med solid innsats, tapper jeg ut. Prosjektet "gjør Groth16 pålitelig oppsett i en TEE og få en ekstern attest på at det giftige avfallet ble ødelagt" har vært mislykket. Vil TLDR nedenfor. Nevner her bare fordi jeg ikke vil at noen skal bli frarådet å jobbe med det fordi de tror jeg fortsatt jobber med det når jeg faktisk ikke gjør det.
TLDR: - Den eneste TEE som for øyeblikket kan gjøre dette (AFAICT) er TDX, fordi den har de nødvendige krypterte RAM-garantiene. (Husk at for dette prosjektet er det ikke nok å vite at riktig kode kjører i TEE, du må OGSÅ vite at en fysisk angriper på maskinen ikke kan dumpe RAM under seremonien og lære det giftige avfallet). - Den eksterne TDX-attesteringen signerer over «MRTD», som er en hash som endres hvis en byte i VM-avbildningen endres. - For at en fremtidig revisor/bruker skal kunne verifisere at TDX-en kjørte riktig kode under det klarerte oppsettet (spesielt på en hvilken som helst automatisert måte), må de være i stand til å reprodusere den MRTD-hashen, som igjen krever å gjenoppbygge VM-bildet fra den lesbare kildekoden på en bit-for-bit reproduserbar måte. - Jeg har ikke vært i stand til å lage et GCP-bilde på en bit-for-bit reproduserbar måte. (Selv en super minimal en, som bare starter opp og åpner en SSH-port og bokstavelig talt ingenting annet).
Jeg er ikke sikker på at dette er mulig med eksisterende hylleverktøy. Det kan kreve justering av eksisterende verktøy. StageX var dypt nyttig, så jeg anbefaler å bruke det så mye som mulig. Problemene kommer når du trenger noe som for øyeblikket ikke er tilgjengelig via et StageX-lag. For da må du bygge det du trenger fra kilden (siden nedlasting av tarballer uten å bygge dem selv er en forsyningskjederisiko). Og jeg har funnet ut at det å bygge/kompilere _det meste_ programvare fra kilden på en bit-for-bit reproduserbar måte er usedvanlig tidkrevende, vanskelig og sprø. Og i mange tilfeller har jeg ikke vært i stand til å gjøre det *i det hele tatt*.
Jeg anbefaler å gjøre alle bygg av programvare du trenger inne i en Docker-beholder som bare består av hash-festede StageX-lag. Den teknikken har gitt meg mest kjørelengde.
3,26K