DES, le système cryptographique le plus utilisé au monde, a été forcé il y a quelques mois. Il reste néanmoins utilisé pour chiffrer certaines grosses transactions bancaires et les codes personnels de cartes de crédit. Il est de plus utilisé par plusieurs ministères américains comme le ministère de l'énergie, le ministère de la justice ou le ministère des finances.
L'algorithme se déroule en trois étapes.
1. Dans un premier temps on effectue une permutation IP sur chaque bloc de 64 bits (cf
matrice IP en annexe). Nous sommes donc en présence de deux blocs de 32 bits, le premier
sera appelé L0 et le second R0.
2. La seconde étape consiste à faire 16 rondes en applicant la fonction récursive Ri=Li-1
XOR f(Ri-1,Ki), où Ki sont des clés derivées de la clé K, et où
f est une fonction que nous allons étudier plus en détail. (voir schéma ci-dessous)
Nous connaissons donc les Li-1 et Ri-1 défini à l'étape i-1, et donnerons
en annexe les 16 matrices permettant de calculer les 16 clés diversifiés Ki à
partir de K.
3. La dernière étape consiste à appliquer la fonction inverse de IP à R16L16
.
(Note : Les indices sont représentés en italique et les matrices de permutation
seront données en annexe)
- Etude de f :
1. Le premier blocs Ri-1 est augmenté de 32 bits à 48 bits, à l'aide d'une
permutation où certains bits seront dupliqués : E(Ri-1)
2. On effectue l'opération 'E(Ri-1) XOR Ki', puis on découpe le résultat
obtenu (donc notre chaîne de 48 bits) en 8 sous-chaînes de 6 bits. Ki est une des
16 clés diversifiées obtenue à partir de K et des 16 tables associées.
Pour résumer Bi=E(Ri-1) XOR Ki avec B=B1B2B3...Bj...B8
quelque soit i.
3. On affecte un nombre compris en 1 et 8 à chaque Bj; ceci se fera à l'aide de
tableaux Sj associés à chaque Bj.
Soit Bj=c1c2c3c4c5c6 (où c1
représente le premier bit de Bj, c2 le deuxième, etc...), le nombres
constitué des bits c1c6 consituera la ligne où se trouvera le nombre
associé dans le tableau Sj, et le nombre c2c3c4c5 la
colonne du tableau Sj. Sj sera donc un tableau de 4 lignes et 16 colonnes.
4. La chaîne ainsi obtenue est réordonnée suivant une dernière permutation fixée P.
Le decryptage s'effectue avec le meme algo, en reprenant les clés Ki, i variant de 16 à
1. C'est tout.
Les tables IP, inv. de IP, E, S1 à S8, et P sont disponibles en annexe.