OTP

De Korben Wiki
Aller à : navigation, rechercher

L'OTP : le seul algorithme impossible à casser

Là vous devez vous dire que je me moque de vous. Je vous ai dit qu'il n'existait aucun algorithme ou programme impossible à cracker.

J'aurais dû préciser "algorithme ou programme à clé".

En effet, il suffit d'essayer toutes les clés différentes possible jusqu'à trouver la bonne.

Mais il existe une méthode qui n'utilise aucune clé.


L'OTP : One-Time Pad

Aussi appelé masque jetable, c'est une technique simplissime.

Imaginons que nous ayons un message de n octets. Pour l'encrypter:

  1. créer une suite S (même taille que n) d'octets aléatoires (S est appelé pad ou masque).
  2. appliquer ce masque octet par octet au message (généralement avec une opération logique XOR)

Ainsi, si vous ne connaissez pas le masque S, le message EDRJVQUIKEGDNCTUIO peut très bien se décrypter en:

  • Ma réponse est oui
  • Ma réponse est non
  • Le lavabo est bleu

Tout dépend de S !

Si vous n'avez pas S, vous pouvez toujours essayer de décrypter le message : il peut vouloir dire n'importe quoi !

Quelle que soit votre puissance de calcul, vous ne pourrez jamais décrypter le message.


Le piège

Vous allez me dire : facile !

Et bien non... c'est une technique très difficile à maîtriser. Pourquoi ?

  • Les octets du masque doivent être réellement aléatoires. Si vous les crééez à partir d'un programme, ils ne sont pas aléatoires ! Il devient possible de deviner la suite d'octets du masque.
  • Le masque ne doit jamais servir plus d'une seule fois, sinon il devient possible de décrypter les messages suivants. Il faut sans cesse créer un nouveau masque pour encrypter de nouvelles données.
  • Le masque doit être de la taille des données à encrypter. Pour 600 Mega-octets de données à encrypter, il faut un masque de 600 Mega-octets. Pas toujours pratique à manipuler.
  • Enfin, pour que votre correspondant puisse décrypter, vous devez aussi lui envoyer le masque ! Et vous devez le faire par un moyen parfaitement sûr. Pensez à des moyens tels que l'envoi par la Poste, les Deaddrops (Echanges de données urbains), ou mieux: la rencontre réelle en face à face avec un échange de clés USB.


Vous voyez, c'est une technique imparable, mais très délicate à utiliser.


Les nombres aléatoires

Il est impossible de créer des nombres aléatoires avec un programme, quel qu'il soit. Point à la ligne.

On peut au mieux créer des nombres pseudo-aléatoires.

La plupart des générateurs de nombres aléatoires sont assez mauvais :

  • on retrouve rapidement les mêmes suites de valeurs au bout d'un certain temps.
  • certaines valeurs sortent plus que d'autres.
  • avec certains générateurs, on peut trouver toute la suite de nombres simplement en connaissant deux valeurs successives !

L'OTP a donc besoin de nombres réellement aléatoires, tels que ceux créés avec des phénomènes physiques impossibles à prévoir :

  • écoulement de fluides (lava-lamps, particules dans un liquide en circulation, vent et tourbillons)
  • bruit blanc généré par un pont de diodes
  • émission de particules issues de la décomposition de matière radioactive
  • etc.

Bref, ce n'est pas à la portée de tout le monde. Il faut un bon dispositif physique, et non pas seulement logiciel.

Certains ont inventé des systèmes ingénieux avec une webcam qui filme des lava-lamps (ces lampes en forme de fusée avec des boules de parafine fondue qui montent et descendent à l'intérieur). Comme ces écoulements de fluide et la convection les rendent impossible à prévoir à long terme, ils font un bon générateur de nombres aléatoires.

Il suffit de filmer l'image et d'utiliser la valeur des pixels pour générer des nombres aléatoires.

Silicon Graphics (le fabricant d'ordinateurs) possède un site Web dédié à cela. Vous pourrez y voir comment ils ont conçu leur générateur de nombres aléatoires : http://www.lavarnd.org.

Si vous n'êtes pas bricoleur, il existe aussi des cartes d'extension qui permettent d'obtenir des nombres aléatoires facilement.

Si la génération de nombres aléatoires vous intéresse, vous pouvez lire la RFC 1750 (http://www.ietf.org/rfc/rfc1750.txt).


Source de l'article en mirroring modifié provenant de Seb Sauvage