Dobrze, po 2 miesiącach solidnych wysiłków, rezygnuję. Projekt "zrób zaufaną konfigurację Groth16 w TEE i uzyskaj zdalną atestację, że toksyczne odpady zostały zniszczone" okazał się nieudany. Podsumuję poniżej. Wspominam o tym tylko dlatego, że nie chcę, aby ktokolwiek zniechęcał się do pracy nad tym, myśląc, że wciąż nad tym pracuję, podczas gdy w rzeczywistości już nie.
TLDR: - Jedynym TEE, które obecnie może to zrobić (AFAICT), jest TDX, ponieważ ma wymagane gwarancje szyfrowanej pamięci RAM. (Pamiętaj, że w tym projekcie nie wystarczy wiedzieć, że poprawny kod działa w TEE, musisz RÓWNIEŻ wiedzieć, że fizyczny atakujący przy maszynie nie może zrzucić pamięci RAM podczas ceremonii i poznać toksyczne odpady). - Zdalne poświadczenie TDX podpisuje „MRTD”, który jest hashem, który zmieni się, jeśli jakikolwiek bajt obrazu VM się zmieni. - Aby przyszły audytor/użytkownik mógł zweryfikować, że TDX działał z poprawnym kodem podczas zaufanej konfiguracji (szczególnie w jakikolwiek zautomatyzowany sposób), muszą być w stanie odtworzyć ten hash MRTD, co z kolei wymaga odbudowy obrazu VM z czytelnego dla człowieka kodu źródłowego w sposób bit po bicie. - Nie udało mi się stworzyć obrazu GCP w sposób bit po bicie. (Nawet super minimalny, który po prostu uruchamia się i otwiera port SSH i dosłownie nic więcej).
Nie jestem pewien, czy to możliwe z istniejącymi narzędziami dostępnymi na rynku. Może to wymagać dostosowania istniejących narzędzi. StageX był niezwykle pomocny, więc polecam korzystać z niego tak często, jak to możliwe. Problemy pojawiają się, gdy potrzebujesz czegokolwiek, co nie jest obecnie dostępne przez warstwę StageX. Wtedy musisz zbudować wszystko, czego potrzebujesz, z kodu źródłowego (ponieważ pobieranie tarballi bez ich samodzielnego budowania stanowi ryzyko w łańcuchu dostaw). I odkryłem, że budowanie/kompilowanie _większości_ oprogramowania z kodu źródłowego w sposób bit po bicie powtarzalny jest niezwykle czasochłonne, trudne i delikatne. W wielu przypadkach nie byłem w stanie tego zrobić *wcale*.
Zalecam, aby wszelkie budowy oprogramowania, które potrzebujesz, przeprowadzać w kontenerze Docker, który składa się wyłącznie z warstw StageX przypiętych do hasha. Ta technika przyniosła mi najwięcej korzyści.
3,26K