Clé publique et clé privée  : un guide détaillé


Le domaine de la cryptographie est fondamental pour de nombreux systèmes de crypto-monnaie tels que Bitcoin. La cryptographie est la pratique de la communication sécurisée en présence de tiers. En d’autres termes, la cryptographie permet de stocker et de communiquer des données de manière à empêcher des tiers de lire le contenu de ce qui a été communiqué. La cryptographie est utilisée dans la création de clés publiques et de clés privées pour faire des systèmes de crypto-monnaie un réseau sécurisé sur lequel les utilisateurs peuvent opérer en toute sécurité.

Le concept de propriété dans un système de crypto-monnaie s’articule autour de trois éléments interconnectés  :

  • Clés numériques (clé publique et clé privée)
  • Adresses de crypto-monnaie
  • Signatures numériques

Parmi ces éléments, les clés numériques revêtent la plus haute importance car elles permettent les caractéristiques de propriété trouvées dans les systèmes de crypto-monnaie sécurisés par cryptographie. Il est crucial de comprendre que ces clés numériques ne sont pas stockées dans les réseaux de crypto-monnaie eux-mêmes. Au lieu de cela, ils sont créés et stockés par des portefeuilles de crypto-monnaie, qui existent indépendamment du réseau.

Clé publique et clé privée  : un guide détaillé

Les clés numériques sont générées par paires, comprenant une clé publique et une clé privée. La clé publique sert de compte bancaire individuel, tandis que la clé privée fonctionne comme le code PIN secret pour accéder à ce compte bancaire.

La clé publique et l’adresse de la crypto-monnaie sont étroitement liées de manière cryptographique. L’adresse de crypto-monnaie est dérivée de la clé publique et agit comme une représentation de celle-ci. En règle générale, la clé publique est utilisée pour générer l’adresse de crypto-monnaie réelle. Cette adresse fonctionne comme un identifiant unique pour le compte d’un utilisateur, permettant de recevoir et d’y déposer des fonds.

Clé publique

L’aspect important à comprendre sur l’incorporation de la cryptographie à clé publique dans les systèmes de crypto-monnaie tels que Bitcoin, est qu’ils sont pratiquement irréversibles. Cela signifie que les fonctions mathématiques qui constituent la cryptographie à clé publique sont relativement faciles à calculer dans un sens, et sont pratiquement impossibles à calculer dans le sens opposé. Cette fonctionnalité cryptographique est au cœur des systèmes de crypto-monnaie, car elle facilite la création de secrets numériques et de signatures numériques infalsifiables indispensables à la propriété sur ces réseaux décentralisés.

Les crypto-monnaies telles que Bitcoin utilisent la multiplication de courbes elliptiques comme base de leur cryptographie. La multiplication de points de courbe elliptique est l’opération consistant à ajouter successivement un point le long d’une courbe elliptique à lui-même à plusieurs reprises. Il est utilisé dans la cryptographie à courbe elliptique comme moyen de produire une fonction à sens unique, qui est une fonction facile à calculer dans une direction, mais difficile à faire dans la direction opposée. Dans les systèmes de crypto-monnaie tels que Bitcoin, cette fonction à sens unique prend la clé privée comme entrée pour générer la clé publique, qui est la sortie.

Pour cette raison, les propriétaires d’une clé privée peuvent distribuer leur clé publique en toute confiance en sachant que personne ne pourra inverser la fonction et calculer la clé privée à partir de la clé publique.

Adresses de crypto-monnaie

Une adresse de crypto-monnaie est simplement une chaîne de caractères alphanumériques qu’un utilisateur peut partager avec toute personne souhaitant lui envoyer de l’argent. Comme mentionné précédemment, une adresse de crypto-monnaie est en fait une représentation de la clé publique. Une adresse est dérivée de la clé publique grâce à l’utilisation d’une fonction de hachage cryptographique unidirectionnelle. Avec Bitcoin, les algorithmes utilisés pour créer une adresse bitcoin à partir de la clé publique sont le Secure Hash Algorithm 256 (SHA-256) et le RACE Integrity Primitives Evaluation Message Digest 160 (RIPEMD-160).

En commençant par la clé publique, cette chaîne de valeurs est d’abord exécutée via l’algorithme de hachage SHA-256 pour produire un hachage, puis ce hachage est calculé à l’aide de RIPEMD160 pour produire une adresse bitcoin. L’adresse bitcoin et les adresses d’autres systèmes de crypto-monnaie sont ce qui apparaît souvent dans une transaction entre deux parties, l’adresse indiquant le destinataire des fonds.

Clés privées

La clé privée se compose de caractères alphanumériques qui permettent à un utilisateur d’accéder et de contrôler ses fonds à l’adresse de crypto-monnaie correspondante. La clé privée est utilisée pour signer des transactions qui permettent à l’utilisateur de dépenser ses fonds. En d’autres termes, la clé privée crée des signatures numériques uniques pour chaque transaction qui permet à un utilisateur de dépenser ses fonds, en prouvant que l’utilisateur est effectivement propriétaire de ces fonds.

Par exemple :

Lorsque Bob décide d’acheter un café au magasin d’Alice en utilisant 5 bitcoins, il fournit sa clé publique et une signature numérique générée en appliquant sa clé privée à la transaction. La signature numérique est une preuve cryptographique unique qui ne peut être générée que par une personne connaissant la clé privée, qui est Bob dans ce cas.

Cependant, toute personne ayant accès à la clé publique et à la signature numérique peut utiliser ces éléments pour vérifier que Bob est le propriétaire légitime des 5 bitcoins. Ce processus de vérification permet à tous les autres participants du réseau Bitcoin de valider et d’accepter la transaction de Bob comme authentique sans exiger la divulgation de la clé privée de Bob.

Signatures numériques

Une signature numérique est un schéma mathématique utilisé pour montrer l’authenticité d’un message ou d’un document numérique. Une signature numérique valide donnera au destinataire d’un message ou d’un document numérique des raisons de croire que le message ou le document a en fait été créé par un expéditeur connu. Une signature numérique indique également que l’expéditeur ne peut en aucun cas nier avoir envoyé le message ou le document, et que le message ou le document n’a été modifié à aucun moment pendant son transit.

Les signatures numériques jouent un rôle important dans les systèmes de crypto-monnaie, car elles prouvent la propriété des fonds et permettent à la personne qui contrôle ces fonds de les dépenser.

Par exemple, l’algorithme de signature numérique utilisé dans Bitcoin est connu sous le nom d’algorithme de signature numérique à courbe elliptique, également connu sous le nom d’ECDSA. ECDSA est l’algorithme qui sous-tend le schéma de signature dans Bitcoin, et il est basé sur la cryptographie à courbe elliptique. Il s’agit de la même approche cryptographique que celle utilisée pour produire des paires de clés privées et publiques. Dans Bitcoin, une signature numérique est effectivement destinée à servir trois objectifs distincts :

  • Premièrement, une signature numérique sert de preuve que le propriétaire d’une clé privée, qui sera par extension propriétaire de ses fonds, a bien autorisé que ces fonds puissent être dépensés
  • Deuxièmement, une signature numérique sert de preuve que l’autorisation est indéniable
  • Troisièmement, une signature numérique prouve que la transaction qui a été autorisée par la signature n’a pas ou ne peut pas être modifiée par quiconque après avoir été signée

Signatures numériques dans Bitcoin : comment elles fonctionnent

Comme mentionné précédemment, une signature numérique est un schéma mathématique, et ce schéma mathématique se compose de deux parties. La première partie est un algorithme qui crée la signature. Cette signature est créée à l’aide d’une clé privée (également appelée clé de signature) et du hachage de la transaction à signer. La deuxième partie du schéma mathématique est un algorithme qui permet à quiconque de vérifier que la signature numérique produite est valide.

La première partie de la production d’une signature numérique en Bitcoin peut être représentée mathématiquement de la manière suivante  :

Signer = Fsig(Flash(m),dA)

Où :

  • dA est la clé privée de signature
  • m est la transaction
  • Fhash est la fonction de hachage
  • Fsig est l’algorithme de signature
  • Sig est la signature résultante

La fonction de signature (Fsig) produit une signature (Sig) composée de deux valeurs  : R et S  :

Une fois que R et S ont été calculés, ils sont sérialisés en un flux d’octets qui est codé à l’aide d’un schéma de codage standard international connu sous le nom de Distinguished Encoding Rules (ou DER). Afin de vérifier que la signature est valide, un algorithme de vérification de signature est utilisé. La vérification d’une signature numérique nécessite les éléments suivants  :

  • Signature (R et S)
  • Hachage des transactions
  • La clé publique qui correspond à la clé privée qui a été utilisée pour créer la signature

La vérification d’une signature assure que seul l’individu possédant la clé privée, qui a généré la clé publique correspondante, a pu produire la signature de la transaction. Lorsque la signature est soumise à l’algorithme de vérification, elle donnera un résultat ‘TRUE’ si la signature est jugée valide. Ce processus confirme l’authenticité et l’intégrité de la signature, garantissant qu’elle a bien été produite par le propriétaire légitime de la clé privée.

Conclusion

Comprendre les concepts de clés publiques, de clés privées, d’adresses de crypto-monnaie et de signatures numériques est crucial pour comprendre les mécanismes sous-jacents des systèmes de crypto-monnaie. La cryptographie joue un rôle fondamental dans la sécurisation des données et l’activation des fonctionnalités de propriété au sein de ces réseaux décentralisés.

Les clés publiques et les clés privées forment une paire de clés qui garantit la sécurité des transactions et la vérification de la propriété. Les adresses de crypto-monnaie, dérivées de clés publiques, servent d’identifiants uniques pour les comptes d’utilisateurs. Les clés privées, gardées confidentielles par les utilisateurs, autorisent les transactions et génèrent des signatures numériques qui prouvent la propriété et l’intégrité. Les algorithmes de vérification valident les signatures, garantissant que seul le propriétaire légitime de la clé privée peut produire des signatures valides. Ces éléments cryptographiques établissent collectivement les fondements de la confiance et de la sécurité dans le monde des crypto-monnaies.