[Bitcoin] Clé publique, clé privée: Comment vos bitcoins sont protégés
J'ai mentionné à plusieurs reprises les notions de clé privée, clé publique et de signature. Tout ceci va devenir clair dans cet article, qui explique une des clefs de voûte du protocole Bitcoin.
Je ne rentrerai pas dans les détails mathématiques parce que ce blog est destiné à un public plus large que ce que cela impliquerait, mais de nombreuses explications détaillées par exemple de RSA existent sur le net.
Un coffre-fort avec deux clés
Une manière souvent convaincante d'expliquer de quoi il s'agit est d'imaginer que vous avez un coffre-fort avec deux clés. L'une d'elle, la clé publique, permet de l'ouvrir mais seulement pour y déposer quelque chose: vous ne pouvez rien prendre (un peu comme une boîte aux lettres, même si c'est beaucoup plus robuste, heureusement), mais vous pouvez y déposer des objets auxquels seule la propriétaire du coffre-fort aura accès. Cette dernière dispose seule de la seconde clé, la clé privée, qui permet de prendre n'importe quoi qui se trouve dans le coffre-fort.
Et concrètement?
Dans le monde de l'informatique, l'idée du coffre-fort n'est pas celle d'un objet lourd qui est difficile à transporter même si on avait réussi à y accéder:
- C'est un fichier au lieu d'un objet, c'est-à-dire que c'est une suite de 1 et de 0.
- Ce fichier est public, au sens où tout le monde y a potentiellement accès et le propriétaire en est conscient.
L'idée est donc de chiffrer ce fichier, c'est-à-dire de le rendre incompréhensible à qui ne dispose pas de la clé privée, qui va permettre de le déchiffrer.
Comme vous l'avez peut-être déjà compris, ces deux opérations correspondent aux deux actions du coffre-fort:
- Chiffrer (puis envoyer) correspond à déposer un fichier
- Déchiffrer correspond à récupérer un fichier.
Ce système s'appelle la cryptographie asymétrique, parce que la clé privée et la clé publique ne jouent pas le même rôle (dans le sens où une est publique et l'autre est privée). Pour autant, il est aussi possible de chiffrer un message avec la clé privée et de le déchiffrer avec la clé publique. L'intérêt de faire cela ne réside pas dans le caractère privé du message (n'importe qui peut le lire, puisque la clé publique est.. publique), mais dans la garantie que cela apporte que le message a bien été écrit par Alice. C'est exactement le concept de signature électronique que j'ai mentionné plusieurs fois.
Tout ceci ne s'applique pas qu'à Bitcoin, loin s'en faut, voici quelques exemples:
- Le protocole PGP (Pretty Good Privacy) pour chiffrer, déchiffrer et authentifier les courriels;
- Le protocole SSL, qui permet d'avoir le fameux https auquel on vous a sûrement dit de faire attention lorsque vous faites par exemple des paiements en ligne;
- Le protocole SSH, qui permet de se connecter à distance à un ordinateur en chiffrant les données échangées et en évitant d'avoir à rentrer un mot de passe (qui circulerait en clair sur le réseau, et serait donc facile à intercepter).
Le chiffrement
Le chiffrement se fait à l'aide de la clé publique, qui ressemble à ceci:
AAAAB3NzaC1yc2EAAAADAQABAAABAQCiKsw1qHVGSJTi6ntw1HO+FLyaP1Q/ZyZU+nt9IZco93vZTawdftxNCw87krYz+dC78GSLLrj3PFjyxkERZA9ftkUt0VNUUJrsUjp1658ey8kHG1YJfD9Gr3OUYQHCaHwsSZEcwPYcZ5ArtooDetnXdek71GYLFwAfJiSl62i0/BGaxOCvOP8djiFQ6P64pr2i/CyRAdtmJ2lkYKduHyjqmSr37q/s2rARxe+wOYSFU5yTyUodOA3qOxanrb4mYANs6N1xI4SV+EIwBkyRKX9z/T98z+rS4UgFzEkdXsfVGA+Ix7LuhOlBfI2V8Pw0PWHbdf36TZRGZXTVdpcrsotrAlice peut donner se clé publique à n'importe qui sans aucun risque, tout ce que quelqu'un peut en faire, c'est chiffrer un message avec et lui envoyer.
Le déchiffrement
Le déchiffrement ne peut se faire que par le détenteur de la clé privée, qui ressemble par exemple à ceci:
+Pl+pASjyLG0DDGYSWjzogF0kBRCOroG78SYOPLAwnx4ILkXlpbI6eapBCliQJjw
SMwkaWQXdohJj7Rwr8nBbE1sHGw8Wq2palzEwwPTo1hQEPrDPM4yPl9104NBpn+X
I8iiLKJQPvkQG/sfHjemPAmrA+cVniQKQW8R7ga6EKaLamLqT1TCu+QShe5W+gSl
ulhCOEJZ5n4PE2Q1TjW+FKI4+j4OD445CYdGxP1c68vyDGBW12DiEk26sQ/z7tLa
pO71PfKIxA1P2cFMnQgWIB/ujDc4jWq7bHKV1v9S94GfIF5v8WIScjojIlZUvZm+
eFWq66EfV3t/JSrJT6GznK6xFS4KJ/r0QIS9PQOzBiXgWwSvcDr8/baElxTdhQDN
+adrjxV8vFjo+O0Gj3Xmgna4kpyqjPa1SSIDeRZjUlFduT0EknnkZvLrSZg8htD2 bZjUdUSZRjr/mM/9mqUDRnEgF918ras5f2eSOw1yV7FtipDcpBlFXe6sTPanqpZ6
nSqhBY6/RpZyyeopUyFpGSBYYW++5J04u2YRs2rQlQ3SnPFOjhih33q35mIZQFux
JuOSuvgwo2iX3Bbi7h2J3RlzC1VLJWf860LDkvEFU2KQtEPZf6sAjFPVbXd/ZEWb
nCOql2LTw/eGurnLJwxIWBTNCFAqm7GTvtgusdBAZho1klV4/mFqiWjHRM5gAHZg
7WL2Hhcb27Sj8MzeHDXwYEFdFkd7XMz8j9kPpRpazBAmpq1DrnRDpLJfeKhwZ+QN
Z1drlraTLRP6ldesQBFyD8i8qdYb6V/pOizKF65gwpWQ9fqMA5rhBNJpCC0gh9sZ
k9pcxNoBgrjYdCQuVkAe4yXxkSvOnAI7L2U0zOJ1jIx4gBQUkGj2sht5KMU4+Gem
4b57kWL2GrOBUiH0boJIsxRZjjAdGhy8UUpxXenRCEPOkAeUEhPjIZi1I3gcwrVH
hi8Weyooa354kmPlboXxZnkN0nLzAALBuoRjmfWRfiyEqOQmZwSkA9kK7AHxGDft
Xj1BCOHHR4kRkWWJ1wBijT1pNvD1UKlSg85/+4s3oSnJYqpKRqTZkS/vqcV1SnG/
xBdr7g6kkQLdOMadhv1oAiNJzGQIqvhGZiGOBN9qOjFYhNyip/dwW2bqd7GXSgGu
nqPZIlx437TJUZcyhT58oVLyyJm/wpZF2fHGCPgcFG62R4fwduhBQkLbdDJbBSTz
KirMNaIpeiTknOV7sjUBT1NaLgfoFpRMWUE6d4YpP3sE0gHtc2OQOlrMnbpQz04Q
Eql+Q2gCsjdXgEeFyLds3BvQIcHZnh0y8YT4KwX+ub9Ff1R4V0MgUQP9QpGMO+vY
RNk8TCDY6G0DCq13OpiGry3DJxro51S0DTrSdd39xmK+xymW6cPLd0Cu1vrWguoL
J3Ycbf18wL39wwyl5CcX8uVqvpnM4ZbpOtTv9nvIJx9OzW+0PbuLf5QlWFAP6fDA
IBVPdde04SEgg5Jtr+GpPtJp7f6IPSgCdF0TOg/Zj/asZM3mIQoU+AlOSEsHkt44
o5uF5O6JxNKr1o4qlRZXA7PpKQxIV4uTEaJ50+JWjo7GzyTDO8oGuhT/pYXHyAc4
Comment tout ceci est-il utilisé dans Bitcoin?
Lorsque vous créez un compte Bitcoin, par exemple lorsque vous utilisez pour la première fois un des nombreux logiciels de porte-monnaie Bitcoin (comme le client Bitcoin, Electrum, Mycelium, Blockchain.info), le logiciel commence par créer une paire clé privée/clé publique.
Votre clé privée a le contrôle de vos fonds, c'est donc à peu près aussi confidentiel que votre carte bleue et son code, et même pire: il faudrait quelques millisecondes à quelqu'un de bien organisé pour subtiliser l'intégralité de vos fonds une fois cette clé entre ses mains (alors que les cartes bleues ont habituellement un plafond). Il ne faut donc jamais, jamais, jamais donner votre clé privée à un site, ou vous l'envoyer par mail, ou même la laisser non chiffrée sur un ordinateur connecté à Internet.
Votre clé publique est obtenue comme un hash de votre clé privée. Elle constitue votre adresse Bitcoin, ou plus exactement une adresse Bitcoin (vous pouvez en avoir autant que vous voulez), celle que les gens vont utiliser pour vous envoyer des bitcoins.
Lorsque vous effectuez une transaction, vous devez signer les fonds que vous utilisez, qui ne sont en fait rien d'autres que les "sorties" de transactions précédentes qui vous ont été adressées. Ceci garantit que personne d'autre que vous ne peut dépenser votre argent.
J'ai de bonnes raisons de penser que ma clé privée risque d'être compromise dans un futur proche, que faire?
Créez immédiatement un nouveau compte Bitcoin et reversez tout votre solde dedans. Pas une seconde à perdre.
Comment sécuriser mon compte Bitcoin?
Une des meilleurs manières connues à ce jour de stocker ses Bitcoins à l'abri du vol est le "cold storage", ou "stockage à froid". L'idée est de placer une unique copie de votre clé privée en lieu sûr, par exemple sur un papier que vous mettez dans un coffre-fort (physique, cette fois), ou encore sur un ordinateur qui ne se connecte jamais à Internet. Comme ceci nécessite de dédier un ordinateur complet et n'est pas à l'abri d'une panne de disque dur, les gens choisissent en général le papier.
[1] Pour les petits malins qui pensent que je viens de révéler ma clé privée (ssh en l'occurrence), ne perdez pas votre temps: cette paire a été générée pour les besoins du blog et ne sera jamais utilisée pour autre chose :-)
Source: Blogchain