May 20, 2024

Wiki

Python

Aide

edit SideBar

Search

Un algorithme de chiffrement symétrique pour l'IdO


Le masque jetable

Présentation de la méthode

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.

Discussion

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:

  1. le masque est réellement aléatoire (i.e., générateur cryptographiquement sûr),
  2. il a la taille du message (on n'a pas copié-collé bout-à-bout un petit masque aléatoire, jusqu'à atteindre la taille du message),
  3. il n'est utilisé qu'une fois (côté jetable du masque).

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

Travaux pratiques

Implémenter le masque jetable sur la pyboard.

Page Actions

Recent Changes

Group & Page

Back Links