Les signatures strictes DER (Distinguished Encoding Rules), sont un type d'encodage qui est utilisé pour garantir l'adéquation d'une signature numérique dans n'importe quel environnement, et sont utilisées dans Bitcoin et crypto-monnaies pour assurer la validité des signatures. numérique.
Bitcoin est, sans aucun doute, un logiciel cryptographique hautement spécialisé et une démonstration de cela peut être vue dans le signatures DER strictes, une implémentation cryptographique visant à fournir des niveaux de sécurité plus élevés dans le protocole, en particulier dans le système de signature de Bitcoin.
Signatures strictes DER (Distinguished Encoding Rules), il s'agit d'un type de cryptage sécurisé utilisé pour garantir l'adéquation d'une signature numérique dans n'importe quel environnement. Je veux dire, peu importe si tu portefeuille C'est sur un ordinateur, un smartphone ou un autre appareil, son encodage sera le même et sa résolution sera déterministe du début à la fin. Ceci est vital pour Bitcoin, car cela garantit que ses signatures numériques seront sécurisées selon divers critères.. Et pour nous utilisateurs, cela nous donne l'assurance que le système a des normes de sécurité élevées.
Maintenant, quelle est l'origine des signatures DER strictes? Quand son développement a-t-il commencé? Comment fonctionnent-ils et où s'appliquent-ils? Nous examinerons cela et bien plus ci-dessous.
Le développement de signatures DER strictes
Comme vous le savez peut-être déjà, Bitcoin utilise des signatures numériques du type ECDSA pour garantir un haut niveau de sécurité dans vos transactions. L'utilisation d'ECDSA avec la courbe cryptographique secp265k1, est ce qui protège Bitcoin en termes d'accès à son tokens et cela nous donne l'assurance que nos fonds ne peuvent pas être facilement piratés.
Pour que Bitcoin puisse utiliser ces fonctions, il a été initialement développé à l'aide de la bibliothèque de sécurité crypto OpenSSL, un projet de logiciel libre bien connu qui reste pour le moment un leader incontesté de la cryptographie dans l'industrie. Cependant, OpenSSL a traversé une série de scandales de sécurité qui ont peu à peu érodé la confiance dans le projet.
Par exemple, en 2009, lors de la naissance précoce de Bitcoin, OpenSSL présentait une vulnérabilité sérieuse (CVE-2008-5077) qui a affecté sa mise en œuvre des signatures ECDSA, laissant des projets comme Bitcoin vulnérables. Un autre problème grave est survenu en 2014 (CVE-2014-0076), qui a également affecté cette fonction. Comme ces échecs ont commencé à émerger du projet et avant les événements, Gregory Maxwell Il a déclaré qu'il était temps d'abandonner OpenSSL et ses problèmes constants.
Ces étapes initiales pour migrer vers une autre implémentation cryptographique sécurisée ont ensuite été soutenues par Pieter Wuille, qui en 2015 a introduit le BIP-66 (BIP - Propositions d'améliorations Bitcoin) appelé "Signatures DER strictes". Ainsi est née l'implémentation DER qui prendrait les rênes du développement de Bitcoin, et qui a laissé OpenSSL de côté avec ses problèmes et son manque de respect pour les normes de sécurité.
De cette manière, la nouvelle norme stricte de signature Bitcoin DER s'appliquerait à OP_CODES ou codes d'opération, OP_CHECKSIG, OP_CHECKSIGVERIFY, OP_CHECKMULTISIG ou OP_CHECKMULTISIGVERIFY, auxquels la vérification ECDSA s'applique et doit donc être encodée à l'aide d'une signature DER stricte.
Comment fonctionnent les signatures DER strictes?
Fondamentalement, ce que fait l'encodage DER est; s'assurer que les vérifications ECDSA sont correctes à tout moment. Pour ce faire, chaque signature est vérifiée non seulement en formation mais aussi dans la manière dont elle a été codée.
Tout d'abord, les signatures ECDSA passent par une vérification DER, celle-ci est chargée de vérifier que le codage de la signature est correct. Chaque signature ECDSA doit être soigneusement encodée (ou écrite) en Bitcoin, et toute modification à cet égard indique que la signature n'est pas fiable.
Dans ce cas, le protocole Bitcoin rejette simplement la signature et arrête l'exécution du script Bitcoin associé à ladite signature. Cependant, si la signature DER stricte est valide, mais que la signature ECDSA ne l'est pas, l'exécution du script Bitcoin associé finira par invalider la signature à la fin de son exécution en cas d'échec de la vérification du script.
Dans l'un ou l'autre des deux cas décrits ci-dessus, nous pouvons être sûrs que les entreprises ECDSA feront leur travail: protéger nos bitcoins et les opérations que nous effectuons avec eux. Et dans ce cas très particulier, les signatures DER strictes nous aident à avoir une nouvelle mesure de sécurité pour maintenir ladite opération dans n'importe quelle situation.
La spécification ou la conception utilisée par Bitcoin pour sa mise en œuvre DER respecte les normes de l'Union internationale des télécommunications (UIT - Union internationale des télécommunications), spécifiquement la norme X.690 - 2015, ce qui met en évidence la haute qualité de la mise en œuvre.
Décrivant son fonctionnement
Comme nous le savons, une signature numérique en Bitcoin fait partie des scriptSigs et scriptWitnesses des transactions. Cette signature consiste en fait en un codage DER d'une signature ECDSA, auquel est ajouté un octet de type sighash.
Pour générer ce codage, la procédure suivante est utilisée:
- L'"Objet Composite" est généré en utilisant 1 octet d'information et en le marquant avec le code 0x30 . Cet objet composite est le tuple des valeurs (R,S) de la signature ECDSA.
- La longueur de 1 octet de l'objet composite.
- La valeur R de la signature se compose de:
- Un type "Integer" de 1 octet marqué par 0x02
- Longueur de 1 octet d'entier
- octets de valeur R de longueur variable
- La valeur S de la signature, qui se compose de:
- Un type "Integer" de 1 octet marqué par 0x02
- Longueur de 1 octet d'entier
- octets de valeur S de longueur variable
- L'octet de type sighash
Grâce à ce schéma, les signatures DER sont plus courtes que leurs homologues ECDSA, atteignant un maximum de 73 octets (environ 73 caractères). Ceci est très important, car cela les rend plus faciles à gérer, consomme moins de bande passante lorsqu'ils sont envoyés au réseau, ce qui réduit la surcharge du réseau et augmente le nombre de transactions pouvant tenir dans un bloc, augmentant ainsi l'évolutivité du réseau.
Que savez-vous, cryptonuta?
Une mauvaise utilisation des signatures DER peut-elle conduire à un hard fork?VRAI!
Cela peut sembler trivial, mais une représentation incorrecte d'une signature DER à l'aide de DER peut conduire à une blockchain en dur. C'est précisément ce qui s'est passé dans Bitcoin et c'est ce qui a conduit les développeurs à créer leurs propres outils cryptographiques pour le projet. En effet, les signatures DER dans un ou plusieurs nœuds et mineurs peuvent varier, et de telles variations peuvent entraîner des problèmes de validation de chaîne, ce qui entraîne la division de la chaîne principale en deux ou plusieurs parties.
Pourquoi un bon encodage DER est-il important?
Tout d'abord, nous devons nous rappeler que l'ECDSA est un système de signature numérique déterministe, donc quel que soit le critère, cet algorithme doit toujours renvoyer la même signature, dans les mêmes conditions de génération. Ceci est essentiel pour la sécurité et garantit que deux signatures ECDSA ne seront plus jamais les mêmes. La même chose est répétée dans le cas du codage DER; c'est-à-dire qu'il n'existe qu'un seul flux de données qui encode valablement certaines valeurs données pour une signature ECDSA.
Cependant, certaines implémentations boguées (comme OpenSSL) produisent de mauvais encodages dans certains cas. Par conséquent, les vérificateurs de signature ECDSA sont souvent un peu indulgents dans ce qu'ils acceptent. En Bitcoin, cela est inacceptable car cela conduit à des erreurs de vérification de signature et rompt le consensus du réseau. Face à de tels problèmes, Développeurs Bitcoin ont décidé de créer leur propre implémentation DER adaptée aux besoins spécifiques de Bitcoin, empêchant ainsi d'autres implémentations d'affecter son fonctionnement.