OTPCrypto v1.02 du 08/07/2024
C’est la dernière version de OTPCrypto.
La théorie de Shannon montre l’existence d’un chiffre sûr : le chiffre de Vernam (one-time-pad). Sa sécurité repose sur le caractère vraiment aléatoire d’une clef aussi longue que le clair.
En pratique cependant,
- on ne sait pas générer de suite vraiment aléatoire
- une telle clef pose un problème de protocole : comment la transmettre de manière sécurisée…
En cryptographie symétrique, on renonce à la sécurité recommandée par Shannon, au profit d’une approche pragmatique : avoir la plus grande sécurité possible pour une clef de taille fixée à par exemple 128 ou 256 bits.
Pourquoi 128 bits ? [tot11]
On suppose donc K=F2ℓK=F2ℓ fixé, avec par exemple ℓ=128ℓ=128, et on suppose qu’on sait choisir de manière aléatoire un élément k∈Kk∈K.
Pour cela, deux grandes techniques :
- le chiffrement par flot (stream cipher) : on construit une suite pseudo-aléatoire Lk:Z→F2Lk:Z→F2, et on utilise sa sortie pour pour faire un chiffre de Vernam (xor avec le clair).
- le chiffrement par bloc (block cipher) : on découpe le clair en blocs de ℓℓ bits et on applique à chacun un cryptosystème sur ℓℓ bits.
Deux remarques préliminaires :
Dans les deux cas, les méthodes adoptées combinent deux ingrédients
- un côté algébrique qui assure de la diffusion
- un côté non-linéaire qui assure la confusion.
Par ailleurs la tendance en cryptographie est de prendre pour chacun de ces ingrédients un système extrèmement simple, de sorte qu’on suit les recommandations de Shannon sans y ajouter quoi que ce soit.
Attention avec le mot aléatoire :
- pour faire un chiffrement par flot, on a besoin d’une séquence pseudo-aléatoire (qui ressemble à de l’aléa) mais parfaitement déterministe, puisque devant ne découler que de la clef.
- pour choisir une clef (ou les paramètres d’un cryptosystème), on a besoin d’une source d’aléa forte.
Les techniques actuelles pour obtenir de l’aléa fort consistent la plupart du temps à utiliser des chiffres par blocs nourris par des compteurs et des valeurs système (heure, température du processeur).