Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
Cet article résout la régression à l'infini de l'attestation mutuelle en appliquant le second théorème de récursion de Kleene pour construire des nœuds capables de reconstruire et de vérifier mutuellement leur code source exact à partir de données intégrées seules, éliminant ainsi le besoin de tiers de confiance ou de valeurs de référence externes à travers différentes architectures informatiques.
Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète
Dans le monde de l'informatique sécurisée, il est fondamental de prouver qu'un programme informatique est exactement ce qu'il prétend être. Ce processus, connu sous le nom d'attestation à distance, est l'équivalent numérique d'un agent de sécurité vérifiant un permis de conduire avant de laisser entrer une personne dans un bâtiment restreint. L'agent compare la photo et les détails du permis à une base de données de confiance indiquant à quoi doit ressembler un permis valide. Si les détails correspondent, la personne est autorisée à entrer. Dans le domaine numérique, un programme informatique génère une empreinte digitale unique, appelée mesure, qui est comparée à une valeur de référence — une empreinte connue et attendue — détenue par le vérificateur. Ce système fonctionne parfaitement lorsqu'une partie vérifie une autre, mais il se heurte à un mur logique lorsque deux ordinateurs ou plus doivent se vérifier mutuellement de manière simultanée. Si l'ordinateur A doit connaître l'empreinte de l'ordinateur B pour le vérifier, et que l'ordinateur B doit connaître l'empreinte de l'ordinateur A pour le vérifier, aucun des deux ne peut commencer le processus sans déjà avoir la réponse. Cela crée une dépendance circulaire où chaque machine attend que l'autre fournisse la preuve même dont elle a besoin pour commencer.
Des chercheurs d'Acompany Co., Ltd. à Nagoya, au Japon, ont trouvé un moyen de briser ce cercle sans dépendre d'une autorité centrale ou d'une liste préexistante de codes de confiance. Ils ont abordé le problème non pas comme un puzzle de sécurité, mais comme une question de logique et d'auto-référence. En appliant un principe mathématique connu sous le nom de second théorème de récursion de Kleene, ils ont démontré qu'un groupe d'ordinateurs peut être programmé pour contenir le code source exact de tous les autres membres au sein de sa propre mémoire. Cela permet à chaque machine de reconstruire le code de ses pairs à partir de zéro, de calculer l'empreinte correcte à la volée et de vérifier l'identité de l'autre sans jamais avoir besoin de demander la réponse à une partie extérieure. L'équipe a construit des prototypes fonctionnels pour prouver ce concept, montrant que deux ordinateurs sécurisés pouvaient vérifier avec succès l'intégrité de l'un l'autre en utilisant uniquement les données qu'ils transportaient avec eux.
Le cœur du problème réside dans la nature des environnements sécurisés modernes, tels que les environnements d'exécution de confiance (Trusted Execution Environments), qui sont des espaces isolés où des données sensibles peuvent être traitées sans crainte d'être vues ou altérées. Dans une configuration typique, un seul ordinateur prouve sa fiabilité à un serveur. Le serveur détient une liste d'empreintes de code approuvées et vérifie le rapport de l'ordinateur par rapport à cette liste. Cependant, dans un réseau décentralisé où plusieurs ordinateurs doivent collaborer sur des tâches confidentielles, chaque machine agit à la fois comme le vérificateur et le vérifié. S'ils tentent d'intégrer en dur les empreintes attendues de leurs partenaires dans leur propre logiciel, ils se retrouvent dans une boucle infinie. Pour connaître l'empreinte du Partenaire B, l'ordinateur A doit connaître le code du Partenaire B. Or, le code du Partenaire B contient l'empreinte de l'ordinateur A, ce qui nécessite de connaître le code de l'ordinateur A, qui contient lui-même l'empreinte du Partenaire B, et ainsi de suite indéfiniment. Les solutions précédentes à ce dilemme consistaient à faire appel à une tierce partie de confiance pour distribuer les empreintes, ou à s'appuyer sur des fonctionnalités matérielles spécifiques pour injecter les valeurs lors du démarrage. Ces méthodes fonctionnent, mais elles réintroduisent un point central de confiance ou lient la solution à un type de matériel spécifique, limitant ainsi son utilisation.
Les chercheurs ont proposé une voie différente en traitant le groupe d'ordinateurs comme un système unique et interconnecté. Ils ont réalisé que la dépendance circulaire pouvait être résolue si chaque ordinateur pouvait générer le code de ses pairs à partir d'un ensemble d'instructions partagées. En utilisant un concept de l'informatique qui permet à un programme de se référer à son propre code source, ils ont conçu une méthode où un groupe de programmes est transformé en un ensemble d'unités autonomes. Chaque unité porte une description complète de toute la famille de programmes en son sein. Lorsqu'un ordinateur démarre, il lit cette description interne, reconstruit le code source exact de son partenaire, puis calcule l'empreinte de ce dernier. Parce que la reconstruction est effectuée de l'intérieur, l'ordinateur n'a pas besoin de faire confiance à une liste externe ; il calcule simplement la réponse à partir des données qu'il possède déjà. Cette approche élimine le besoin d'une autorité centrale et fonctionne sur différents types de matériel sécurisé sans nécessiter de modifications des outils de sécurité sous-jacents.
Pour prouver cette théorie, l'équipe a créé deux démonstrations fonctionnelles. La première s'est concentrée sur des systèmes qui mesurent directement le code lorsqu'il s'exécute, comme les systèmes Linux standards. Ils ont construit un outil appelé PyReflect, qui prend un modèle de code et génère automatiquement les programmes auto-référencés. Dans leur test, deux machines virtuelles soutenues par un module de sécurité logiciel ont réussi à échanger des rapports de vérification. Chaque machine a reconstruit le code de l'autre, a calculé l'empreinte attendue et a confirmé que le pair exécutait le logiciel correct. La seconde démonstration concernait les systèmes qui mesurent un artefact de compilation, tels que les AWS Nitro Enclaves, qui sont des conteneurs sécurisés spécialisés. Ici, le processus est plus complexe car l'ordinateur doit non seulement reconstruire le code source, mais aussi reconstruire exactement le fichier exécutable final tel qu'il a été créé. Ils ont développé un outil nommé NixReflect pour gérer cela. Dans leur expérience, deux enclaves sécurisées ont été lancées, et chacune a reconstruit indépendamment l'image entière de l'autre à partir des données stockées dans sa propre mémoire. Elles ont ensuite calculé l'empreinte de l'image reconstruite et l'ont comparée à celle rapportée par le pair. Les résultats correspondaient parfaitement, prouvant que les machines pouvaient dériver les valeurs de référence correctes à partir de leurs propres données internes.
Les chercheurs ont également mesuré le coût de cette approche. Dans le cas des enclaves sécurisées, le processus de reconstruction de l'image du pair a pris nettement plus de temps que le simple calcul d'un hachage du code. Pour leur cas de test spécifique, le processus de reconstruction et de reconstruction de l'image a pris environ 6,8 secondes, tandis qu'un simple calcul de hachage prenait moins de 0,1 seconde. Cette différence est censée augmenter pour des applications plus complexes, car l'ordinateur doit parcourir toute la chaîne de dépendances pour reconstruire le logiciel. Malgré ce coût temporel, l'expérience a confirmé que la méthode est réalisable et ne nécessite ni nouveau matériel ni tierce partie de confiance. L'équipe a noté que pour des systèmes plus complexes, il pourrait être possible de décharger le processus de reconstruction vers un environnement de construction sécurisé avant le déploiement, ce qui réduirait le coût d'exécution, bien que cela introduise un autre ensemble d'hypothèses de confiance concernant l'environnement de construction.
La portée de ce travail réside dans sa capacité à résoudre un blocage logique qui entrave depuis longtemps l'informatique décentralisée sécurisée. En démontrant que l'attestation mutuelle peut être réalisée par une reconstruction autonome, les chercheurs ont ouvert la voie à des réseaux de pair à pair où aucun participant ne fait l'objet d'une confiance absolue par une entité unique. La solution est indépendante de l'architecture, ce qui signifie qu'elle peut être appliquée à divers types de matériel sécurisé sans nécessiter de modifications personnalisées du matériel. Elle repose sur les propriétés fondamentales du calcul plutôt que sur des caractéristiques matérielles spécifiques, ce qui en fait un outil polyvalent pour l'avenir de l'informatique confidentielle. Bien que les prototypes actuels soient des démonstrations de preuve de concept, ils établissent que le problème du démarrage des valeurs de référence peut être résolu sans tierce partie de confiance, ouvant la porte à des réseaux sécurisés plus robustes et indépendants.
Noyé(e) sous les articles dans votre domaine ?
Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.