← Derniers articles
💻 computer science

GCD: Garbled, Corrected, Demonstrandum -- Fixing and Proving Go's Extended GCD Implementation

Cet article identifie et corrige deux écarts critiques dans l'implémentation de l'algorithme d'Euclide étendu de Go qui compromettent la génération de clés RSA, prouvant par la suite la correction et la terminaison du code corrigé à l'aide des outils de vérification Gobra et Lean tout en démontrant comment les agents d'IA peuvent aider à affiner les preuves formelles.

Auteurs originaux : Linard Arquint

Publié 2026-06-05
📖 5 min de lecture🧠 Analyse approfondie

Auteurs originaux : Linard Arquint

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

Imaginez que vous construisez un coffre-fort numérique hautement sécurisé (comme ceux utilisés pour la banque en ligne ou la messagerie sécurisée). Pour verrouiller et déverrouiller ce coffre-fort, vous avez besoin d'une clé mathématique très spécifique et complexe. Dans le monde de l'informatique, cette clé est générée en utilisant une recette appelée l'algorithme du Plus Grand Commun Diviseur (PGCD) étendu.

Ce document traite d'une équipe de chercheurs qui est allée dans la « cuisine » du langage de programmation Go (un outil populaire utilisé pour construire des logiciels) pour vérifier si la recette de cette clé était suivie correctement. Ils ont découvert que la recette avait été légèrement altérée, et ils l'ont corrigée tout en prouvant mathématiquement que la nouvelle version fonctionne parfaitement.

Voici l'histoire de leur découverte, décomposée en parties simples :

1. L'erreur de « Copier-Coller »

Les développeurs de Go voulaient mettre à jour leur logiciel pour répondre à des normes de sécurité gouvernementales strictes. Pour ce faire, ils ont pris une recette provenant d'une source fiable et bien connue appelée BoringSSL (une bibliothèque sécurisée utilisée par Google) et l'ont « portée » (traduite) en Go.

Imaginez que c'est comme si un chef célèbre vous donnait une recette secrète pour un gâteau. Vous décidez de réécrire la recette de votre propre main pour la rendre plus facile à lire. Le document affirme qu'en réécant la recette, les développeurs de Go ont accidentellement modifié deux étapes importantes.

  • Le Problème : La recette originale avait une règle stricte : « Si vous ajoutez ces deux nombres, et que le résultat est trop grand, vous devez soustraire une quantité spécifique des deux nombres en même temps. » Cela empêche le gâteau de s'effondrer.
  • Le Bug : La version Go effectuait cette vérification de « trop grand » séparément pour chaque nombre. C'était comme vérifier la farine et le sucre indépendamment. Cela brisait l'équilibre mathématique (les « invariants ») qui garantit que la clé est correcte.
  • La Surprise : Trois experts humains différents ont examiné le code et n'ont pas vu cette erreur. Elle était si subtile qu'elle a échappé au filet de sécurité.

2. L'ingrédient « Trop Grand »

Le second problème concernait la taille des ingrédients autorisés.

  • La Règle : La recette originale disait : « Le premier ingrédient doit toujours être plus petit que le second. »
  • Le Changage : La version Go permettait au premier ingrédient d'être plus grand que le second.
  • La Correction : Les chercheurs n'ont pas eu besoin de modifier le code pour cela. Au lieu de cela, ils ont dû mettre à jour la « preuve » (la garantie mathématique) pour montrer que la recette fonctionne toujours avec des ingrédients plus grands.

3. Le Détective Magique (Gobra)

Pour prouver qu'ils avaient corrigé les bugs, les chercheurs ont utilisé un outil appelé Gobra.

  • L'Analogie : Imaginez un inspecteur robotique super strict et hyper attentif. Vous lui donnez le code et une liste de règles (spécifications). Le robot ne se contente pas d'exécuter le code ; il simule chaque façon possible dont le code pourrait s'exécuter, vérifiant chaque chemin pour s'assurer qu'il ne viole jamais les règles.
  • Le Résultat : Le robot a confirmé qu'une fois le « bug de synchronisation » corrigé, le code était 100 % correct. En fait, parce que la correction a supprimé des étapes inutiles, le nouveau code s'exécute en réalité 24 % plus vite que la version buggée.

4. L'Assistant IA

Les chercheurs n'ont pas fait tout le travail difficile seuls. Ils ont utilisé un agent d'IA (un programme informatique intelligent) pour les aider.

  • Comment cela fonctionnait : L'IA agissait comme un apprenti infatigable. Quand le robot inspecteur (Gobra) disait : « Cette partie n'a pas de sens », l'IA suggérait des modifications aux règles ou au code.
  • Le Piège : L'IA supposait initialement que le code était parfait et essayait de forcer les mathématiques à correspondre. Les chercheurs humains ont dû lui dire : « Non, le code est réellement faux ; cherche la différence. » Une fois que l'IA a compris cela, elle est devenue incroyablement utile, suggérant des corrections et aidant à écrire les preuves mathématiques.

5. La Conclusion

Le document conclut par trois leçons principales :

  1. Même les experts font des erreurs subtiles : Trois réviseurs humains ont manqué un bug critique qu'un outil de preuve formelle a trouvé.
  2. La vérification formelle est puissante : Utiliser un outil comme Gobra, c'est comme avoir une garantie mathématique que votre code fonctionne, plutôt que d'espérer simplement qu'il fonctionne parce qu'il a passé quelques tests.
  3. L'IA est un excellent partenaire : L'IA peut aider les humains à écrire ces preuves complexes, mais les humains doivent toujours guider l'IA pour qu'elle remette en question le code plutôt que de simplement l'accepter.

En bref : Les chercheurs ont trouvé une faille cachée dans un algorithme de sécurité critique dans la bibliothèque standard de Go, l'ont corrigée, ont prouvé mathématiquement que la correction fonctionne, et ont montré que la correction rend en fait le logiciel plus rapide. Ils ont fait cela en combinant l'intuition humaine, des outils de preuve automatisés et l'assistance de l'IA.

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.

Essayer Digest →