Courbe du million de dollars

Une courbe elliptique en laquelle tout le monde peut avoir confiance.

Le temps est venu de se débarrasser des choix arbitraires.

En utilisant le caractère aléatoire publiquement vérifiable produit en février 2016 par de nombreuses loteries nationales du monde entier, nous proposons de générer une courbe elliptique cryptographique sécurisée pour le système cryptographique ECDH comme alternative aux courbes NIST P-256 et Curve25519.

Il est conçu pour que personne (même nous !) ne puisse y mettre un piège.

Aujourd’hui, la plupart de la cryptographie à courbe elliptique repose sur le même ensemble de courbes : ANSSI FRP256v1, NIST P-256, NIST P-384, Curve25519, secp256k1, brainpoolP256t1, Curve1174 et quelques autres.

Cependant, plusieurs de ces processus de génération de paramètres de courbes contiennent des choix injustifiés, des constantes spécifiques ou des algorithmes de hachage spécifiques. Citons par exemple la courbe P256 du NIST, dont les paramètres sont dérivés d’une semence non justifiée (C49D3608 86E70493 6A6678E1 139D26B7 819F7E90), et la courbe ANSSI FRP256v1, pour laquelle aucune justification n’est donnée. La tristement célèbre histoire de la Dual-EC-DRGB légitime les préoccupations de nombreux spécialistes quant à l’utilisation de choix arbitraires.

Je ne fais plus confiance aux constantes.

Bien sûr, il ne faut pas conclure que les algorithmes cryptographiques utilisant des constantes similaires sont systématiquement peu sûrs (certains concepteurs sont certainement honnêtes !) et nous ne contesterons pas le droit de faire confiance à ces algorithmes. Pourtant, dans la perspective d’obtenir un algorithme cryptographique auquel tout le monde pourrait légitimement se fier, nous croyons que toute norme future devrait exclure toute conception cryptographique impliquant des choix arbitraires.

Choisir la sécurité et inspirer la confiance du public avant tout.

La génération des paramètres de la courbe elliptique peut être divisée en plusieurs parties :

  • La conception : cette partie spécifie et engage sur tous les critères de sécurité auxquels la courbe doit répondre, sur l’espace de paramètres implicite, et sur une procédure déterministe qui, à partir d’une graine d’entrée, fournit des paramètres de courbe elliptique garantis conformes aux critères de sécurité précités.
  • L’extracteur à caractère aléatoire : cette partie spécifie la source d’entropie, ainsi que comment et quand l’entropie doit en être extraite ;
  • La génération de semence : cette partie calcule la semence à partir de l’entropie extraite ;
  • L’instanciation : cette partie génère les paramètres à l’aide de la semence et de la procédure déterministe précitée.

Tout choix de paramètres de la courbe elliptique doit être effectué de manière justifiable, systématique et complète. En plus de fournir une description algorithmique sur papier, nous pensons qu’il faut aussi fournir un code lisible et exécutable, et utiliser une source d’entropie irréprochable et vérifiable publiquement.

Document technique

Dans notre article technique, nous décrivons une procédure déterministe pour générer une courbe elliptique cryptographiquement sûre à partir d’une graine aléatoire. A notre connaissance, toute courbe générée par notre méthodologie est sécurisée (et répond notamment à tous les critères SafeCurves).

Code source

En plus du document technique, nous publions et nous nous engageons sur le code source mettant en œuvre l’ensemble de notre méthodologie, c’est-à-dire à la fois l’algorithme d’extraction des semences et la procédure de génération des paramètres de la courbe elliptique.

Source d’entropie irréprochable

En sélectionnant et en combinant soigneusement de nombreux futurs tirages de loterie, nous obtenons une source d’entropie imprévisible, impartiale, publiquement observable et archivée, qui est facilement vérifiable à l’avenir.

Personne ne peut prédire quelles graines seront produites par ces tirages, même nous !

La courbe du million de dollars.

Sur ce site Web, nous utilisons la méthodologie décrite dans notre document technique pour générer une courbe elliptique, que nous appelons la courbe du million de dollars, comme alternative aux courbes P-256 et Curve25519 pour le système cryptographique ECDH.

Plus précisément, nous fournissons un tutoriel qui décrit l’ensemble du processus de génération d’une courbe elliptique appelée la courbe des Trois Cents basée sur les tirages au sort d’octobre 2015. Notre méthodologie sera alors entièrement instanciée pour générer la Courbe du Million de Dollars : nous nous engagerons sur la conception et la liste des tirages en janvier 2016, et la courbe MDCurve201601 (Courbe du Million de Dollars de janvier 2016) sera générée à partir de février 2016 par tirage au sort.

Pour que la courbe du million de dollars inspire confiance au plus grand nombre, nous voulons intégrer les commentaires que nous recevons dans la méthodologie avant de nous engager sur la méthodologie et la source d’entropie que nous allons utiliser. N’hésitez pas à nous envoyer un courriel et nous serons heureux de vous écouter.

Nous fournissons 5 scripts, écrits en Python 3, qui implémentent l’ensemble de la méthodologie décrite dans le document technique :

prend comme entrée le chemin d’accès à un fichier texte contenant une liste ordonnée de tirages de loterie, la quantité d’entropie à extraire de ces tirages (dans un format décrit dans le tutoriel), et le nombre de bits isolés à ajouter. Il produit un fichier JSON contenant les paramètres suivants :

  • seed : la valeur entière de la graine.
  • seed_upper_bound : un entier tel que la graine se situe entre 0 (inclus) et seed_upper_bound (exclus).
  • approx_seed_entropy : une valeur approximative de la quantité d’entropie contenue dans la graine. Notez que la quantité d’entropie donnée en entrée du script est une valeur minimale, de sorte que la quantité finale contiendra généralement quelques bits supplémentaires.
  • lone_bits : Le nombre de bits individuels inclus dans la graine, tel qu’il est donné en entrée de ce script.

In case the requested minimum quantity of entropy cannot be extracted from the lottery draws, this script fails and doesn’t create the output file. Also, if the output file already exists, the script exits immediately.

Написано вБез рубрики

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *