Crypto post-quantique

Ce dont je vais parler dépend surtout d’autres projets donc il n’y a pas forcément à s’en préoccuper dans l’immédiat, mais il est bon de faire une veille sur le sujet.

Il y a 2 ans on riait encore des ordinateurs quantiques, maintenant il n’est pas exclu que dans quelques années ils parviennent à casser la cryptographie classique.

Explications sur quantique/post-quantique

La cryptographie à clé publique classique (utilisée pour HTTPS, la blockchain, les distributions Linux) risque d’être définitivement attaquable par des ordinateurs quantiques assez puissants, qui n’existent pas encore mais peut-être bientôt.
La crypto post-quantique (PQC :roll_of_toilet_paper:) représente les systèmes crypto qui sont a priori résistants à une attaque par un ordinateur quantique.

Les fonctions de hachage (SHA) et le chiffrement symétrique (AES, Chacha) restent sûrs. Au pire il suffira de doubler la taille des clés.

Avec les compétitions du NIST, on a une bonne (mais restreinte) sélection d’algos qui pourraient remplacer les algos actuels, et il y a désormais des implémentations en logiciel libre. Certains projets libres grand public se lancent déjà dans le post-quantique (Signal, CryptPad). TLS post-quantique est en travaux aussi.

Les algos post-quantiques étant souvent assez récents, il peut être plus sûr de les utiliser conjointement avec un algo classique. (crypto hybride)

Message intéressant : Post-quantum signatures - Tech Talk - Polkadot Forum

Les risques

Que pourrait faire un attaquant quantique à la Ğ1 ?

Casser Ed25519 et d’autres algos utilisés dans Substrate.

  • Lire les messages chiffrés en Ed25519 (messagerie Cesium+)
    • :scream: Tous les messages chiffrés en asymétrique peuvent être récoltés par un attaquant et déchiffrés quand l’ordinateur quantique sera là.
  • Publier des transactions ou des blocs en usurpant des signatures
    • :stopwatch: Ce ne sera pas un problème avant que l’attaquant quantique existe : on ne peut pas réécrire le passé.
  • Pister les transactions anonymes (si on utilise les signatures en anneau ou ĞMixer)
    • :+1: On n’en a pas encore, tout va bien.

Les solutions

On va surtout devoir attendre que le travail soit fait côté Substrate.

Pour les signatures, le seul algo post-quantique utilisable en pratique (et finaliste de la compétition du NIST) est Falcon. Il est assez rapide, mais les clés publiques et signatures font de l’ordre de 1ko (contre 32 octets pour Ed25519). Il pourrait remplacer Ed25519 sans rien changer d’autre, à part que les adresses ne pourront plus être directement des clés publiques (ce qui en fait est un gros changement).

Pour la messagerie chiffrée, déjà il faut utiliser un protocole avec échange de clés éphémères à la Signal. Ensuite il faudrait passer à un échange de clés post-quantique. Signal a publié une documentation.

Pour les transactions anonymes, il existe des schémas de signature en anneau post-quantiques mais trop lourds pour le runtime. Je ne sais pas encore comment faire.

Je vais essayer de finir mon travail sur la messagerie chiffrée avant d’y ajouter le post-quantique. C’est le plus urgent à mon avis.

3 Likes

Je pense que tu pourrais être intéressé par ces deux “discutions” (le première n’en étant pas vraiment une) sur le forum de Polkadot, qui sont plus ou moins en lien avec le tiens (pas totalement non plus):

Quelques autres mentions en recherchant Post-Quantum sur leur forum, notamment une discutions sur le principe de messagerie décentralisé pour Polkadot/Substrate.


Je pense que si je sujet nous semble important côté Duniter, nous ferions mieux d’en discuter avec l’équipe de Substrate (peut être via des canaux plus directs que ce forum), pour chercher à implémenter la brique côté Substrate directement (si nécessaire), plutôt que de le faire uniquement dans notre coin.


edit: ok je me rend compte que tu avais déjà partagé l’un de ces topics dans ton message initial, my bad.

1 Like

TL; DR: Le post-quantique ne changera rien à la manière de s’authentifier pour l’utilisateur, et est totalement compatible avec les mnemonics. :slight_smile:

J’ai mis du temps à comprendre comment ça fonctionne (manque de doc et code compliqué) et j’ai eu peur que ça ne marche pas, mais en fait si, on peut dériver une clé post-quantique à partir de la seed qui est dérivée (ou non) du mnemonic.

La clé privée utilisée par Substrate (dans curve25519) vient du hash SHA512 de la seed, donc on ne peut pas trouver la seed à partir de la clé privée.

Si ce n’était pas le cas (et ça aurait pu, en tout cas rien n’indique que le hash est utilisé pour des raisons de sécurité, mais juste de conversion de tailles), alors un attaquant quantique, pouvant trouver la clé privée à partir de la clé privée publique, aurait aussi pu trouver la seed. La gestion des clés post-quantiques serait alors beaucoup plus compliquée et demanderait de changer tout l’écosystème.

1 Like