Un codage consiste à transformer une information (un texte, une image,...) en une autre, nous en avons déjà vu de nombreuses :
Codage binaire des caractères (ASCII-UFF8,UTF32...), des entiers signé ou non, des doubles...
Codage de Huffmann pour compresser un texte.
Fonction de hachage appliquée aux clef d'un dictionnaire.
Code détecteur d'erreurs ou correcteur d'erreurs.
On va s'intéresser maintenant à un aspect du codage lié à la protection des données pour :
Garder confidentiel une information.
S'assurer de l’intégrité d'un message.
Certifier l'auteur du message.
L'an dernier nous avons vu une technique pour cacher une image dans une autre, on a fait de la stéganographie, en cryptographie on ne cache pas mais on rend les choses inutilisables.
Un peu d'histoire
Le besoin de confidentialité des messages remonte à loin, voici quelques exemples historiques de chiffrement.
Chiffre de César.
Le chiffre de César est très simple, on choisit un décalage et on change toutes les lettres du message clair en les décalant dans l'alphabet.
Le code de Cesar est facilement cassable, en effet le nombre de clefs est égal aux nombre caracteres dans l'alphabet.
Substitution monoalphabetique
Dans un chiffre basé sur une substitution monoalphabetique on modifie chaque caractères par un autre comme dans le Cesar mais sans avoir d'ordre, on décide de changer le 'e' par un 'f' par exemple et le 'a' par un 'm'. La clef est plus compliquée à transmettre car à chaque lettre il faut donner sa lettre associée.
La technique est elle ausi facilement cassable par une etude statistique du nombre d'occurences d'un caractère dans le texte chiffré (le 'e' étant la lettre qui apparait le plus en français.
a
b
c
d
e
f
a
b
c
d
e
f
g
h
i
j
k
l
g
h
i
j
k
l
m
n
o
p
q
r
m
n
o
p
q
r
s
t
u
v
w
x
s
t
u
v
w
x
y
z
'_'
y
z
'_'
Cliquer pour afficher cacher la réponse.
Le chiffre de Vigenère
Pour le chiffre de Vigenère la clef est un mot, une phrase, un livre,... prenons comme clef le mot "bz" alors la première lettre du texte clair sera remplacée par le caractère correspondant à la modification par le chiffre de César transformant 'a' en 'b', la deuxième est remplacée par le caractère correspondant à la modification par le chiffre de César transformant 'a' en 'z' pour la troisième on recommence.
Cliquer pour afficher cacher la réponse.
La méthode s'adapte pour tous les fichiers, en effet ils sont codés par une succession de 0 et de 1, si on choisit une suite de 0 ou de 1 en clef alors on transforme le fichier d'origine en ajoutant modulo 2 le chiffre de la clef. Regardons pour un octet :
Clair
1
1
1
1
1
1
1
1
Clef
1
1
1
1
1
1
1
1
Clef
0
0
0
0
0
0
0
0
Le
programme à télécharger en Python permet de coder avec le chiffre de Vigenère n'importe quel fichier.
Masque jetable
Si on remplace la clef du chiffre de Vigenère par une suite aléatoire (de 0 ou de 1 si on prend le cas binaire) de taille égale au message à chiffrer alors on obtient la seule technique mathématiquement prouvée de chiffrement sûr.
Malheureusement il y a de nombreux problèmes :
Comment créer une clef au hasard ? Enigma et d'autres systèmes tentent de le faire mais sans y arriver.
La clef est unique, une fois utiliser il faut la jeter,on ne peut pas la réutiliser.
Comment transmettre les clefs ?
Vidéo
Une vidéo qui revient sur le codage par substitution monoalphabetique et sur les émliorations modernes de décryptage :