- Objectifs de l’unité
- Contexte
- Définitions
- Timelines
- Catégories de chiffrement
- Cryptographie à clé secrète
- Chef César
- Substitution monoalphabétique
- Substitution homophonique
- Vigenère simple
- Auto-Key Vigenère
- Chiphers modernes à clé automatique
- One Time Pad
- Playfair
- Quatre-carrés
- Transposition de bloc simple
- Transposition en colonnes
- La clôture de rails
- Combinaison de la substitution et de la transposition
- Bifid
- Trifide
- Enigma
- Méthodes cryptographiques modernes
- DES
- IDEA
- RC4
- RC6
- Blowfish
- Twofish
- AES
- Échange de clés
- Cryptographie à clé publique
- Cryptosystème RSA
- Cryptographic Hashing
- Codes d’authentification de message
- Signatures numériques
- RSA pour les signatures numériques
- DSA
- Cryptanalyse
- Exemples de programmation
- Exemples de JavaScript
- Exemples Python
- Exemples Java
Objectifs de l’unité
Contexte
Alice et Bob peuvent être des personnes mais aussi des clients et des serveurs, des ordinateurs homologues, des magasins de données, des routeurs de réseau, etc. Mallory peut usurper l’un des participants, ajouter, modifier ou supprimer des messages réels, détourner la connexion, faire un déni de service, injecter un logiciel malveillant, etc.
Buts:
- Confidentialité : Il devrait coûter à Eve plus de récupérer $m$ que ce que $m$ vaut.
- Authentification : Bob devrait être capable de vérifier que c’est Alice qui a envoyé $m$.
- Intégrité : Bob devrait pouvoir vérifier que $m$ n’a pas été altéré.
- Non-répudiation : Alice ne doit pas pouvoir nier l’envoi de $m$.
Les meilleurs cryptosystèmes supposent qu’Eve et Mallory connaissent $E$, $D$, $c$, et, si $k_e \neq k_d$, alors $k_e$ également. La plupart des cryptosystèmes ne s’appuient pas sur le fait que leurs algorithmes sont gardés secrets, car :
- Si votre algorithme secret est compromis (quelqu’un pourrait quitter votre groupe), vous devez le changer, et c’est beaucoup plus difficile que de simplement changer une clé !
- Les algorithmes publics peuvent être soumis à des milliers d’experts qui cherchent des failles, donc vous avez un certain degré de confiance dans ceux qui résistent à l’examen.
Lectures complémentaires:Security Through Obscurity,Kerchoff’s Principle andthis discussion.
L’étude de la cryptologie comprend la conception de divers chiffrements, les méthodes de cryptanalyse (attaques), l’échange de clés, l’authentification des clés, le hachage cryptographique, la signature numérique et les questions sociales (juridiques, politiques, etc.). Voir la page Wikipedia sur les sujets de la cryptographie.
Ne faites pas ce genre de choses vous-même dans des applications réelles
Sûr, c’est bien de jouer à la maison, mais n’essayez JAMAIS de rouler votre propre cryptographie pour quelque chose de réel. Laissez cela aux professionnels. Si vous devenez vous-même un pro, alors, mmmmm, d’accord.
Ceci a été une importante annonce de service public.
Définitions
Mots à connaître:
Cryptographie L’art et la science de faire des chiffrages. Cryptanalyse L’art et la science de la rupture des ciphers, c’est-à-dire l’extraction de $m$ étant donné $c$, $E$, $D$, et éventuellement $k_e$. Cryptologie L’étude de la cryptographie et de la cryptanalyse.
Cryptosystème Suite particulière d’algorithmes et de protocoles pour le chiffrement, le déchiffrement et la génération de clés. Exemples : Le cryptosystème Cramer-Shoup, le cryptosystème Rabin, le cryptosystème Benaloh, le cryptosystème RSA. Système cryptographique Tout système qui utilise la cryptographie. Cipher Un algorithme utilisé dans un cryptosystème.
Confusion La propriété d’avoir la relation entre le texte en clair, le texte chiffré et la clé si compliquée qu’elle est inutile pour le cryptanalyste. Diffusion La propriété d’avoir des modèles statistiques dans le texte en clair répandus largement dans le texte chiffré.
Timelines
Si vous aimez l’histoire….
- Article sur l’histoire de la cryptographie de Wikipedia
- Timeline de Wikipedia
- Timeline de Carl Ellison
Catégories de chiffrement
Voici quelques catégories utiles de chiffrement. Notez qu’un chiffrement particulier peut appartenir à plus d’une de ces catégories.
- Classique : Un chiffrement assez facile à réaliser à la main, généralement à base de caractères. Aussi appelé manuel.
- Moderne : À peu près tout chiffrement qui n’est pas classique.
- Substitution : Chaque caractère du texte en clair est remplacé par un ou plusieurs caractères pour constituer le texte chiffré.
- Transposition : Les caractères du texte en clair sont réarrangés pour former le texte chiffré.
- Monoalphabétique : Un chiffre de substitution dans lequel un caractère du texte en clair est toujours remplacé par le même caractère.
- Polyalphabétique : Un chiffre de substitution qui utilise essentiellement plusieurs mappages de substitution monoalphabétique.
- Homophonique : Une substitution dans laquelle un caractère peut correspondre à l’un d’un ensemble de caractères.
- Polygraphique : Une substitution de blocs de caractères pour des blocs de caractères.
- Périodique : Un chiffrement polyalphabétique dans lequel le schéma de remplacement se répète.
- Non-périodique : Auto-explicatif si vous comprenez périodique.
- Bloc : Le chiffrement s’effectue non pas par caractère mais par blocs de caractères.
- Flux : Chiffrement opérant sur un flux de données de longueur inconnue, intégrant généralement une rétroaction.
- Clé secrète : Chiffrement dans lequel $k_e$ et $k_d$ sont identiques ou trivialement dérivables l’un de l’autre ; nécessite que les parties se rencontrent en secret pour échanger les clés qu’elles vont utiliser. Aussi appelé symétrique.
- Clé publique : Schéma dans lequel la clé de chiffrement de chacun est connue publiquement mais leur clé de déchiffrement est gardée secrète. Aussi appelé asymétrique.
Cryptographie à clé secrète
Les chiffrements à clé secrète (alias clé symétrique) sont beaucoup plus rapides que les chiffrements à clé publique, mais la gestion des clés peut être un énorme problème.
- Si $n$ personnes dans un groupe doivent communiquer,elles ont besoin de $\frac{n(n-1)}{2}$ clés.
- Les clés doivent être distribuées de manière sécurisée (en secret).
- Les clés doivent être gardées en sécurité.
- Les clés doivent être changées fréquemment, ce qui alimente le casse-tête de la distribution.
NOTE
Dans les exemples à base de caractères ci-dessous, nous supposerons (sans aucune perte de généralité) un alphabet de 26 symboles (
A..Z
).
Chef César
Un chiffrement complètement pathétique et non sécurisé par rapport aux normes modernes. La clé de chiffrement $k_e$ est un petit entier et $k_d = k_e$. Pour chiffrer, ajouter $k_e$ à chaque caractère du texte en clair ; pour déchiffrer, soustraire.
ATTACKATDAWN
devient FYYFHPFYIFBS
Trivial à craquer : il suffit de deviner $k_e$.
Substitution monoalphabétique
Au lieu de simplement ajouter un décalage fixe à chaque caractère, vous pouvez précalculer une table de substitution en générant une permutation aléatoire de votre alphabet. Par exemple:
ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX
Maintenant ATTACKATDAWN
est maintenant MNNMHRMNPMDB
.
Vous ne pouvez pas craquer ceci en devinant la clé (il y a $n!$ clés possibles), mais l’analyse de fréquence peut craquer n’importe quel chiffre de substitution monoalphabétique, à condition que le message soit assez long.
Pour les techniques dont la clé est une permutation, une façon de rendre la clé plus facile à retenir est de choisir une phrase, de disposer ses lettres uniques, puis de remplir les lettres manquantes dans l’ordre. Par exemple, PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL
donne cette correspondance de substitution:
PREMATUOIZNSHFLVBCDGJKQWXY
Substitution homophonique
Chaque lettre du texte en clair correspond à un ou plusieurs symboles dans le texte chiffré. Le nombre de cibles doit être proportionnel à sa fréquence (pour déjouer l’analyse de fréquence). Exemple:
A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05
Pour chiffrer, choisir au hasard parmi les possibilités. Exemple, un chiffrement possible de ATTACKATDAWN
est
56 78 20 95 65 07 12 72 06 50 92 61
Vigenère simple
Le chiffre connu sous le nom de chiffre de Vigenère à décalage simple n’a pas du tout été inventé par Vigenère… il semble avoir été décrit pour la première fois par Giovan Battista Bellaso. La clé est une chaîne de caractères que l’on ajoute au texte en clair par addition modulaire, comme dans cet exemple (A=0, B=1, C=2, …, Z=25):
Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI
Pour générer du texte chiffré à la main, on peut utiliser une roue codeuse ou une tabula recta.
Ce schéma n’est pas sûr puisque la clé se répète. Si la longueur de la clé peut être déterminée, le cryptanalyste peut faire plusieurs analyses de fréquence (une pour chaque valeur de décalage dans la clé). Les méthodes pour déterminer la longueur de la clé sont la méthode de Kaisiski et le test de Friedman.
Pour les données binaires (c’est-à-dire une séquence de bits) l’addition modulaire base-2 est juste un simple xor. Exemple:
Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011
Auto-Key Vigenère
Vigenère a en fait créé un chiffrement autokey qui est plus fort car la clé ne se répète jamais. Au lieu de cela, la « clé » est composée de la phrase clé suivie du texte en clair, comme ceci:
Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU
Celle-ci utilisait le texte en clair comme partie de la clé. Vous pouvez également utiliser le texte chiffré. Vous voyez comment :
Chiphers modernes à clé automatique
Vous pouvez toujours craquer les ciphers de Vigenère à clé automatique par analyse linguistique, car la clé contient du texte et est donc susceptible d’avoir des lettres à haute fréquence. Les chiffrements modernes à clé automatique génèrent les valeurs de décalage avec un générateur de nombres aléatoires. La clé ensemence le générateur.
One Time Pad
Si la clé :
- est aussi longue ou plus longue que le message encodé
- est vraiment générée de façon aléatoire
- est utilisée une et une seule fois
Alors vous avez un chiffrement prouvé sûr appelé le one time pad. Votre algorithme réel peut utiliser la substitution polyalphabétique ou même la simple xoration du message avec la clé, tant que vous respectez les trois critères ci-dessus.
Le one-time pad ne peut jamais être craqué. C’est un schéma de cryptage parfait, d’un point de vue mathématique, en tout cas.
Playfair
C’est un exemple de chiffrement par substitution polygraphique.Il remplace des paires de caractères. La clé est une permutation de {A..I,K..Z},par exemple:
Z C B M L G D A Q E T U O K H F S X V N P I Y R W
Pour chiffrer, écrivez le texte en clair (sans espaces ni ponctuation), en collant un X entre les lettres doubles et à la fin si nécessaire pour que le texte ait une longueur égale.Puis pour chaque paire de lettres :
- Détendez $(a,b)$ la ligne et la colonne du premier caractère et $(c,d)$ la ligne et la colonne du second.
- Si $a \neq c$ et $b \neq d$ alors retournez $(a,d)(b,c)$.
- Si $a = c$ alors return $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
- Si $b = d$ alors return $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
THEN ATTACK FROM THE EAST
⇒ TH EN AT XT AC KF RO MT HE XE AS TX
⇒ UT HW GO FO DB TV YK ZK NH NA DX OF
⇒ UTHWGOFODBTVYKZKNHNADXOF
Le décryptage applique les règles en sens inverse. Le chiffrement Playfair est assez peu sûr.
Quatre-carrés
Crypte les digraphes comme playfair, mais légèrement plus fort car il autorise les lettres doubles et ne donne pas de digraphes de chiffrement inversés pour les digraphes de texte brut inversés. Exemple
a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
THEN ATTACK FROM THE EAST
⇒ TH EN AT TA CK FR OM TH EE AS TX
⇒ NI VL EV FM MO BV DF NI MA VV NX
Okay, donc légèrement plus fort que Playfair mais alors quoi ? Les ordinateurs peuvent craquer ces choses en quelques secondes, ou peut-être en quelques minutes (avec suffisamment de texte chiffré).
Transposition de bloc simple
Le chiffre de transposition le plus simple décompose le message en blocs de taille n, puis brouille chaque bloc selon une permutation de $(1..n)$.
GETTHATHEALTHINSPECTOR
devient TGATEHATTEHLSHENIPRCOT
.Transposition en colonnes
Ecrire le message ligne par ligne dans une grille, puis le lire en colonnes. Totalement non sécurisé. La clé est juste le nombre de lignes. Devinez.
La clôture de rails
La clôture de rails n’est pas meilleure que la précédente, juste plus funky. La clé est le nombre de rails sur lesquels on écrit le texte en clair de haut en bas, en générant le texte chiffré en lisant un rail à la fois.
Exemple : Pour coder "fill out and file a WS2475 form"
sur 4 rails:
f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f
vous lisez ensuite le texte chiffré "ftl4miuaie27rlonfas5oldwf"
. Ce texte est trivial à craquer. Il suffit de deviner $k$.
Combinaison de la substitution et de la transposition
La transposition seule est très faible ; la substitution est faible ; les combiner est mieux. Vous pouvez mélanger beaucoup de ciphers de substitution classiques avec diverses transpositions, ou utiliser certains ciphers de combinaison spéciaux comme le bifid. De plus, la plupart des célèbres machines à rotor et des chiffrements modernes utilisent cette combinaison ; en fait, ils appliquent ces transformations de nombreuses fois.
Bifid
Celui-ci substitue des lettres avec leurs coordonnées dans une grille et fait une transposition colonnaire sur les coordonnées. Exemple:
Z C B M L G D A Q E T U O K H F S X V N P I Y R W
Ecrire les coordonnées (ligne, colonne) sous chaque lettre du texte en clair (par ex, « A » est à la ligne 1, colonne 2 ; « T » est à la ligne 2, colonne 0, etc.):
ATTACKATDAWN 122102121143 200213201244
Puis lisez en lignes, groupez par deux et cherchez les lettres du texte chiffré:
122102121143200213201244 A U B A D R T B Q T A W
Trifide
Comme Bifide, mais sur un cube. Exemple:
Z C B M L F V N P G D A Q E X I R W T U O K H S Y . J
Pour chiffrer, il faut d’abord écrire les coordonnées:
ATTACKATDAWN 000001000022 122102121110 200210201221
000001000022122102121110200210201221 Z C Z O S F H Q V I N .
Enigma
L’Enigma était la célèbre machine à rotor allemande de la Seconde Guerre mondiale (en fait, une famille de machines).La plupart des versions mettaient en œuvre un chiffre de substitution polyalphabétique avec une période de 16900 plus un plugboard pour le brouillage (transposition). La clé était constituée de l’ordre des rotors, de la position de départ de chaque rotateur, des réglages de l’anneau et des réglages du panneau d’affichage (environ 1,6 × 1020 possibilités). Il y avait une nouvelle clé chaque jour (plus ou moins) prépubliée dans des livres de codes.
Les alliés ont pu la craquer grâce à quelques faiblesses dans sa conception….
- Aucune lettre ne se chiffrait à elle-même
- L’auto-réciprocité signifiait qu’il y avait moins de possibilités de configuration des brouilleurs
…mais surtout, de nombreuses faiblesses dans la façon dont il était utilisé…
- Il était vraiment facile de trouver des berceaux. La plupart des messages commençaient par un bulletin météorologique.
- Au début, les clés de message apparaissaient deux fois de suite.
…et en obtenant des livres de codes de navires capturés.
Vous pouvez lire comment l’Enigma a été cassé sur le site de la NSA, et surWikipedia.
Méthodes cryptographiques modernes
Maintenant que nous avons la théorie de l’information de Shannon, des ordinateurs très puissants, et des siècles de théorie et de pratique derrière nous, la plupart des techniques modernes :
- opèrent sur des chaînes de bits, et non des chaînes de caractères
- sont attentives à masquer complètement les motifs et les redondances dans le texte en clair
- utilisent des clés aléatoires (qui peuvent aussi être réutilisées)
- veillent à ce que de très légères modifications du texte en clair affectent une grande partie du texte chiffré (et vice versa). C’est ce qu’on appelle l’effet d’avalanche.
En outre, c’est bien si le chiffrement est :
- efficace
- tolérant aux défauts
La plupart des chiffrages sont soit des chiffrages par blocs, soit des chiffrages par flux. Les chiffrements par blocs nécessitent un remplissage et peuvent fonctionner selon différents modes (Voir le livre de Schnier ou l’article de Wikipedia.)
- ECB – Electronic Codebook
- CBC – Cipher Block Chaining
- CFB – Cipher Feedback
- OFB – Output Feedback
- CTR – Compteur
- BC – Blockchain
- PCBC – Propagating Cipher Block Chaining
- CBCC – Cipher Block Chaining with Checksum
.
.
DES
At Wikipedia
IDEA
At Wikipedia
RC4
At Wikipedia
RC6
At Wikipedia
.
Blowfish
At Wikipedia
Twofish
At Wikipedia
AES
At Wikipedia
AES est la nouvelle norme, qui remplace le DES. Il est le vainqueur de lacompétition (en 2001), où il était présenté sous le nom de Rijndael, battantRC6, Serpent, MARS et Twofish.
Échange de clés
Diffie et Hellman (les lauréats du prix Turing 2015) et leur amiMerkle ont montré en 1976 qu’il était possible pour deux personnes d’échanger une clé secrète sans avoir à se rencontrer réellement en secret :
- Alice choisit un nombre premier $n$ et l’envoie en clair à Bob
- Alice choisit un nombre premier mod $n$ (comment le trouver), appelé $g$, et l’envoie en clair à Bob
- Alice choisit un nombre entier secret $a$, et envoie $g^a \bmod n$ en clair à Bob
- Bob choisit un entier secret $b$, et envoie $g^b \bmod n$ en clair à Alice
- Alice calcule ($g^b \bmod n)^a \bmod n$ et Bob calcule ($g^a \bmod n)^b \bmod n$. C’est la clé !(C’est $g^{ab} \bmod n$)
C’est probablement sûr, à condition que $n$ soit très grand et que $\frac{n-1}{2}$ soit aussi premier, car bien que Eve connaisse $g$, $n$, $g^a \bmod n$, et $g^b \bmod n$, il n’y a pas de moyen efficace connu pour obtenir $a$ ou $b$ à partir de ceux-ci.C’est le problème du logarithme discret, vous vous souvenez ?
Exemple avec de petits $n$:
- Alice choisit $n=208799$ et $g=13$ et les envoie à Bob
- Alice choisit $a=152335$ et Bob choisit $b=98113$
- Alice envoie à Bob $13^{152335} \bmod 208799 = 73033$
- Bob envoie à Alice $13^{98133} \bmod 208799 = 147540$
- Alice calcule $147540^{152335} \bmod 208799 = 8435$
- Bob calcule $73033^{98133}
- Bob calcule $73033^{98133} \bmod 208799 = 8435$
- La clé secrète est $8435$.
Ne faites pas réellement cela avec de petites valeurs de $n$.
En général, à moins d’obtenir une sorte de certification, n’essayez pas de sécuriser des systèmes du monde réel par vous-même. Mais bien sûr, dogo ahead et apprenez lesalgorithmes et pratiquez le codage pour le moment.
Cryptographie à clé publique
Les chiffrements à clé publique résolvent le cauchemar de la gestion des clés des chiffrements à clé secrète, au prix de la vitesse. Dans un groupe de $n$ personnes on n’a besoin que de $n$clés publiques et de $n$clés privées.
Cryptosystème RSA
Diffie-Hellman ne fait pas de chiffrement, il échange juste une clé.RSA peut chiffrer et déchiffrer. Voici comment . Chaque personne
- Génère deux grands nombres premiers, $p$ et $q$.
- Choisit une valeur $e$ relativement première à $(p-1)(q-1)$.
- Publie sa clé publique $(N,e)$ où $N = pq$.
- Compte $d$ = inverse modulaire de $e$ relativement à $(p-1)(q-1)$, en le gardant secret.
- Détruit $p$ et $q$.
Vérifiez maintenant ceci:
- Pour qu’Alice envoie un message $m$ à Bob, elle envoie $c = m^e \bmod N$.
- Bob décode ceci facilement parce que $m = c^d \bmod N$.
Un exemple trivial:
AVERTISSEMENT!
Cet exemple n’est qu’une illustration. N’implémentez jamais votre propre algorithme de cryptage. Assurez-vous également de comprendre à quel point la cryptographie à clé publique est horrible avec des clés aussi minuscules. Les vraies clés devraient avoir des milliers de bits.
Utilisons une clé de 16 bits (NE LE FAITES PAS IRL). Générer deux nombres premiers aléatoires de 8 bits:
$p = 163\q = 173$
Générer un nombre premier de 16 bits pour l’exposant du code:
$e = 64013$
Maintenant :
$n = pq = 28199 \d = \mathsf{modInverse}(e, (p-1)(q-1)) = 6797$
Codons la chaîne ¿Dónde está ud.?
. La voici en UTF-8:
c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f
En décimal:
194 191 68 195 179 110 100 101 32 101 115 116 195 161 32 117 100 46 63
Maintenant appliquons la fonction d’encodage à chacun::
$194^{64013}. \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$\vdots$
$63^{64013} \bmod 28199 = 18384$
Le texte chiffré est:
15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384
Pour décoder:
$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$\vdots$
$16824^{6797} \bmod 28199 = 63$
Nous récupérons le message original!
Au fait
Puisque le cryptage symétrique est tellement plus rapide, vous pouvez d’abord générer une clé secrète et la transmettre sur une ligne sécurisée par cryptographie à clé publique. Maintenant, toutes les communications futures peuvent utiliser la clé secrète.
Cryptographic Hashing
Un hash, alias empreinte digitale, somme de contrôle, condensé de message est un modèle binaire(généralement autour de 160 bits environ), généré à partir d’un message par une fonction cryptographiqueichash. Pour que le hachage soit sûr, ou cryptographique, il doit être infaisable sur le plan informatique de
- trouver un message qui hachure à une valeur donnée (onewayness)
- trouver deux messages qui hachent à la même valeur (collision-resistance)
Mathématiquement, une fonction de hachage cryptographique $H$ produit un hachage à partir d’un message, $H(m) = c$, tel que $m$ ne peut pas être déterminé efficacement à partir de $c$, et on ne peut pas trouver efficacement $m_1 \neq m_2$ tel que $H(m_1) = H(m_2)$,
En général, le changement d’un seul bit dans le message causera le condensé à regarder complètement et totalement différent.
$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will
Un hachage sécurisé fournit un moyen de déterminer si un message a été altéré.
Voir le Guide illustré des hachages cryptographiques de Steve Friedl.
Codes d’authentification de message
Ceux-ci sont similaires aux hachages cryptographiques sauf qu’ils utilisent une clé secrète, alors que les hachages utilisent simplement le message lui-même.
$MAC(m, k) = c$
Pour plus d’informations :
- MACs vs. Hashes à StackOverflow
- Signatures numériques à Wikpedia
- MACs à Wikipedia
Signatures numériques
Comment Bob peut-il être sûr que le message provient d’Alice et pas d’une autre personne ? En le faisant signer par Alice ; voilà comment. En pratique, on signe généralement un hash, pas le message entier.
RSA pour les signatures numériques
Pour qu’Alice envoie un message à Bob,
- Alice chiffre m avec sa clé privée
- Alice chiffre avec la clé publique de Bob
- Bob déchiffre avec sa clé privée
- Bob déchiffre avec. la clé publique d’Alice
$m = A(B'(B(A'(m)))$
DSA
Auprès Wikipedia
Cryptanalyse
C’est un vaste sujet qui ne sera pas couvert ici. A la place, voici une liste de techniques.
- Analyse de fréquence
- Ataque de texte en clair connue
- Ataque de texte chiffré connue
- Ataque de texte en clair choisie
- Ataque de clé choisie. clé
- Cryptanalyse linéaire
- Cryptanalyse différentielle
- Vol
- Corruption
- Charcutage
Exemples de programmation
Heh, nous n’allons pas montrer comment rouler votre propre crypto. Nous allons regarder quelques bibliothèques existantes réelles.
Transmettez-vous des données sur un réseau IP ?
Utilisez TLS.
Lisez la suite, cependant, si vous voulez utiliser quelques bibliothèques de crypto amusantes.
Exemples de JavaScript
Référence : Node crypto
.
Exemples Python
Référence:bibliothèques cryptographiques Python -Python hashlib
-Python secrets
Exemples Java
.