Petite histoire de la cryptographie: de la protection des données personnelles aux crypto-monnaies
Nous vous proposons dans une série d'articles de revoir les fondements de la cryptologie, de passer en revue les grandes étapes de son développement, du Chiffre de César à la cryptologie asymétrique, en insistant sur le rôle clef joué par le chiffrement dans le Bitcoin et sur les promesses de l’ordinateur quantique.
Notre série doit beaucoup à l’ouvrage de vulgarisation scientifique Histoire des codes secrets de Simon Singh dont nous avons tiré une grande majorité de nos exemples.
1. De la scytale grecque et du chiffre de César à la mécanisation du cryptage
Lire l'article: Petite histoire de la cryptographie: de Jules César à l’ordinateur quantique
2. De la machine Enigma à l'ordinateur
Lien l'article: Petite histoire de la cryptographie: de la machine Enigma à l’ordinateur
3. Sur la piste de la cryptographie asymétrique
Lien de l'article: Petite histoire de la cryptographie: Sur la piste de la cryptographie asymétrique
4. Protection des données personnelles: de PGP aux crypto-monnaies
Jusqu’à la démocratisation de l’ordinateur, la cryptographie ne concerne véritablement que les gouvernements nationaux et l’armée. Avec la découverte du RSA et de la cryptographie à clef publique dans les années 1970, la sécurité des échanges commerciaux entre les entreprises est enfin assurée. Au cours des années 1990, avec le développement d’Internet, l’utilisation croissante des emails par le grand public pose une nouvelle question, celle de la confidentialité des données privées. C’est dans ce contexte-là que l’informaticien Phil Zimmermann cherche à rendre accessible aux citoyens des techniques de cryptage afin d’offrir à tous la possibilité de protéger les informations diffusées.
Le système Pretty Good Privacy (PGP)
Phil Zimmermann
Zimmermann veut assurer au grand public la possibilité de transférer des données via Internet sans risquer de les compromettre. En effet, avant Internet, l’espionnage des citoyens par les gouvernements demandait beaucoup de moyens et de temps. Intercepter une correspondance écrite, écouter et enregistrer des conversations téléphoniques exigeaient une certaine inventivité et étaient difficilement réalisables à grande échelle. A l’inverse, les emails qui transitent par des serveurs locaux sont beaucoup plus faciles à surveiller et l’espionnage à grande échelle est possible grâce à la connaissance de l’adresse de l’émetteur et aux mots-clefs qu’elle contient.
Si le RSA permet en théorie à n’importe qui de créer ses propres clefs privées et publiques, il nécessite un ordinateur d’une puissance bien supérieure à celle des modèles grand public mis en circulation dans les années 1990. Zimmermann cherche à développer un logiciel de chiffrement qui puisse fonctionner rapidement et efficacement sur les ordinateurs des particuliers. C’est chose faite en 1991 lorsqu’il met en accès libre son logiciel Pretty Good Privacy, plus connu sous le nom de PGP.
Le système PGP combine un chiffrement symétrique traditionnel – pour crypter le message – et un chiffrement asymétrique de type RSA – pour crypter la clef du message codé. Il permet à n’importe qui d’envoyer rapidement une grande quantité de messages tout en bénéficiant d’une sécurité maximale. Le serveur génère automatiquement les clefs. Chaque clef publique est associée à un utilisateur ou adresse email. Chaque clef symétrique (aussi appelée «clef de session») n’est utilisée qu’une fois.
Si Alice veut envoyer un message sécurisé à Bob, elle commence par crypter le contenu de son message avec un chiffrement symétrique. Elle envoie ensuite à Bob ce message codé ainsi que la clef de déchiffrement du message qu’elle a cryptée au préalable grâce à un chiffrement asymétrique. Elle protège ainsi sa clef de session pendant le transfert. Bob utilise sa clef privée pour déchiffrer la clef qui a permis le chiffrement du contenu du message. Une fois cette clef décryptée, il peut décoder le message.
Le système PGP exploite la simplicité du chiffrement traditionnel et la technicité du chiffrement asymétrique, permettant ainsi à ses utilisateurs de crypter rapidement un message sans pour autant compromettre la distribution des clefs. Le logiciel PGP offre une interface facile d’utilisation. Il suffit aux utilisateurs de remuer leur souris de façon erratique sur l’écran pour créer un couple clef privée / clef publique. Le système protège les données pendant leur transfert ainsi que les données «au repos», c’est-à-dire celles qui sont stockées sur le disque de l’ordinateur.
Le PGP intègre à son système la signature numérique développée par Diffie et Hellman, permettant ainsi au destinataire d’être sûr de l’expéditeur, authentifiant le message et son origine. Puisque le message est crypté, toute modification du message par un tiers sera indéchiffrable et la supercherie ainsi mise à jour.
En effet, sans la signature numérique, rien ne prouve à Bob qu’Alice est bien l’auteur du message qu’il reçoit en son nom. Pour garantir l’authenticité de son message, Alice peut crypter le contenu de son message en utilisant sa clef privée, puis crypter à nouveau le texte chiffré obtenu avec la clef publique de Bob. Le texte chiffré ne peut alors être décrypté que par Bob, grâce à sa clef privée. Bob peut ensuite utiliser la clef publique d’Alice pour déchiffrer le message. Il est donc sûr de son origine.
Les utilisateurs de PGP n’ont pas à s’embarrasser d’une telle complexification de la transaction. Grâce à la signature numérique, le processus de confidentialité est allégé. Après avoir téléchargé le logiciel et créé leurs clefs, ils n’ont qu’à rédiger leur email. Le logiciel trouvera de lui-même la clef publique du destinataire et chiffrera le message avant son envoi. Lorsque PGP envoie une signature digitale, il utilise un algorithme qui engendre un «hash» (c’est-à-dire un résumé mathématique de l’opération) à partir du nom de l’utilisateur. Ce hash est crypté avec la clef privée de l’envoyeur. Le destinataire de l’email, qui a également installé le logiciel sur son ordinateur, n’a plus qu’à laisser PGP faire le travail de décryptage et d’authentification de l’auteur. Il utilise la clef publique de l’envoyeur pour décrypter le code hash. Si cela correspond au code hash envoyé comme signature digitale, alors le receveur est sûr que le message n’a pas été corrompu.
Version actuelle du logiciel OpenPGP
Zimmermann combine intelligemment les récentes avancées cryptographiques dans un logiciel de chiffrement facile à utiliser. Son système est encore largement utilisé aujourd’hui. Alice et Bob peuvent dorénavant communiquer de façon totalement sécurisée. Les gouvernements ont cependant plus d’une corde à leur arc et peuvent utiliser d’autres moyens pour espionner les citoyens, le suivi des transactions financières par exemple. Et si nous imaginions un moyen de transférer de l’argent de façon totalement sécurisée et anonyme? C’est chose faite avec la naissance des crypto-monnaies.
La genèse des crypto-monnaies
De la monnaie primitive à la monnaie fiduciaire et scripturale, les instruments de transaction financière reposent sur la confiance, celle que lui accordent ses utilisateurs en tant qu’unité de compte, moyen d’échange et réserve de valeur. Cette confiance s’appuie sur un principe de garantie incarné par une institution centralisée telle que les Etats ou les banques, et les instances locales dans le cas des monnaies complémentaires locales.
La dématérialisation de la monnaie, de l’introduction des chèques à la création des cartes de paiement, s’est accélérée avec l’apparition des transactions électroniques, qui fonctionnent également grâce au recours à un tiers de confiance, la banque, qui rend l’ensemble des transactions traçable.
Ce tiers de confiance pose problème à quelques cryptographes dont Hal Finney, David Chaum, Adam Back, Nick Szabo ou encore Wei Dai. En effet, les registres des transactions financières que tiennent les banques permettent aux gouvernements intrusifs d’observer leurs citoyens en toute impunité. Les avocats du respect de la vie privée militent pour un système de transactions financières électroniques anonymes. De là est née l’idée, chez cette poignée de cryptographes, de mettre au point une monnaie digitale qui puisse à la fois être digne de confiance et assurer le respect de la vie privée de ses utilisateurs.
Les monnaies digitales se distinguent de la monnaie traditionnelle, celle des pièces, des billets de banque et de leurs versions dématérialisées, car elles reposent sur un protocole de chiffrement. Chaque unité de monnaie digitale est une chaîne de nombres unique que les utilisateurs peuvent s’envoyer en ligne.
Les premières tentatives de monnaies digitales échouent, confrontées à un défi de taille, celui de sécuriser la monnaie. En effet, une chaîne de nombres peut facilement être copiée – et dans le cas de la monnaie, dépensée plusieurs fois – ce qui rend sa valeur nulle.
David Chaum, concepteur de la monnaie digitale DigiCash, tente de résoudre ce problème en utilisant la cryptographie asymétrique et la signature digitale qui permet de confirmer la transaction sans avoir à s’identifier formellement tout en garantissant que chaque unité de monnaie ne soit copiée ni dépensée plusieurs fois.
Cependant, la solution apportée par Chaum a ses limites car DigiCash doit confirmer chaque signature digitale avant de valider la transaction, réintroduisant ainsi un tiers de confiance sans pour autant garantir que le teneur du registre soit incorruptible et infaillible. En effet, ce dernier, en tant que tiers de confiance, peut modifier la base de données, exclure les transactions qu’il n’approuve pas ou encore perdre des données enregistrées.
Comment concevoir une monnaie digitale sûre et autonome? Adam Back apporte un élément de réponse en 1997 avec le HashCash, une monnaie digitale qui repose sur un concept nouveau: la «preuve de travail» (plus communément appelée «proof-of-work»). Le système HashCash utilise de façon astucieuse un concept central de la cryptographie, les fonctions de hashage cryptographique («hash functions») que l’on retrouve dans le système de signature du RSA par exemple. La plupart de ces fonctions de hashage cryptographique sont des fonctions pratiquement impossibles à inverser, qui convertissent une donnée de départ de n’importe quelle taille en une suite de bits, et produisent une empreinte de longueur fixe à l’issue de l’opération.
Dans l’exemple ci-dessous, nous pouvons observer que même une différence minime dans la donnée de départ entraîne une modification importante de l’empreinte:
Si la donnée de départ est identique, les fonctions de hashage cryptographique produisent toujours la même empreinte. L’empreinte d’une donnée par une fonction de hashage se calcule facilement alors qu’il est très difficile de retrouver la donnée de départ uniquement à partir de l’empreinte et de la fonction. La seule façon pour un ordinateur de retrouver cette donnée de départ à partir de l’empreinte est d’utiliser un algorithme de force brute, c’est-à-dire d’essayer une grande quantité de données de départ auxquelles on applique la fonction de hashage choisie et de vérifier au cas par cas si le résultat obtenu correspond à l’empreinte. Un travail fastidieux.
La révolution du système HashCash repose sur l’introduction du concept de preuve de travail: les utilisateurs du système sont mis en compétition pour un travail difficile à réaliser, la participation de chacun étant vérifiable par tous. Les ordinateurs des participants effectuent un calcul complexe qui consiste à essayer de retrouver la donnée de départ à partir de la fonction de hashage et de la donnée de sortie. Quand un participant y arrive, il présente sa donnée de départ aux autres utilisateurs qui peuvent constater par eux-même, grâce à la fonction de hashage, qu’elle correspond bien à la donnée de sortie. Le participant qui a trouvé la solution est récompensé, il reçoit une quantité définie de monnaie HashCash créée pour l’occasion.
La création monétaire est liée à la preuve de travail afin d’assurer que la monnaie digitale demeure une ressource disponible en quantité limitée, mimant une propriété essentielle de l’or et des monnaies nationales. Cette unité de monnaie n’est pas facilement duplicable car sa création résulte d’un travail de calcul intensif.
Adam Back, aujourd'hui CEO de Blockstream
Le système d’Adam Back présente une contrainte majeure. Chaque unité de monnaie digitale ne peut être échangée qu’une seule fois, ce qui n’en fait pas une monnaie d’échange efficace. L’année suivante, de nouvelles monnaies digitales apparaissent, reprenant les idées de Back tout en permettant que chaque unité de monnaie soit réutilisable plusieurs fois. Nick Szabo crée le Bit Gold, Wei Dai le B-Money, et Hal Finney le RPOW (Reusable Proof of Work). Pourtant de nombreux problèmes subsistent. Ainsi, un participant avec une capacité de calcul disproportionnée par rapport aux autres peut produire et gagner de plus en plus d’unités de monnaie digitale, réduisant ainsi mécaniquement sa valeur.
Si l’idée d’une monnaie digitale anonyme, libérée des institutions centralisées, et offrant des coûts de transaction très bas, fait toujours rêver les cryptographes, l’espoir d’y arriver faiblit, jusqu’en octobre 2008. C’est à cette date qu’est publié, sous le nom d’emprunt Satoshi Nakamoto, un livre blanc révolutionnaire, Bitcoin: A Peer-to-Peer Electronic Cash System, qui propose une nouvelle forme de monnaie digitale, le Bitcoin, qui vient à bout de ces défis en se fondant sur un protocole informatique nouveau appelée «Blockchain», une chaîne de blocs permettant un système de vérification décentralisé.
Principes et fonctionnement du Bitcoin
Le Bitcoin est la première crypto-monnaie de l’Histoire, une monnaie digitale conçue sur un réseau informatique dit «pair-à-pair», c’est-à-dire décentralisé, et exploitant les principes de la cryptographie pour valider les transactions et émettre les unités de monnaie.
Au lieu de s’appuyer sur une autorité centralisée, une banque ou une entreprise (comme DigiCash), pour émettre et assurer le suivi des transactions, le protocole Bitcoin est conçu de telle sorte que chaque transaction et chaque compte d’utilisateur sont enregistrés par les ordinateurs des participants au système dans une base de donnée partagée appelée Blockchain. Il intègre également les avancées informatiques et cryptographiques majeures des dernières décennies – la cryptographie asymétrique, la signature électronique et les fonctions de hashage cryptographique.
Si Alice veut rejoindre le réseau Bitcoin, pour créer une ou plusieurs adresses Bitcoin, elle créé une sorte de compte bancaire (généralement une suite de 34 caractères alphanumériques) et une clef privée qui lui est associée (une suite de 64 caractères). Cela donne par exemple l’adresse Bitcoin suivante :
1N1UvXFohpmaK5QfDuNhNfsgRMPpG1pfAw
et la clef privée associée suivante:
L4qhYQaQTAqj5dusiwZtTLQ4AV5YA2QKyqj6MXkeiihzTA3YHYse.
Alice peut conserver cette clef sur un ordinateur, un smartphone, ou même un bout de papier. L’adresse Bitcoin est créée à partir de la clef privée par une série de fonctions mathématiques qui rendent la relation qui lie l’adresse Bitcoin et la clef privée non réversible. Il est donc impossible de trouver la clef privée d’Alice à partir de son adresse Bitcoin. Alice peut créer gratuitement autant de couples clef privée / adresse Bitcoin qu’elle souhaite sans risquer de doublon. A titre d’exemple, il y a autant de clefs privées possibles que d’atomes sur terre.
Seule Alice peut valider les transactions à partir de son adresse Bitcoin. Grâce à la signature numérique, elle peut envoyer de l’argent à une autre adresse sans avoir à partager sa clef privée. Elle valide le message contenant les données de sa transaction (montant, adresse Bitcoin d’envoi, etc) avec sa clef privée. Cette étape, réalisée par le logiciel Bitcoin, téléchargeable en open source, peut se faire sans être connecté à Internet. La transaction signée par Alice est envoyée au réseau d’ordinateurs qui ont également installé le logiciel Bitcoin. Ce réseau dit «pair-à-pair» valide les transactions grâce à l’adresse Bitcoin d’Alice. C’est ici qu’intervient la signature électronique: Alice peut prouver qu’elle détient la clef privée grâce à son adresse Bitcoin publique, sans que personne n’ait besoin de connaître sa clef privée.
Les ordinateurs du réseau valident que l’adresse Bitcoin avec laquelle Alice initie la transaction possède un montant de Bitcoins supérieur ou égal à celui qu’elle envoie. Pour cela, ils vérifient toutes les transactions émises vers et depuis l’adresse d’Alice. Tous les ordinateurs du réseau Bitcoin possèdent une copie de la Blockchain, c’est-à-dire une copie de l’enregistrement de toutes les transactions réalisées depuis l’origine du Bitcoin.
Lorsqu’une transaction est envoyée au réseau pair-à-pair, certains ordinateurs peuvent la recevoir plus rapidement que d’autres, ceux qui sont géographiquement les plus proches du lieu d’envoi par exemple, ce qui peut engendrer un désaccord entre les ordinateurs sur le solde de chaque adresse Bitcoin. Le système Bitcoin a donc besoin d’un registre unique répertoriant les transactions effectuées, un registre approuvé par tous qui permet de savoir exactement combien de Bitcoins chaque utilisateur a dans son portefeuille, un registre assurant que ces Bitcoins ne peuvent être copiés ni dépensés plusieurs fois. C’est pourquoi le protocole Bitcoin reprend l’idée astucieuse du HashCash, s’appuyant sur une compétition permanente entre les ordinateurs du réseau chargés de valider les transactions.
Fonctionnement de la Blockchain du Bitcoin
C’est le concept de «preuve de travail», qui permet à tous les membres du réseau, appelés «mineurs», de partager une version unique du registre des transactions. Le fonctionnement de la compétition s’apparente à celui d’une loterie. Le mineur gagnant est en réalité celui qui a réussi à résoudre l’énigme mathématique qui consiste à trouver l’empreinte du hash défini par le système. Ils sont à la recherche d’un hash dont ils connaissent l’empreinte mais dont ils ignorent la donnée de départ. Les ordinateurs du réseau rassemblent les transactions les plus récentes en un bloc, auquel ils ajoutent la signature digitale du bloc précédent et un nombre aléatoire, celui de la donnée de départ qui leur est inconnue, puis appliquent une fonction de hashage cryptographique (ici la fonction SHA 256) pour obtenir une empreinte constituée d’une suite de 64 caractères. Comme les fonctions de hashage cryptographique sont très difficiles à inverser, il est impossible de trouver la donnée de départ sans un travail de force brute. Tous les ordinateurs qui participent à la compétition calculent en permanence le hash cryptographique à partir de différentes valeurs, tout en ajoutant au bloc les nouvelles transactions qu’ils reçoivent, chacun cherchant à être le premier à trouver la solution.
La complexité de l’énigme à résoudre dépend de la puissance de calcul disponible sur le réseau, sachant que la validation d’un bloc est fixée à 10 minutes. Cette contrainte de temps est un paramètre de minage essentiel du protocole Bitcoin. Plus il y a de puissance de calcul disponible, plus la difficulté de l’énigme à résoudre augmente, et inversement, afin d’assurer que le temps imparti pour la validation du bloc soit respecté. Un des problèmes majeurs du système HashCash est ainsi résolu: la politique d’émission monétaire est maîtrisée et définie par le logiciel. Le Bitcoin est une monnaie conçue pour que les unités soient graduellement introduites. Elles ne sont pas émises par une autorité centrale mais par le système même.
Lorsqu’un mineur remporte la compétition, il envoie le bloc vainqueur à l’ensemble du réseau, permettant ainsi à tous les ordinateurs connectés de vérifier que l’empreinte du bloc est bien celle qui était recherchée. Les ordinateurs du réseau ajoutent ce bloc, et les transactions qu’il contient, à la Blockchain. Il s’impose comme le registre officiel de toutes les transactions réalisées depuis l’enregistrement du bloc précédent.
Lors d’un litige entre deux mineurs ex aequo, c’est le bloc qui a été adopté par la majorité de mineurs qui prévaut. Revenons à Alice. Si Alice et Bob sont chacun persuadés d’avoir trouvé le bloc vainqueur en premier, il faut les départager. Si la majorité des ordinateurs du réseau a ajouté le bloc d’Alice à la chaîne, tandis qu’une minorité a ajouté celui de Bob, les ordinateurs qui utilisent le registre de transactions avec le bloc de Bob seront rejetés par la majorité des autres ordinateurs jusqu’à ce qu’ils rejoignent cette majorité. Ce fonctionnement démocratique est essentiel car il élimine d’office les participants mal intentionnés qui chercheraient par exemple à s’attribuer de nouveaux Bitcoins de façon malhonnête. Les modifications apportées au logiciel Bitcoin utilisé par les mineurs sont également décidées à la majorité. Chaque utilisateur peut apporter une modification du code en open source du logiciel, mais ces changements ne sont pris en compte que si une majorité d’ordinateurs les adopte.
Dans le cas où le bloc vainqueur ne contiendraient pas certaines transactions inclues dans les blocs conçus par d’autres ordinateurs, ces transactions ne seront pas enregistrées via ce bloc-ci dans la Blockchain. Il leur faudra attendre le prochain bloc. Chaque bloc vainqueur contient une référence au bloc précédent et à l’état du réseau au moment de son enregistrement. C’est ce qui régit l’agencement des blocs et garantit qu’un nouveau bloc ne peut rejoindre la chaîne de blocs que là où se termine le bloc précédent.
Le fonctionnement révolutionnaire du Bitcoin apporter une réponse au problème dit des Généraux Byzantins: alors que l’on ne peut pas se fier à tous les membres du réseau, la Blockchain assure l’intégrité de la transmission de l’information dans un réseau distribué.
Lorsqu’un mineur conçoit un bloc vainqueur, il touche un certain nombre de Bitcoins comme récompense: il s’agissait de 50 Bitcoins au début du système, puis de 25, et maintenant de 12,5. Ce montant sera divisé par deux tous les 4 ans jusqu’en 2140, date à laquelle tous les Bitcoins, soit 21 millions, seront émis. Cette récompense monétaire incite les mineurs à participer au minage, essentiel au fonctionnement du système. Quand les mineurs intègrent les nouvelles transactions dans un bloc, ils ajoutent également une transaction qui correspond à la création monétaire de leur rémunération. Cette transaction est émise vers leur adresse Bitcoin. Ils remportent également les frais de transaction (volontaire) inclus dans les blocs.
Le Bitcoin peut s’acheter, se vendre, et s’échanger contre des monnaies réelles (USD, EUR, etc) sur un marché de change.
Ci-dessous, l’évolution du cours du Bitcoin depuis sa création:
Il existe aujourd’hui de nombreuses crypto-monnaies qui fonctionnent plus ou moins de la même façon que le Bitcoin, mais celui-ci, avec une capitalisation de plus de 17 milliards de dollars, reste de loin la crypto-monnaie la plus échangée.
5 plus grandes crypto-monnaies en volume au 4/01/17 (clic)
Le protocole Bitcoin a été conçu par Satoshi Nakamoto pour que seul le détenteur de la clef privée puisse dépenser ou récupérer l’argent conservé sur l’adresse Bitcoin. Chaque membre du réseau Bitcoin peut vérifier qu’il n’existe qu’un seul registre public et inaltérable de ce que l’ensemble des participants possèdent.
Pour la première fois dans l’Histoire, un système financier propose une monnaie qui peut être créée et transférée sans passer par un tiers de confiance centralisé. C’est la Blockchain qui garantit l’efficacité du système. Elle fonctionne comme une base de donnée publique, distribuée, c’est-à-dire partagée par ses différents utilisateurs, sans intermédiaires, fiable et inviolable. Elle peut être assimilée à un grand livre de comptes public, anonyme et infalsifiable. La Blockchain est une technologie de stockage et de transmission d’informations transparente, sécurisée et fonctionnant sans organe central de contrôle. Ce qui a été fait pour la monnaie, à savoir le passage d’un système centralisé à une structure décentralisée, peut s’appliquer à d’autres domaines, annonçant la promesse d’une révolution dans l’organisation structurelle de certains métiers.
Romain Rouphael et Côme Jean-Jarry sont les co-fondateurs de BELEM, société spécialisée dans les applications de la technologie Blockchain.
Lire aussi:
- Petite histoire de la cryptographie: de Jules César à l’ordinateur quantique
- Petite histoire de la cryptographie: de la machine Enigma à l’ordinateur
- Petite histoire de la cryptographie: Sur la piste de la cryptographie asymétrique
oops :
4. Protection des données personnelles: de PDG […]
encore un coup bas du correcteur orthographique de Petit-Mou Mot ?