Le pari manqué de Nicolas T. Courtois

14
519

Dans un pari en ligne lancé sur betmoose.com le 19 décembre 2015, le cryptographe Nicolas T. Courtois avait parié que l’algorithme ECDSA (Elliptic Curve Digital Signature Algorithm), utilisé dans Bitcoin pour la signature des messages de transaction, serait cassé avant le 18 décembre 2016. Détail du pari : « Le schéma de signature numérique de Bitcoin avec SHA256 + secp256k1 ECDSA sera brisé avant le 18 décembre 2016 par des chercheurs en cryptographie.

Le résultat devra être divulgué ou publiquement démontré avant ou le 18 décembre 2016. Il devra être confirmé par au moins trois autres chercheurs indépendants diplômés d’un doctorat en cryptographie ». [1]

Nous sommes aujourd’hui le 19 décembre et Bitcoin est toujours là.

Saluons tout de même la démarche de Nicolas T. Courtois car la résilience de bitcoin tient au fait que son registre est sans cesse soumis aux attaques et que des cryptographes ou des hackers se penchent régulièrement sur son code et sur ses algorithmes. Si Bitcoin contient des failles, il est important qu’elles soient débusquées.

Casser l’algorithme ECDSA (avec ou sans ordinateur quantique), aurait sans doute des conséquences sérieuses : une terrible pagaille et un effondrement provisoire du cours, mais au final ça ne serait pas techniquement fatal pour Bitcoin. Rappelons qu’il ne faut pas confondre « clé publique » et « adresse Bitcoin » : tant qu’une clé publique n’a pas été utilisée pour signer une transaction, elle n’est connue que de celui qui l’a générée. Une adresse Bitcoin n’est qu’une empreinte (un hash) d’une clé publique, ce n’est pas la clé elle-même. Pour calculer ce hash on utilise des fonctions cryptographiques à sens unique, SHA-256 et RIPEMD160, qui réduisent la clé publique en une chaine de 34 caractères. Difficile, donc, de restituer le message d’origine puisqu’il y a perte d’information.

Pour se protéger d’une faille d’ECDSA dans l’attente de son remplacement par un autre algorithme, il suffirait, par conséquent, de ne jamais réutiliser une adresse sitôt qu’on a dépensé les bitcoins qui lui sont associés. En pratique il suffit d’utiliser des porte-monnaies « déterministes hiérarchiques » (BIP0032 HD) comme Greenaddress ou Copay qui génèrent une nouvelle adresse à chaque fois qu’une transaction entrante est effectuée, y compris pour les retours de monnaie.

Beaucoup d’utilisateurs utilisent d’ores et déjà ce type d’application.


[1] Texte intégral : « The digital signature scheme of bitcoin with SHA256+secp256k1 ECDSA will be broken before 18 December 2016 by cryptography researchers. The attack should allow to forge digital signatures for at least a proportion of 1/1 million bitcoin users and steal money from them. It should be done faster than 2^100 point additions total including the time to examine the data. The decision will be based on the best attack known in academic cryptography literature. The result should be disclosed or publicly demonstrated before or on 18 Dec 2016. It should confirmed by a majority of at least 3 other independent researchers with a PhD in cryptography. Attacks in which the message was not signed correctly e.g. repeated identical randoms are NOT valid attacks. »