Archives de catégorie : Global

Regroupe tous les outils qui nous aident dans la cryptologie

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 ».

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).

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.