Ладно, после 2 месяцев упорных усилий, я начинаю отбиваться. Проект «Сделай Groth16 доверенной установкой в TEE и получи удаленное подтверждение того, что токсичные отходы были уничтожены» не увенчался успехом. Будет TLDR ниже. Упоминаю здесь только потому, что не хочу, чтобы кого-то отговаривали от работы над этим, потому что они думают, что я все еще работаю над этим, хотя на самом деле это не так.
Кратко: - Единственный TEE, который в настоящее время может это сделать (насколько я понимаю), это TDX, потому что он имеет необходимые гарантии зашифрованной оперативной памяти. (Помните, для этого проекта недостаточно знать, что правильный код выполняется в TEE, вам ТАКЖЕ нужно знать, что физический атакующий не может сбросить оперативную память во время церемонии и узнать о токсичных отходах). - Удаленная аттестация TDX подписывает "MRTD", который является хешем, который изменится, если изменится любой байт образа VM. - Таким образом, для будущего аудитора/пользователя, чтобы проверить, что TDX выполнял правильный код во время доверенной настройки (особенно в каком-либо автоматизированном формате), им необходимо воспроизвести этот хеш MRTD, что, в свою очередь, требует восстановления образа VM из читаемого человеком исходного кода в воспроизводимом формате бит за битом. - Мне не удалось создать образ GCP в воспроизводимом формате бит за битом. (Даже супер минимальный, который просто загружается и открывает SSH-порт и буквально ничего больше).
Я не уверен, что это возможно с существующими готовыми инструментами. Это может потребовать настройки существующего инструментария. StageX был очень полезен, поэтому я рекомендую использовать его как можно чаще. Проблемы возникают, когда вам нужно что-то, что в настоящее время недоступно через слой StageX. В этом случае вам нужно собрать все, что вам нужно, из исходных кодов (поскольку загрузка tar-архивов без их самостоятельной сборки — это риск цепочки поставок). И я обнаружил, что создание/компиляция _большинства_ программного обеспечения из исходных кодов побитно воспроизводимым способом чрезвычайно трудоемка, сложна и хрупка. И во многих случаях мне удавалось сделать это *вообще*.
Я рекомендую собирать любое программное обеспечение, которое вам нужно, внутри контейнера Docker, состоящего только из слоев StageX с зафиксированными хэшами. Эта техника дала мне наибольшую отдачу.
3,77K