Le ROT13 (rotate by 13 places) est un cas particulier du chiffrement de César[1], un algorithme simpliste de chiffrement de texte. Comme son nom l’indique, il s’agit d’un décalage de 13 caractères de chaque lettre du texte à chiffrer. Son principal aspect pratique est que le codage et le décodage se font exactement de la même manière.
Un défaut de ce chiffrement est qu’il s’occupe des lettres, il ne s’occupe pas des symboles et de la ponctuation. C’est pourquoi on doit supprimer toute accentuation du texte à chiffrer (ce défaut est moins gênant pour l'anglais que pour le français ou l'allemand). Il ne s'occupe pas non plus des chiffres, ce qui était sans importance puisque les romains écrivaient leurs chiffres avec des lettres (I, V, X, L, M, etc.). Pour l'utiliser aujourd'hui, il suffit de convertir d'abord les chiffres en utilisant la notation romaine, ou en lettres (UN pour 1, DEUX pour 2…)[2].
En pratique, lors du traitement d'un texte, les implémentations de ROT13 ne remplacent que les lettres non accentuées, et laissent inchangés les autres caractères, tels que les lettres accentuées, les chiffres et la ponctuation.
Un caractère étant invariablement remplacé par un autre, cet algorithme est aussi qualifié de substitution monoalphabétique.
À l’aide de la définition de cet algorithme (décalage de 13 caractères de chaque lettre), on peut alors définir la correspondance entre les caractères en clair et chiffrés :
Caractère non-chiffré (ou chiffré) | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Caractère chiffré (ou non chiffré) | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C | D | E | F | G | H | I | J | K | L | M |
L’avantage de ROT13, c’est le fait que le décalage soit de 13. L’alphabet comporte 26 lettres, et si on applique deux fois de suite le chiffrement, on obtient comme résultat le texte en clair. Pour cela on doit considérer l’alphabet comme circulaire, c’est-à-dire qu’après la lettre Z on a la lettre A, ce qui permet de grandement simplifier son usage et sa programmation puisque c’est la même procédure qui est utilisée pour le chiffrement et le déchiffrement.
ROT13 va à l’encontre du principe de Kerckhoffs car si l’adversaire apprend ou devine que le message a été chiffré en ROT13, il sera capable de le déchiffrer sans problème.
Bien qu'il ne soit pas évident de lire un texte une fois qu’il est chiffré avec ROT13, ce chiffrement est inapproprié pour conserver des secrets en sécurité. Il est plutôt utilisé dans les pages web[3] pour ne pas dévoiler à tous des solutions de jeux, des fins de films ou pour ne pas divulgâcher l’intrigue d’une série…
$ echo "Chiffre moi" | tr 'A-Za-z' 'N-ZA-Mn-za-m' Puvsser zbv
ROT47 est une variante de ROT13 qui permet de chiffrer les lettres, les chiffres, et les autres caractères spéciaux[2]. ROT47 se base sur le code ASCII, qui assigne à chaque symbole un nombre. Il utilise les nombres dans l’intervalle 33 à 126, correspondant respectivement au point d’exclamation (« ! ») et au symbole tilde (« ~ »). Ensuite, selon le même principe que le ROT13, il effectue une rotation de 47 lettres. Le fait d’utiliser un panel de symboles plus important que le ROT13 permet un brouillage plus efficace, même si le code reste trivial à déchiffrer.
Outre quelques traducteurs en ligne, il existe aussi des extensions à des outils de messagerie ou à des navigateurs internet. On peut également citer :
tr a-zA-Z n-za-mN-ZA-M
L'éditeur de texte Vim supporte également nativement ce chiffrement: voir commande g?
.