L'importance des signatures numériques
Les signatures digitales sont utilisées par la blockchain mais qu'est-ce que c'est et à quoi ça sert ?
Une signature numérique est un mécanisme utilisé pour identifier l'expéditeur d'un message et qui permet de vérifier que le message n'a pas été modifié depuis son envoi.
Elle est donc utilisée pour vérifier l'authenticité d'un contenu au sens large : on peut utiliser les signatures numériques sur les e-mails, fichiers et autres contenus numériques.
Pour que le destinataire puisse vérifier qu'on est bien l'expéditeur et que le message n'a pas été altéré, on va lui transmettre une clé publique et la signature du message.
On se sert des signatures digitales dans la blockchain pour vérifier les transactions, c'est pourquoi il est primordial de comprendre comment ça marche.
Analogie avec le chèque de banque
Faisons l'analogie avec le système bancaire traditionnel et le chèque de banque : lorsque vous souhaitez régler par chèque, il est important de mentionner le nom du bénéficiaire, le montant du règlement et surtout de signer le chèque.
Le bénéficiaire n'aura plus qu'à l'endosser et le déposer à la banque.
La banque est ensuite dans l'obligation de vérifier la signature et s'assurer qu'elle est valide. Dans le cas contraire, le compte ne sera pas débité.
Avec la blockchain, c'est presque la même chose ! La différence c'est qu'il n'y a pas d'autorité centrale car c'est décentralisé et le nom du bénéficiaire est remplacé par l'adresse publique.
Donc on a besoin d'un système pour vérifier que la signature d'une transaction est valide et c'est là qu'intervient la cryptographie asymétrique avec le mécanisme des signatures digitales !
Cryptographie asymétrique : clé privée, clé publique et signature
La cryptographie asymétrique utilise deux clés (paire de clés), dont l'une est publique et l'autre privée. Les deux sont reliées entre elles mais il est impossible de deviner la clé privée à partir de la partir de la clé publique.
En informatique elles sont souvent représentées au format hexadécimal.
Exemple de clé privée (hex) : 01be7c8b2e769c508a42846f4d7380fef644f0fce815023dbcbe9fdeefd09103
Si on s'y intéresse plus en détails, une clé privée ou publique dans la blockchain est un point sur une courbe elliptique (pour Bitcoin la courbe utilisée est ECDSA et on utilise les paramètres secp256k1).
La clé privée est utilisée pour déchiffrer les données qui ont été chiffrées avec la clé publique correspondante. Elle sert également à produire des signatures digitales à partir d'un message.
La clé publique permet de chiffrer un message qui ne sera lisible que par le détenteur de la clé privée associée. Elle permet aussi de vérifier une signature et un message pour vérifier son authenticité.