![Cryptographie et crypto-monnaies Otp](https://contenthub-static.crypto.com/wp_media/2023/05/CRYPTOGRAPHY-AND-CRYPTOCURRENCIES_OTP.jpg)
Dans cet article d’approfondissement, nous abordons l’une des technologies fondamentales des crypto-monnaies – la cryptographie – en couvrant les bases du cryptage, des fonctions de hachage et des algorithmes de chiffrement, en guise d’introduction à la cryptographie en action.
Introduction à la cryptographie
La cryptographie, en termes simples, consiste à rendre les communications secrètes. Le terme “secret” signifie ici que, même en présence d’un espion qui peut surveiller toutes les communications, le message prévu peut toujours être transmis au destinataire tout en restant secret pour les autres.
La cryptographie fait souvent appel à des techniques mathématiques pour obtenir les propriétés souhaitables en matière de secret. Il est souvent associé au processus de conversion d’un texte clair ordinaire en texte chiffré, c’est-à-dire un texte que seul le destinataire prévu peut décoder. Le processus qui convertit le texte clair en texte chiffré est appelé cryptage, tandis que le processus de conversion du texte chiffré en texte clair est appelé décryptage. Un chiffre (ou un cryptogramme) est un algorithme de cryptage ou de décryptage, c’est-à-dire une série d’étapes bien définies qui peuvent être suivies comme une procédure.
![Image 14](https://contenthub-static.crypto.com/wp_media/2023/05/image-14.png)
La cryptographie n’est pas une nouveauté et ne concerne pas uniquement les crypto-monnaies. Il est largement utilisé dans la vie quotidienne lorsque des informations doivent être protégées, comme les mots de passe des transactions bancaires, les mots de passe des comptes de messagerie et les transactions de commerce électronique.
La blockchain et les crypto-monnaies utilisent la cryptographie de multiples façons – pour les portefeuilles, les transactions, la sécurité et les protocoles de préservation de la vie privée. Par exemple :
- Cryptographie à clé publique utilisée dans une transaction
- Hachage pour le minage de Bitcoin
- Arbres de Merkle pour le positionnement des transactions dans les blocs
On peut presque dire que si vous ne comprenez pas la cryptographie, vous ne comprenez pas les crypto-monnaies. Pour mieux apprendre, plongeons dans le monde de la cryptographie.
Chiffrement symétrique et asymétrique et fonctions de hachage
La classification des algorithmes cryptographiques est basée sur le nombre de clés utilisées pour le cryptage et le décryptage : cryptage symétrique, cryptage asymétrique et fonctions de hachage.
![Algorithmes cryptographiques17 mai](https://contenthub-static.crypto.com/wp_media/2023/05/Cryptographic-AlgorithmsMay-17.jpg)
Chacune a des applications spécifiques qui sont irremplaçables l’une par rapport à l’autre. Par exemple, le chiffrement asymétrique est nécessaire pour générer les paires de clés privées/publiques, tandis que les fonctions de hachage sont nécessaires pour produire des empreintes numériques uniques.
Chiffrement symétrique
Le chiffrement symétrique utilise une seule clé pour le chiffrement et le déchiffrement. L’expéditeur du message utilise la clé pour chiffrer le texte en clair et envoie le texte chiffré au destinataire, qui utilise la même clé pour déchiffrer le message et récupérer le texte en clair. Les systèmes à clé symétrique sont plus rapides et plus simples (par rapport aux systèmes à clé asymétrique), mais ils ne résolvent pas le problème de l’échange de clés entre l’expéditeur et le destinataire si la clé n’est pas connue à l’avance.
![Image 15](https://contenthub-static.crypto.com/wp_media/2023/05/image-15.png)
Les systèmes de cryptographie symétrique se divisent en deux catégories : les chiffrements par bloc et les chiffrements par flux.
Chiffres en bloc
Les algorithmes de chiffrement par blocs décomposent l’entrée en blocs de taille fixe (par exemple, 128 bits) et chacun des blocs est traité par plusieurs fonctions à l’aide de la clé secrète. L’algorithme détermine la longueur du bloc, la clé et les fonctions utilisées dans le processus.
Parmi les algorithmes de chiffrement par blocs couramment utilisés, on peut citer
Norme de cryptage des données (DES)
- Longueur du bloc = 64 bits
- Longueur de la clé = 56 bits
Créé par IBM, le DES était l’un des algorithmes de chiffrement symétrique par bloc les plus populaires au début des années 1970 et est l’un des algorithmes de chiffrement les plus étudiés. Il a été adopté comme norme fédérale par le National Bureau of Standards (États-Unis) en 1976, et inclus dans les normes ANSI en tant qu’algorithme de cryptage des données pour le secteur privé en 1981.
Au début du XXIe siècle, le DES était considéré comme peu sûr, principalement en raison de la longueur relativement courte de sa clé secrète, qui le rendait vulnérable aux attaques par force brute.
Norme de chiffrement avancée (AES)
- Longueur du bloc = 128 bits
- Longueur de la clé = 128, 192 ou 256 bits
AES, un algorithme moderne de chiffrement par blocs symétriques, est l’un des algorithmes de chiffrement les plus populaires au monde. Développé en 1997 par Vincent Rijmen et Joan Daemen, il a ensuite été approuvé comme norme fédérale de cryptage aux États-Unis en 2002.
L’AES est considéré comme un système de chiffrement solide et sûr. Au fil des ans, plusieurs attaques ont été lancées contre différentes implémentations de l’AES, mais elles concernent des cas particuliers et ne sont pas considérées comme une menace pour l’algorithme AES lui-même.
Triple DES (3DES)
- Longueur du bloc = 64 bits
- Longueur de la clé = 56, 112 ou 168 bits
Le chiffrement 3DES a été développé parce que le chiffrement DES, inventé au début des années 1970 et protégé par une clé de 56 bits, s’est avéré trop faible et facile à casser avec les ordinateurs modernes de l’époque.
Chiffres en flux
Les algorithmes de chiffrement par flux sont plus souples que les algorithmes de chiffrement par bloc, car ils sont conçus pour chiffrer des caractères individuels (généralement des chiffres binaires) d’un message en clair, un à la fois, à l’aide d’une transformation de chiffrement qui varie dans le temps. En revanche, les algorithmes de chiffrement par blocs ont tendance à chiffrer simultanément les blocs de texte en clair à l’aide d’une transformation de chiffrement fixe.
Dans l’ensemble, le matériel des algorithmes de chiffrement par flot est plus rapide que celui des algorithmes de chiffrement par bloc. Les algorithmes de chiffrement de flux sont également plus appropriés et, dans certains cas, obligatoires (par exemple, dans certaines applications de télécommunications) lorsque la mémoire tampon est limitée ou lorsque les caractères doivent être traités individuellement au fur et à mesure de leur réception. La propagation des erreurs étant limitée, voire inexistante, les algorithmes de chiffrement par flot peuvent également être avantageux dans les situations où les erreurs de transmission sont très probables.
Parmi les algorithmes de chiffrement de flux les plus répandus, citons
RC4
- Longueur de la clé = jusqu’à 2 048 bits
RC4 est un algorithme de chiffrement de flux à taille de clé variable dont les opérations sont orientées vers les octets et qui est largement utilisé dans les protocoles les plus courants. Par exemple, il est utilisé pour protéger le trafic Internet (Transport Layer Security, connu sous le nom de TLS) ou pour protéger les réseaux sans fil (Wired Equivalent Privacy, ou WEP).
Bloc-notes à usage unique (OTP)
- Longueur de la clé = longueur du message
La théorie qui sous-tend le One-Time Pad (OTP) est que la clé doit avoir au moins la même longueur que le message (le texte en clair) et consister en des nombres réellement aléatoires. Chaque lettre du texte en clair est “mélangée” avec un élément de l’OTP. Il en résulte un texte chiffré qui n’a aucun rapport avec le texte clair lorsque la clé est inconnue. Au niveau de la réception, le même OTP est utilisé pour récupérer le texte en clair original.
Salsa20
- Longueur de la clé = 32 octets
Salsa20 est un algorithme de chiffrement soumis au projet eSTREAM, qui s’est déroulé de 2004 à 2008 et qui était censé promouvoir le développement des algorithmes de chiffrement par flot. Il est considéré comme un algorithme bien conçu et efficace. Il n’existe aucune attaque connue et efficace contre la famille de chiffrements Salsa20.
Chiffrement asymétrique
Le chiffrement asymétrique est également connu sous le nom de cryptographie à clé publique (PKC). Il utilise deux clés différentes pour le cryptage et le décryptage. La clé qui doit être gardée secrète est appelée clé privée, tandis que la clé qui ne doit pas l’être est appelée clé publique. Par exemple, si A veut envoyer un message à B et s’assurer que B sera la seule personne capable de comprendre le message, A peut crypter le message à l’aide de la clé publique de sorte que seul B puisse décrypter le message à l’aide de la clé privée.
Décrit pour la première fois publiquement par Martin Hellman, professeur à l’université de Stanford, et Whitfield Diffie, étudiant diplômé, en 1976, le chiffrement asymétrique est décrit comme un système de cryptage à deux clés dans lequel deux parties peuvent s’engager dans une communication sécurisée sur un canal de communication non sécurisé sans avoir à partager une clé secrète commune.
![Image 22](https://contenthub-static.crypto.com/wp_media/2023/05/image-22.png)
Bien que la clé publique et la clé privée soient différentes, elles sont mathématiquement liées. Mais la relation mathématique n’est utilisable que lors du cryptage et du décryptage, et d’autres personnes ne peuvent pas déduire la clé privée même si elles connaissent la clé publique.
Les algorithmes de cryptographie asymétrique sont largement utilisés dans les crypto-monnaies. Par exemple, l’adresse du portefeuille est créée à partir d’une clé publique, et seules les personnes possédant la clé privée peuvent utiliser l’argent qui s’y trouve.
Parmi les systèmes de cryptage asymétrique les plus répandus, on peut citer
RSA
La clé publique et la clé privée ne sont pas choisies arbitrairement. Ils doivent être générés selon des procédures spécifiques. La clé publique se compose de deux grands nombres entiers (e, n) et la clé privée de deux grands nombres entiers (d, n). Les trois nombres e, d et n sont liés d’une manière particulière, qui nécessite un peu plus de mathématiques :
Supposons que vous utilisiez un encodeur qui transforme tout le texte anglais en chiffres arabes. Par exemple, “Hey ! Hey ! Hey !” se traduit par “7 ! 7 ! 7 !” et “bitconnnnnnnnect” est traduit par “83333331”. Alice veut maintenant envoyer le message “Hello” (qui est traduit par “2”) à Bob.
La méthode la plus simple pour Alice d’envoyer le message à Bob est de lui dire directement “2”. Mais Alice et Bob ne veulent pas que leur message soit vu par quelqu’un d’autre. Heureusement, Bob connaît le RSA. Il a créé une paire de clés publique/privée et a demandé à Alice de coder le message “2” à l’aide de la clé publique qu’il lui a fournie.
Alice chiffre ensuite le message “2” à l’aide de la clé publique de Bob (5, 14), et le message chiffré devient “4”, ce qui signifie “Erreur du serveur de traduction”. Même si une personne écoutant les conversations voyait leur message, elle n’aurait aucune idée de la raison pour laquelle ils envoient le “4”.
Bob sait que le “4” n’est pas le vrai message d’Alice. Il décrypte ensuite le message avec sa clé privée, qu’il n’a communiquée à personne (pas même à Alice). La clé privée est (11, 14), et en appliquant certaines procédures de décryptage, Bob découvre que le vrai message est “2”.
![Image 17](https://contenthub-static.crypto.com/wp_media/2023/05/image-17.png)
Illustrons par un tableau le fonctionnement de ce processus :
![Image 23](https://contenthub-static.crypto.com/wp_media/2023/05/image-23.png)
Bob ne reçoit que le message crypté “4”. Mais en appliquant le décryptage avec sa clé privée, il a réussi à récupérer le vrai message “2”.
Comment obtenir la clé publique (5, 14) et la clé privée (11, 14) ?
![Image 25](https://contenthub-static.crypto.com/wp_media/2023/05/image-25.png)
Ce processus est appelé génération de clés RSA.
Pour les personnes intéressées, il est possible de se renseigner sur le cryptage RSA.
Cryptographie à courbe elliptique (ECC)
L’ECC est un algorithme de cryptage asymétrique alternatif au RSA. De même, il permet aux utilisateurs de créer une paire de clés publique/privée, mais les algorithmes/procédures utilisés sont différents de ceux de RSA.
Par exemple, pour la courbe elliptique (voir ci-dessous), la formule est y2 = x3 + ax + b, où a et b sont les coefficients qui déterminent la forme de la courbe.
Nous commençons par un point spécifique de la courbe. Ensuite, nous utilisons une fonction (appelée fonction point) pour trouver un nouveau point. Nous répétons la fonction point pour faire le tour de la courbe jusqu’à ce que nous arrivions à notre dernier point. Passons en revue l’algorithme :
![Cryptographie à courbe elliptique17 mai](https://contenthub-static.crypto.com/wp_media/2023/05/Elliptic-Curve-CryptographyMay-17.jpg)
Il s’agit d’une excellente fonction de trappe car, si l’on connaît l’emplacement du point de départ (A) et le nombre de sauts nécessaires pour atteindre le point d’arrivée (E), il est très facile de trouver le point d’arrivée. En revanche, si l’on ne connaît que les emplacements du point de départ et du point d’arrivée, il est pratiquement impossible de déterminer le nombre de sauts nécessaires pour y parvenir. Ainsi, dans cet exemple, nous pouvons définir la clé publique et la clé privée comme suit :
- Clé publique : Point de départ A, point d’arrivée E
- Clé privée : Nombre de sauts de A à E
De manière plus générale, pour une courbe elliptique donnée (comme indiqué ci-dessous), la clé publique est (P, G), où P est le point de départ et G est le point d’arrivée (un point spécial prédéfini, le point de départ). [constant] point EC), et la clé privée est k (k est un entier et P = k * G).
![Détails de la cryptographie à courbe elliptique22 mai](https://contenthub-static.crypto.com/wp_media/2023/05/DETAILS-OF-ELLIPTIC-_CURVE-CRYPTOGRAPHYMay22.jpg)
Algorithme d’échange de clés Diffie-Hellman
L’algorithme Diffie-Hellman est utilisé pour établir un secret partagé qui peut être utilisé pour des communications privées lors de l’échange de clés cryptographiques sur un réseau public.
Traditionnellement, les communications cryptées entre deux parties nécessitaient l’échange de clés par un canal physique sécurisé, tel que des listes de clés sur papier transportées par un coursier de confiance. La méthode d’échange de clés Diffie-Hellman permet à deux parties ne se connaissant pas au préalable d’établir conjointement une clé secrète partagée sur un canal non sécurisé. Cette clé peut ensuite être utilisée pour crypter les communications suivantes à l’aide d’un algorithme de chiffrement à clé symétrique (comme indiqué ci-dessus).
Pour simplifier l’algorithme, nous utilisons l’image suivante pour présenter la procédure de ce cryptage. Veuillez noter que la lettre P au début est choisie au hasard dans une courbe elliptique, et que G est une racine primitive de P. Les clés privées de a et b sont choisies au hasard.
![Image 20](https://contenthub-static.crypto.com/wp_media/2023/05/image-20.png)
Alice et Bob peuvent maintenant utiliser la même clé secrète (3) pour chiffrer le message entre eux sans connaître cette clé à l’avance.
Fonctions de hachage
Les fonctions de hachage, également appelées condensés de messages et chiffrement à sens unique, compressent le texte en clair en un texte de longueur fixe, appelé valeur de hachage (ou condensé). Il est impossible de récupérer la valeur de hachage dans le texte en clair.
![Image 16](https://contenthub-static.crypto.com/wp_media/2023/05/image-16.png)
Une fonction de hachage doit remplir trois conditions de sécurité :
1) Résistance aux collisions
Il est impossible, d’un point de vue informatique, de trouver deux chaînes d’entrée différentes qui, appliquées à la fonction de hachage, produisent le même résultat.
Elle peut être exprimée de la manière suivante :
Il est difficile de trouver x et y, où H(x) = H(y), mais x n’est pas égal à y.
Veuillez noter qu’il doit y avoir des collisions puisque nous passons d’un espace d’entrée beaucoup plus grand t (n’importe quelle chaîne) à un espace de sortie fixe (2^256).
Application : Le hachage en tant que résumé de message. Si nous savons que H(x) = H(y), nous pouvons supposer que x = y.
Exemple : Pour reconnaître un fichier que l’on a déjà vu, il faut se souvenir de son hachage. Cela fonctionne parce que le hachage est petit.
2) Caché
Étant donné H(x), il est impossible de trouver x. Cela peut s’expliquer par le fait que si l’on nous donne la version hachée de x, nous ne trouverons pas x.
![Image 18](https://contenthub-static.crypto.com/wp_media/2023/05/image-18.png)
Application de la propriété cachée : Engagement
C’est l’analogie numérique de prendre une valeur (un nombre), de la sceller dans une enveloppe et de mettre cette enveloppe sur la table – où tout le monde peut la voir – s’engageant ainsi sur ce qui se trouve dans l’enveloppe et sur son caractère secret pour tout le monde. Plus tard, l’enveloppe peut être ouverte et la valeur en être retirée, mais elle est scellée. Il s’agit donc de s’engager sur une valeur et de la révéler plus tard.
L’algorithme d’engagement fait deux choses :
1. S’engager sur un message : Renvoie deux valeurs – un engagement et une clé. L’engagement est identique à l’enveloppe posée sur la table ; la clé est nécessaire pour l’ouvrir.
2. Plus tard, nous révélons à quelqu’un le message original et le laissons vérifier qu’il correspond à l’original, en lui fournissant l’engagement et la clé.
3) Convivialité de l’énigme
Si quelqu’un veut cibler une certaine fonction de hachage, il doit acquérir une certaine valeur de y. Si une partie de l’entrée est choisie au hasard, il est difficile de trouver une autre valeur pour cibler la valeur de la fonction de hachage.
Étant donné un résultat y de la fonction de hachage, si k est choisi dans une distribution aléatoire, il est impossible de trouver un x tel que le hachage de k|x(k concaténé avec x) soit y : H(k|x) = y.
Fonctions de hachage populaires
Digest de message (MD)
La famille MD comprend les fonctions de hachage MD2, MD4, MD5 et MD6. Elle a été adoptée en tant que norme Internet RFC 1321 et est une fonction de hachage de 128 bits.
Les empreintes MD5 ont été largement utilisées dans le monde des logiciels pour garantir l’intégrité des fichiers transférés. Par exemple, les serveurs de fichiers fournissent souvent une somme de contrôle MD5 précalculée pour les fichiers, de sorte qu’un utilisateur peut comparer la somme de contrôle du fichier téléchargé à cette somme.
Fonction de hachage sécurisée (SHA)
La famille SHA se compose de quatre algorithmes SHA : SHA-0, SHA-1, SHA-2 et SHA-3. Bien qu’issus de la même famille, ils sont structurellement différents.
SHA-0 a été publié par le National Institute of Standards and Technology (NIST) des États-Unis en 1993. Il présentait peu de faiblesses mais n’est pas devenu très populaire.
Plus tard, en 1995, SHA-1 a été conçu pour corriger les faiblesses supposées de SHA-0. Des collisions contre l’algorithme SHA-1 complet peuvent être produites à l’aide de l’attaque shattered, et la fonction de hachage doit être considérée comme cassée.
La famille SHA-2 comprend quatre autres variantes SHA : SHA-224, SHA-256, SHA-384 et SHA-512, en fonction du nombre de bits de leur valeur de hachage. SHA-256 et SHA-512 sont couramment utilisés. SHA-512 est plus sûr que SHA-256 et est souvent plus rapide que SHA-256 sur les machines 64 bits.
En octobre 2012, le NIST a choisi l’algorithme Keccak comme nouvelle norme SHA-3. Keccak offre de nombreux avantages, tels que des performances efficaces et une bonne résistance aux attaques.
RIPEMD
RIPEMD est une famille de fonctions de hachage cryptographique qui comprend RIPEMD, RIPEMD-128 et RIPEMD-160. Il existe également des versions 256 et 320 bits de cet algorithme. RIPEMD-160 est une version améliorée et la plus utilisée de la famille.
Le mot de la fin : Appliquer la cryptographie dans la pratique
La cryptographie a une histoire étonnamment longue, mais dont les possibilités d’utilisation future semblent infinies. Ce processus est à la base des crypto-monnaies et des portefeuilles actuels.
Pour plus d’informations sur les différents types de portefeuilles de crypto-monnaie, lisez Qu’est-ce qu’un portefeuille de crypto-monnaies ? Guide du débutant.
Diligence raisonnable et recherches personnelles
Tous les exemples cités dans cet article sont donnés à titre d’information uniquement. Vous ne devez pas considérer ces informations ou autres documents comme des conseils juridiques, fiscaux, d’investissement, financiers, de cybersécurité ou autres. Rien de ce qui est contenu dans le présent document ne constitue une sollicitation, une recommandation, une approbation ou une offre par Crypto.com d’investir, d’acheter ou de vendre des pièces de monnaie, des jetons ou d’autres actifs cryptographiques. Les revenus tirés de l’achat et de la vente de crypto-actifs peuvent être soumis à l’impôt, y compris l’impôt sur les plus-values, dans votre juridiction. Les descriptions des produits ou des caractéristiques de Crypto.com ne sont données qu’à titre d’exemple et ne constituent pas une approbation, une invitation ou une sollicitation.
Les performances passées ne constituent pas une garantie ou un prédicteur des performances futures. La valeur des crypto-actifs peut augmenter ou diminuer, et vous pourriez perdre la totalité ou une partie substantielle de votre prix d’achat. Lors de l’évaluation d’un actif cryptographique, il est essentiel que vous fassiez vos recherches et que vous exerciez une diligence raisonnable afin de prendre la meilleure décision possible, car tout achat relève de votre seule responsabilité.