Ok, depois de 2 meses de esforço sólido, estou batendo fora. O projeto "do Groth16 confiou em uma configuração em um TEE e obteve um atestado remoto de que o lixo tóxico foi destruído" não foi bem-sucedido. Será TLDR abaixo. Mencionando aqui apenas porque eu não quero que ninguém seja dissuadido de trabalhar nisso porque eles acham que eu ainda estou trabalhando nisso quando na verdade eu não estou.
TLDR: - O único TEE que atualmente pode fazer isso (AFAICT) é o TDX, porque possui as garantias de RAM criptografada necessárias. (Lembre-se, para este projeto não é suficiente saber que o código correto está a ser executado no TEE, você TAMBÉM precisa saber que um atacante físico na máquina não pode despejar a RAM durante a cerimônia e aprender sobre os resíduos tóxicos). - A atestação remota do TDX assina sobre "MRTD", que é um hash que mudará se qualquer byte da imagem do VM mudar. - Assim, para um auditor/usuário futuro verificar que o TDX estava a executar o código correto durante a configuração confiável (especialmente de qualquer forma automatizada), eles precisam ser capazes de reproduzir esse hash MRTD, o que, por sua vez, requer reconstruir a imagem do VM a partir do código-fonte legível por humanos de uma maneira reprodutível bit a bit. - Não consegui criar uma imagem GCP de uma maneira reprodutível bit a bit. (Mesmo uma super mínima, que apenas inicializa e abre uma porta SSH e literalmente nada mais).
Não tenho a certeza de que isso seja possível com as ferramentas prontas a utilizar. Pode ser necessário ajustar as ferramentas existentes. O StageX foi profundamente útil, então eu recomendo usar isso o máximo possível. Os problemas surgem quando você precisa de algo que não está disponível no momento através de uma camada StageX. Para então você precisa construir o que você precisa a partir da fonte (como baixar tarballs sem construí-los você mesmo é um risco da cadeia de suprimentos). E descobri que construir/compilar _most_ software a partir do código-fonte de uma forma reprodutível bit por bit é extraordinariamente demorado, difícil e frágil. E em muitos casos eu não consegui fazer isso *de todo*.
Recomendo que faça qualquer construção de qualquer software que precise dentro de um contêiner Docker que consista apenas em camadas StageX fixadas por hash. Essa técnica me deu o maior retorno.
3,71K