1 points par GN⁺ 2024-02-02 | 1 commentaires | Partager sur WhatsApp

Cryptographie résistante au quantique pour l’écosystème Go

  • filippo.io/mlkem768 est une implémentation pure Go de ML-KEM-768, optimisée pour l’exactitude et la lisibilité.
  • ML-KEM est un mécanisme d’échange de clés résistant au quantique en cours de standardisation par le NIST et déjà adopté dans la majeure partie de l’industrie.
  • Le package comprend environ 500 lignes de code, 200 lignes de commentaires et 650 lignes de tests, sans dépendance autre que golang.org/x/crypto/sha3.
  • Il est destiné à être intégré à la bibliothèque standard de Go et a été conçu pour offrir un haut niveau de confiance en matière de sécurité grâce à une revue facilitée, à sa simplicité et à des tests approfondis.

Une implémentation pour vérifier la spécification

  • Contrairement à la plupart des implémentations, ce code n’a pas été porté depuis la bibliothèque de référence pq-crystals et a été écrit de zéro sans lecture détaillée d’autres bases de code.
  • Le document FIPS 203 fournit un excellent guide d’implémentation grâce à un pseudo-code détaillé, des définitions rigoureuses et des informations de types cohérentes.
  • Afin d’améliorer la lisibilité du code et sa valeur comme ressource d’apprentissage, les noms des fonctions et des variables ainsi que l’ordre des opérations ont été soigneusement alignés sur la spécification FIPS.

Juste assez de polynômes et d’algèbre linéaire pour l’implémentation

  • La spécification demande un bagage mathématique relativement limité, mais pour faciliter le travail des implémenteurs, le document « Just enough polynomials and linear algebra for Kyber implementation » a été rédigé.
  • Le reste est laissé comme exercice au lecteur, notamment 1) l’arithmétique modulaire sur le nombre premier 3329, 2) l’implémentation concrète des fonctions de compression et de décompression de [0, 3329) vers [0, 2ᵈ), et 3) la garantie d’opérations en temps constant.

Lisibilité et valeur pédagogique

  • La lisibilité est l’un des objectifs principaux de l’implémentation, afin de permettre une revue efficace et de servir de ressource pédagogique pour la prochaine génération de mainteneurs et d’ingénieurs en cryptographie.
  • Pour améliorer la lisibilité des fonctions complexes, le code est parfois rendu plus long et moins réutilisable.

Un haut niveau de confiance en sécurité grâce aux tests

  • Les tests vérifient que la génération de clés, l’encapsulation et la décapsulation fonctionnent correctement, tout en maintenant une couverture de tests supérieure à 95 %.
  • Ils garantissent l’interopérabilité avec des vecteurs de test issus du NIST et d’autres implémentations, et testent en profondeur les opérations arithmétiques de base sur le corps fini en les comparant aux valeurs attendues.
  • Dans le cadre du projet CCTV, des vecteurs de test réutilisables par d’autres implémentations sont publiés.

Performances

  • Les performances ne sont pas l’objectif principal, mais le package doit être suffisamment rapide pour être utile.
  • ML-KEM est assez rapide, et cette implémentation simple peut rivaliser avec des implémentations P-256 et X25519 optimisées en assembleur.
  • Des efforts sont faits pour améliorer les performances, notamment en suivant les idiomes de programmation Go et en minimisant les allocations sur le tas.

Utiliser une implémentation ML-KEM comme Kyber v3

  • Le NIST a apporté quelques petites modifications à la soumission Round 3 de Kyber.
  • Quelques protocoles expérimentaux sont définis sur la base de Kyber v3 (ou « draft00 »), mais il n’est pas nécessaire de créer un package séparé.
  • On peut utiliser ML-KEM pour générer le secret partagé K, puis appliquer une dérivation de clé supplémentaire afin d’obtenir le secret partagé Kyber.

L’avis de GN⁺

  • L’importance de la cryptographie résistante au quantique : avec les progrès de l’informatique quantique, les techniques de chiffrement existantes pourraient devenir vulnérables ; le développement et la standardisation de technologies résistantes au quantique comme ML-KEM sont donc très importants.
  • L’extensibilité du langage Go : cette implémentation montre l’extensibilité et la flexibilité de Go, et le projet d’intégrer une bibliothèque cryptographique à la bibliothèque standard en fera une ressource utile pour la communauté des développeurs Go.
  • Valeur pédagogique : l’approche axée sur la lisibilité du code et sa valeur pédagogique constituera une excellente ressource d’apprentissage pour la prochaine génération d’ingénieurs en cryptographie et pour les développeurs intéressés.

1 commentaires

 
GN⁺ 2024-02-02
Commentaires Hacker News
  • Question sur l’état actuel de l’informatique quantique

    Doute sur le fait que l’informatique quantique ait réellement atteint un niveau où elle est nécessaire, ou si, comme pour l’IA, la définition évolue pour relancer des produits existants sous un nouveau nom.

  • Salutations et partage de Kudelski Security

    Présentation d’un cas récent chez Kudelski Security où ils ont dû abandonner l’une de leurs bibliothèques en Go pour la cryptographie post-quantique. Plus de détails sont disponibles dans l’article lié.

  • Recommandation d’un livre sur les systèmes cryptographiques implémentés en Go

    Présentation du livre de John Arundel sur l’implémentation de systèmes cryptographiques avec Go 1.22. La fin de l’ouvrage mentionne la cryptographie post-quantique, et le livre pourrait être mis à jour après la normalisation PQ du NIST.

  • Question sur des implémentations dans d’autres langages (Java, C#, etc.)

    Question demandant des informations sur des implémentations similaires dans d’autres langages de programmation.

  • Préoccupations concernant une implémentation purement écrite en Go

    Inquiétude exprimée quant au fait qu’une implémentation purement écrite en Go puisse être vulnérable aux attaques par canaux auxiliaires de type timing/puissance.

  • Intérêt et question sur le support de Kyber v3

    Évaluation positive du support de draft00/kyber v3 et question sur la possibilité de prendre en charge le mode Kyber 90's sans SHA-3.

  • Blague sur la table des appels système 32 bits

    Blague disant que la table des appels système 32 bits « sort bientôt ».

  • Appréciation de l’usage de noms de variables Unicode

    Même sans être capable de juger de la qualité de l’algorithme ou de l’implémentation, appréciation très positive de l’usage de variables Unicode.

  • Éloges pour d’autres projets de FiloSottile

    Expression d’une appréciation pour un autre outil développé par FiloSottile, « age ».

  • Partage du lien vers le document NIST FIPS 203

    Partage du lien vers le document NIST FIPS 203 mentionné dans l’article.