Oke, setelah 2 bulan usaha yang solid, saya mengetuk. Proyek "lakukan pengaturan tepercaya Groth16 di TEE dan dapatkan pengesahan jarak jauh bahwa limbah beracun telah dihancurkan" tidak berhasil. Akan TLDR di bawah. Menyebutkan di sini hanya karena saya tidak ingin ada yang terhalang untuk mengerjakannya karena mereka pikir saya masih mengerjakannya padahal sebenarnya saya tidak.
TLDR: - Satu-satunya TEE yang saat ini dapat melakukan ini (AFAICT) adalah TDX, karena memiliki jaminan RAM terenkripsi yang diperlukan. (Ingat, untuk proyek ini tidak cukup untuk mengetahui bahwa kode yang benar berjalan di TEE, Anda JUGA perlu tahu bahwa penyerang fisik di mesin tidak dapat membuang RAM selama upacara dan mempelajari limbah beracun). - Pengesahan jarak jauh TDX menandatangani "MRTD", yang merupakan hash yang akan berubah jika ada byte dari gambar VM yang berubah. - Jadi agar auditor/pengguna di masa depan dapat memverifikasi bahwa TDX menjalankan kode yang benar selama pengaturan tepercaya (terutama dengan cara otomatis apa pun), mereka harus dapat mereproduksi hash MRTD itu, yang pada gilirannya membutuhkan membangun kembali gambar VM dari kode sumber yang dapat dibaca manusia dengan cara yang dapat direproduksi bit-for-bit. - Saya tidak dapat membuat gambar GCP dengan cara yang dapat direproduksi bit demi bit. (Bahkan yang sangat minimal, itu hanya mem-boot dan membuka port SSH dan secara harfiah tidak ada yang lain).
Saya tidak yakin ini mungkin dengan perkakas siap pakai yang ada. Ini mungkin memerlukan penyesuaian perkakas yang ada. StageX sangat membantu, jadi saya sarankan menggunakannya sebanyak mungkin. Masalahnya muncul ketika Anda membutuhkan sesuatu yang saat ini tidak tersedia melalui lapisan StageX. Karena kemudian Anda perlu membangun apa pun yang Anda butuhkan dari sumber (karena mengunduh tarball tanpa membangunnya sendiri adalah risiko rantai pasokan). Dan saya telah menemukan bahwa membangun/mengkompilasi _most_ perangkat lunak dari sumber dengan cara yang dapat direproduksi bit-for-bit sangat memakan waktu, sulit, dan rapuh. Dan dalam banyak kasus saya tidak dapat melakukannya *sama sekali*.
Saya merekomendasikan untuk melakukan build perangkat lunak apa pun yang Anda butuhkan di dalam wadah Docker yang hanya terdiri dari lapisan StageX yang disematkan hash. Teknik itu telah memberi saya jarak tempuh paling banyak.
3,3K