Pour faire progresser notre TPE, nous avons tiré profit de différentes sources que nous allons vous présenter ci-dessous.
Archives de catégorie : Global
Conclusion
Nous avons pu voir qu’une compétition s’est déroulée au fil du temps entre cryptographes et cryptanalystes. À chaque moment de l’histoire, un des deux camps était convaincu d’avoir trouvé la méthode ultime.
Cependant, le secret ou la découverte du secret ayant des enjeux trop importants, de nouvelles méthodes se sont profilées, pour nous mener à nos jours, où la cryptographie mène la danse. Nous pouvons donc considérer que le secret est relatif à un moment, ce qui nous a été confirmé par notre interview de M. Didier Müller, fondateur du site http://apprendre-en-ligne.net/ et écrivain du livre Les codes secrets décryptés : « La recherche de nouveaux procédés est indispensable ».
Interviews
Durant notre TPE, nous avons pu joindre plusieurs professionnels de la cryptologie.
Nous présenterons ici nos interviews avec les professionnels que nous remercions chaleureusement d’avoir pris de leur temps pour répondre à nos questions.
Le chiffrement asymétrique
De nos jours, nous avons besoin de communiquer sans rapport au préalable. Une clé commune à l’émetteur et au récepteur n’est donc plus envisageable car nécessitant un moyen auxiliaire pour communiquer. Cette faiblesse est connue comme le problème de la distribution des clés. C’est selon cette optique que s’est développée la cryptographie asymétrique qui repose sur l’utilisation d’une clé privée (gardée par le récepteur pour décrypter) et d’une clé publique (envoyée publiquement à l’émetteur pour qu’il puisse chiffrer son message). L’ingéniosité du système vient du fait que la clé publique ne peut pas permettre de décrypter les messages chiffrés avec celle-ci.
Le recours à des méthodes mathématiques de plus en plus complexes (comme les propriétés des nombres premiers, le théorème de Fermat, l’algorithme d’Euclide avancé, la fonction d’Euler) a poussé à la conception de calculateurs de plus en plus performants.
Néanmoins, ces techniques, souvent trop coûteuses d’un point de vue calculatoire, sont utilisées seulement pour le chiffrage de la clé privée d’un algorithme à clé privée comme l’AES.
Fonction XOR (ou fonction « OU exclusif »)
La fonction XOR est un opérateur logique noté ⊕ qui associe 2 booléens (variable à deux états, « vrai » ou « faux »; 1 ou 0) à la valeur « vrai » (1) seulement si les deux booléens sont différents. Nous pouvons définir cette fonction à l’aide de sa table de vérité :
Table de vérité de XOR | ||
A | B | A ⊕ B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Nous pouvons effectuer la fonction XOR sur de l’hexadécimal, pour cela il nous suffit de convertir le nombre hexadécimal en nombre binaire puis d’effectuer le XOR sur chacun des bits obtenus et de reconvertir en hexadécimal.
0xA0 ⊕ 0xB0 = 0b10100000 ⊕ 0b10110000
= 0b00010000 = 0x10
Nous pouvons également utiliser une table et comparer caractère hexadécimal par caractère hexadécimal :
⊕ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
1 | 1 | 0 | 3 | 2 | 5 | 4 | 7 | 6 | 9 | 8 | B | A | D | C | F | E |
2 | 2 | 3 | 0 | 1 | 6 | 7 | 4 | 5 | A | B | 8 | 9 | E | F | C | D |
3 | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 | B | A | 9 | 8 | F | E | D | C |
4 | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 | C | D | E | F | 8 | 9 | A | B |
5 | 5 | 4 | 7 | 6 | 1 | 0 | 3 | 2 | D | C | F | E | 9 | 8 | B | A |
6 | 6 | 7 | 4 | 5 | 2 | 3 | 0 | 1 | E | F | C | D | A | B | 8 | 9 |
7 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | F | E | D | C | B | A | 9 | 8 |
8 | 8 | 9 | A | B | C | D | E | F | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
9 | 9 | 8 | B | A | D | C | F | E | 1 | 0 | 3 | 2 | 5 | 4 | 7 | 6 |
A | A | B | 8 | 9 | E | F | C | D | 2 | 3 | 0 | 1 | 6 | 7 | 4 | 5 |
B | B | A | 9 | 8 | F | E | D | C | 3 | 2 | 1 | 0 | 7 | 6 | 5 | 4 |
C | C | D | E | F | 8 | 9 | A | B | 4 | 5 | 6 | 7 | 0 | 1 | 2 | 3 |
D | D | C | F | E | 9 | 8 | B | A | 5 | 4 | 7 | 6 | 1 | 0 | 3 | 2 |
E | E | F | C | D | A | B | 8 | 9 | 6 | 7 | 4 | 5 | 2 | 3 | 0 | 1 |
F | F | E | D | C | B | A | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Nous savons que, pour A et B correspondant à 2 nombres :
A ⊕ A = 0
A ⊕ 0 = A | Unifère
A ⊕ B = B ⊕ A | Commutatif
A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C | Associativité
(A ⊕ B) ⊕ B = A ; car (A ⊕ B) ⊕ B = A ⊕ B ⊕ B = A ⊕ 0 = A
Cette dernière propriété nous sera très utile en cryptographie car elle permet en connaissant un des 2 nombres du XOR (par exemple la clé) de retrouver le message de départ. En effet on transmettra le message chiffré (m ⊕ c) et le récepteur retrouvera m en faisant (m ⊕ c) ⊕ c.
Cependant cette propriété oblige le cryptographe à changer souvent de clé car si un cryptanalyste parvient à connaître un message chiffré et son équivalent non-chiffré, il pourra retrouver la clé.
Système Hexadécimal
Le système hexadécimal est un système de numérotation avec 16 chiffres uniques (les humains comptent la plupart du temps en système décimal, en base 10). Ces seize chiffres correspondent à 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Base décimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Base hexadécimale | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Base binaire | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
- Exemple : 16 s’écrit 10, 31 s’écrit 1F, 47 s’écrit 2F
L’hexadécimal est très utilisé en informatique car facilement convertible en système binaire. De plus, un octet (28 = 256) correspond à 24 × 24 = 16 × 16. Ainsi, pour convertir un octet en hexadécimal, on le partage en 2 groupes de 4 bits qui correspondent chacun à un chiffre hexadécimal. Cette propriété nous sera utile pour les chiffrements par blocs et notamment pour l’AES.
Code ASCII
Le code ASCII (initiales de « American Standard Code for Information Interchange ») est un système de caractère (ex: UTF, Latin-1…) basé sur un système binaire.
Ces caractères, appelés alphanumériques, sont l’ensemble de signes basiques employés dans la communication conventionnelle. Chaque caractère est représenté par un octet, c’est-à-dire 8 bits (la mémoire se mesure la plupart du temps en octets).
Le code ASCII compte 128 caractères dont 95 affichables (les autres caractères sont utilisés uniquement par le système).
Système binaire
La base binaire est formée de deux caractères : 0 et 1. Chacun des 0 et des 1 se nomme « bit » (« binary digit » en anglais, « chiffre binaire » en français).
Chiffrement par substitutions polyalphabétiques
Ce type de substitution utilise plusieurs alphabets, ce qui signifie qu’une même lettre peut être remplacée par différentes lettres.
Différents chiffrements polyalphabétiques existent :
– Le carré de Vigenère
– La machine Enigma
Le chiffrement symétrique
La cryptographie symétrique, aussi appelée cryptographie à clé secrète, est la plus ancienne forme de chiffrement.
Cette cryptographie repose sur l’utilisation d’une clé que seul l’émetteur et le récepteur connaissent. Le terme symétrique vient du fait que la clé sert à chiffrer et à déchiffrer le message.