D'accord, après 2 mois d'efforts soutenus, je jette l'éponge. Le projet "faire un setup de confiance Groth16 dans un TEE et obtenir une attestation à distance que les déchets toxiques ont été détruits" a échoué. Je ferai un résumé ci-dessous. Je le mentionne ici uniquement parce que je ne veux pas que quelqu'un soit dissuadé de travailler dessus parce qu'il pense que je travaille encore dessus alors qu'en réalité, ce n'est pas le cas.
TLDR: - Le seul TEE qui peut actuellement faire cela (AFAICT) est TDX, car il dispose des garanties de RAM chiffrée requises. (Rappelez-vous, pour ce projet, il ne suffit pas de savoir que le bon code s'exécute dans le TEE, vous devez également savoir qu'un attaquant physique sur la machine ne peut pas décharger la RAM pendant la cérémonie et apprendre les déchets toxiques). - L'attestation à distance TDX signe sur "MRTD", qui est un hachage qui changera si un seul octet de l'image VM change. - Ainsi, pour qu'un futur auditeur/utilisateur puisse vérifier que le TDX exécutait le bon code pendant la configuration de confiance (surtout de manière automatisée), il doit être capable de reproduire ce hachage MRTD, ce qui nécessite à son tour de reconstruire l'image VM à partir du code source lisible par l'homme de manière bit à bit reproductible. - Je n'ai pas réussi à créer une image GCP de manière bit à bit reproductible. (Même une image super minimale, qui ne démarre que et ouvre un port SSH et littéralement rien d'autre).
Je ne suis pas sûr que cela soit possible avec les outils disponibles sur le marché. Cela peut nécessiter d'ajuster les outils existants. StageX a été extrêmement utile, donc je recommande de l'utiliser autant que possible. Les problèmes surviennent lorsque vous avez besoin de quelque chose qui n'est pas actuellement disponible via une couche StageX. Dans ce cas, vous devez construire ce dont vous avez besoin à partir de la source (car télécharger des tarballs sans les construire vous-même représente un risque pour la chaîne d'approvisionnement). Et j'ai constaté que construire/compilier _la plupart_ des logiciels à partir de la source de manière reproductible bit à bit est extraordinairement chronophage, difficile et fragile. Et dans de nombreux cas, je n'ai pas pu le faire *du tout*.
Je recommande de faire toutes les constructions de tout logiciel dont vous avez besoin à l'intérieur d'un conteneur Docker qui ne contient que des couches StageX ancrées par hachage. Cette technique m'a donné le meilleur rendement.
3,31K