Supposons que l'on souhaite chiffrer un message que l'on a sous la forme d'une suite de bits:
0010010100011110011111110
et que l'on a de plus un générateur de nombres pseudo-aléatoires à disposition. Engendrons autant de bits aléatoires qu'il y en a dans le message à chiffrer :
1011000101110010001110100
On peut cacher notre message dans ce bruit par la technique dite du "masque jetable", pour lequel le cryptogramme est le OU exclusif bit à bit (ou, d'une manière équivalente, l'addition modulo 2) entre le message d'origine et cette suite aléatoire :
0010010100011110011111110 XOR 1011000101110010001110100 = 1001010001101100010001010
Notre cryptogramme est donc:
1001010001101100010001010
Alice envoie ce message à Bob qui, on le suppose, est capable de générer exactement le même bruit, à savoir:
1011000101110010001110100
Il effectue la même opération : OU exclusif bit à bit entre le cryptogramme et ce bruit :
1001010001101100010001010 XOR 1011000101110010001110100 = 0010010100011110011111110
On retombe, on le voit, sur le message d'origine. En fait, comme il s'agit de l'addition modulo 2, et que l'on a ajouté deux fois notre suite de bits de bruit, on a donc ajouté soit 0, soit 2, le tout modulo 2 : on retombe donc bien évidemment sur la suite de départ.
Il s'agit-là de chiffrement symétrique, vu que l'on utilise le même masquage chez Alice et Bob : une même clé est utilisée pour chiffrer et déchiffrer, i.e. pour masquer et démasquer le message.
Le second point à signaler dans cette méthode est son efficacité : si la génération de la clé secrète est rapide, alors le tout est très peu complexe, dans la mesure où le chiffrement/déchiffrement ne nécessite qu'une addition (modulo 2), donc linéaire. Bref, nous aurions là une bonne technique de chiffrement symétrique pour l'internet des objets, si elle était sûre.
Or, elle est prouvée telle par Shannon, si les points suivants sont respectés:
Ce masque jetable fait partie des méthodes dites de chiffrement symétrique par flot. D'autres techniques de chiffrement symétrique opèrent par bloc, tels que le triple DES ou l'AES, mais ils sont un peu plus complexes à mettre en oeuvre.
A ce stade, il nous reste donc à voir comment algorithmiquement créer des suites de nombre qui, d'une part, seraient produits efficacement et, d'autre part, auraient certaines propriétés cryptographiques de sécurité...
Implémenter le masque jetable sur la pyboard.