RSA, PGP, Mnemonique, Zero Knowledge Proof
Rien de compliqué pour signer, encrypter, vérifier, restaurer des données ou leur accès
Courbe elliptique
La cryptographie est une affaire de mathématiques.
En traçant des tangentes sur une courbe elliptique, on peut obtenir les paramètres uniques d’un clé privée, à partir de laquelle seront dérivées des clés publiques.
- La clé publique est un point sur une courbe elliptique qui correspond à la clé privée.
- La clé privée est le nombre de fois qu’il faut multiplier le générateur de la courbe elliptique pour avoir la clé publique.
- Les adresses publiques sont calculées à partir de la clé publique ECDSA “Elliptic Curve Digital Signature Algorithm”.
Il existe d’autres équations de courbes elliptique et d’autres d’autres moyens de générer des adresses publiques.
Identité à base de clé publique
- Une représentation unique d’une identité
- Adresse publique représentant un hash d’une clé publique (algorithme hash256 très souvent)
- Sans avoir à en dévoiler les metadatas pour être vérifié
- Permettent des signatures personnelles
- Applicables aux humains et aux machines
RSA
Le chiffrement RSA (nommé par les initiales de ses trois inventeurs) est un algorithme de cryptographie asymétrique, très utilisé dans le commerce électronique, et plus généralement pour échanger des données confidentielles sur Internet. Cet algorithme a été décrit en 1977 par Ronald Rivest, Adi Shamir et Leonard Adleman. RSA a été breveté1 par le Massachusetts Institute of Technology (MIT) en 1983 aux États-Unis. Le brevet a expiré le 21 septembre 2000.
https://fr.wikipedia.org/wiki/Chiffrement_RSA
Signer
Vérifier une signature
Encrypter
Décrypter
Exemple du RSA utilisé dans les blockchains
PGP
Pretty Good Privacy (qu’on pourrait traduire en français assez bon niveau de confidentialité), plus connu sous le sigle PGP, est un logiciel de chiffrement cryptographique, développé et diffusé aux États-Unis par Philip Zimmermann en 1991. PGP se propose de garantir la confidentialité et l’authentification pour la communication des données. Il est souvent utilisé pour la signature de données, le chiffrement et le déchiffrement des textes, des courriels, fichiers, répertoires et partitions de disque entier pour accroître la sécurité des communications par courriel. Utilisant la cryptographie asymétrique mais également la cryptographie symétrique, il fait partie des logiciels de cryptographie hybride. PGP et les produits similaires suivent le standard OpenPGP (RFC 48803) pour le chiffrement et le déchiffrement de données.
Chiffrer
Déchiffrer
Mnemonique
La mnémotechnique, ou mnémonique, décrit l’ensemble des applications pratiques de la recherche en psychologie sur la mémoire, et des techniques, parfois très anciennes, augmentant la mémorisation de l’information.
https://fr.wikipedia.org/wiki/Mn%C3%A9motechnique
Zero Knowledge Proof
Il existe une quantité algorithmes pour faire du ZKP. Nous allons décrire celle utilisée dans Bitcoin/Elements.
Propriété homomorphe de l’engagement de Pederson
En cryptologie, la mise en gage (en anglais : commitment scheme) est un processus qui permet à une personne de « mettre en gage » une valeur (ou un énoncé) tout en la maintenant cachée aux autres, avec la possibilité de révéler cette valeur plus tard en prouvant que c’est bien la valeur qui avait été mise en gage. La mise en gage est conçue de telle sorte que la personne est liée à la valeur mise en gage.
En pratique, la mise en gage se fait en calculant une valeur de mise en gage à partir de la valeur que l’on veut cacher et en communiquant cette valeur de mise en gage à un destinataire. Par la suite, lorsque la valeur originellement cachée sera communiquée au destinataire, celui-ci pourra vérifier que la valeur qui lui a été révélée est bien la valeur qui a servi à calculer la valeur de mise en gage.
Les mises en gage ont des applications importantes dans un certain nombre de protocoles cryptographiques, y compris le jeu de pile ou face sécurisé, les preuves à divulgation nulle de connaissance, les signatures numériques et les calculs sécurisés à plusieurs participants.
Le concept de mise en gage a été formalisé par Gilles Brassard, David Chaum et Claude Crépeau en 1988.
Calculons l’engagement d’Alice. Elle envoie 5 BTC.
Ca = PC(BF_alice, amount_alice) = BF_alice * 7 + amount_alice * 29 = 92 * 7 + 5 * 29 = 789
Et puis l’engagement de Bob. Il reçoit 5 BTC.
Cb = PC(BF_bob, amount_bob) = BF_bob * 7 + amount_bob * 29 = 9 * 7 + 5 * 29 = 208
Enfin, Eve peut calculer la différence entre Ca et Cb:
Ca — Cb = 789–208 = 581
Et puis appliquez un modulo p = 7 : 581 % 7 = 0
Eve voit que le résultat est égal à 0. Elle peut conclure qu’Alice et Bob ont engagé le même montant. Cela signifie que la transaction est valide.
Imaginons que Bob ment et engage un montant de 8 BTC. Donc:
Cb = PC(BF_bob, amount_bob) = BF_bob * 7 + amount_bob * 29 = 9 * 7 + 8 * 29 = 295
Et quand Eve essaiera de vérifier la transaction:
(Ca — Cb) % p = (789–295) % 7 = 494 % 7 = 4
As (Ca — Cb)%p n’est pas égal à zéro, la transaction n’est donc pas confirmée.
Eve sait que quelqu’un a menti.