Aller au contenu
buybitcoinsmart

Glossaire / Référence pour développeurs

Signature SSL

Qu'est-ce que la signature SSL ?
La signature SSL est le nom que le BIP70 a donné aux octets signant une PaymentRequest avec la clé de certificat d'un serveur web, et cette appellation était déjà impropre au moment où elle a été écrite.

Spécifié dans BIP-70.

Aucun protocole SSL n'intervient dans une signature SSL. Les octets sont une signature X.509 ordinaire apposée sur un message sérialisé, produite avec la clé privée d'un certificat de serveur TLS, et le protocole SSL 3.0 a été formellement interdit par la RFC 7568 en juin 2015. Quiconque lit de la documentation bitcoin ancienne doit comprendre cette expression comme « signature de certificat » et passer à la suite.

Comment cela fonctionne

Statut : la signature SSL a disparu en même temps que le BIP70, le protocole qui la définissait. Bitcoin Core a embarqué le BIP70 de mars 2014 jusqu'à ce que la version 0.20.0 l'abandonne, et aucun logiciel maintenu ne produit ni ne vérifie ce type de signature aujourd'hui. L'expression subsiste dans la référence développeurs de bitcoin.org, qui est l'endroit où la plupart des gens la découvrent.

L'algorithme était choisi par un champ voisin plutôt qu'annoncé par la signature elle-même. Une demande de paiement déclarait son pki_type comme none, x509+sha256 ou x509+sha1. Cette valeur nommait le format de certificat et l'empreinte, tandis que l'algorithme de signature provenait de la clé que portait le certificat du marchand, en pratique RSA. Un vérificateur reconstruisait les octets exacts signés par le marchand, les hachait avec l'empreinte nommée, et comparait le résultat à la clé publique du premier certificat de la chaîne jointe.

Deux des trois options ont mal vieilli. Le réglage x509+sha1 était faible avant même la publication du BIP70, puisque le NIST avait interdit le SHA-1 pour la génération de signatures numériques après le 31 décembre 2013. En janvier 2020, des chercheurs ont démontré une collision de préfixe choisi contre le SHA-1 pour environ 45 000 $ de temps de GPU loué, ce qui est précisément l'attaque qui permet d'échanger un document signé contre un autre. Le NIST a depuis fixé le 31 décembre 2030 comme le moment où le SHA-1 quitte entièrement ses algorithmes approuvés.

Le point plus profond est que cette signature et une signature bitcoin répondent à des questions différentes. Une signature à l'intérieur d'une transaction bitcoin est vérifiée par chaque nœud selon les règles de consensus, sur la courbe secp256k1, au moyen d'ECDSA ou, depuis l'activation de Taproot au bloc 709 632 le 14 novembre 2021, de Schnorr tel que spécifié dans le BIP340. Une signature SSL était vérifiée par un seul portefeuille contre un magasin de certificats tenu par un fournisseur. L'une autorise le déplacement de fonds et ne peut être annulée par personne. L'autre était une affirmation sur l'identité du demandeur.

Où vous la rencontrez

Les signatures de certificat n'ont pas disparu, seul le nom du champ BIP70 l'a fait. Votre navigateur observe toujours un serveur prouver la possession de la clé de son certificat lors d'une poignée de main TLS, et c'est la version honnête de ce que le BIP70 tentait d'emprunter.

La version qui importe lorsque vous détenez du bitcoin est la signature de code. Les logiciels de portefeuille et les micrologiciels de portefeuille matériel sont signés avec des clés que le fabricant contrôle, et vérifier cette signature avant l'installation est l'étape qui permet de repérer un téléchargement altéré. Les appareils Trezor et Ledger vérifient les signatures de micrologiciel sur l'appareil lui-même et refusent ou signalent bruyamment les versions qu'ils ne peuvent pas authentifier. C'est une signature qui fait un vrai travail, contrairement au champ BIP70, parce qu'elle protège les clés qui détiennent vos bitcoins plutôt que le nom imprimé sur une page de paiement.

Signature SSL vs signature numérique

Une signature SSL n'autorisait rien sur la blockchain. Une signature numérique dans une transaction bitcoin déverrouille une sortie précise et est validée indépendamment par des milliers de nœuds ; le champ BIP70 était validé par un seul logiciel client contre une liste d'autorités de certification. Les conséquences de la perte de la clé diffèrent tout aussi nettement. Une clé de certificat compromise est révoquée et réémise l'après-midi même. Une clé bitcoin compromise signifie que les bitcoins ont déjà disparu.

À ne pas confondre avec

Questions fréquentes

Une signature SSL est-elle la même chose qu'une signature bitcoin ?

Non. Une signature bitcoin est produite sur la courbe secp256k1 et vérifiée par chaque nœud selon les règles de consensus avant que des bitcoins ne bougent. Une signature SSL était une signature X.509 sur un message de paiement, vérifiée par un seul portefeuille contre une liste d'autorités de certification.

Un portefeuille vérifie-t-il encore les signatures SSL ?

Aucun portefeuille maintenu ne le fait. Bitcoin Core a supprimé le BIP70 dans la version 0.20.0 et le reste de l'écosystème a suivi, donc rien de ce que vous installez aujourd'hui n'analysera une demande de paiement ni ne vérifiera la signature qui y figure.

Termes associés

Plus de termes : Référence pour développeurs

Lire cette page en anglais