Cryptographie - Gabriel RISTERUCCI

Transcription

Cryptographie - Gabriel RISTERUCCI
Cryptographie
TD 1
Cryptographie symétrique
Questions générales :
1) Quelles sont les propriétés principales fournies par les systèmes
cryptographiques ? Que représentent-elles ?
Confidentialité : restreindre l'accès à une information aux seules personnes
autorisées à y accéder
Anonymat : masquer l'identité des auteurs, des destinataires, afin de rendre
impossible l'association d'une entité avec une information
Intégrité : assurer que les données présentes dans un système, après
transformation, sont conformes aux données en entrée.
2) Quels sont les éléments intervenants dans un système de chiffrement symétrique ?
Le message en clair, le chiffrement, le message chiffré, le déchiffrement, la clé
secrète. On peut également parler de la génération de la clé, de l'algorithme de
chiffrement, et de son mode d'utilisation. Enfin, il y a le décryptage, qui consiste à
retrouver le message en clair sans la connaissance de la clé secrète.
3) Qu'est-ce qu'un algorithme de chiffrement par blocs ?
Un algorithme de chiffrement opérant sur des blocs de tailles fixé à partir d'un
message et d'une clé
4) Quels sont les algorithmes principaux utilisé ?
DES (vu en cours), 2-DES, 3-DES, AES, Blowfish, Serpent, KASUMI
5) Qu'est-ce qu'un schéma de Feistel ?
Un schéma de Feistel est une structure utilisé notamment dans la construction des
algorithmes de chiffrement par bloc. Ils fonctionnent principalement avec une
fonction dite « de tour » qui est itérée un certain nombre de fois, avec relativement
peu de changement. Leur structure généralement symétrique permet un chiffrement
et un déchiffrement similaire.
6) Comment utilise-t-on généralement un algorithme de chiffrement symétrique ?
Pourquoi ?
Les algorithmes de chiffrement symétriques ne sont pas utilisés tel-quel. On les
utilise avec différents modes d'utilisations. Ces derniers permettent d'éviter les
problèmes qui apparaissent lorsque l'on chiffre un message long, dans les cas ou
celui ci présente des motifs particuliers (répétitions...)
7) Quels sont les modes d'utilisation courants ?
ECB (Electronic Codebook), CBC (Cipher-block chaining), CFB (Cipher feedback),
CTR (Counter mode), GCM (Galois-Counter mode)
Exemple de DES :
1) Que signifie DES ?
Data Encryption Standard
2) Qu'est ce qui compose l'algorithme DES ?
Un schéma de Feistel entre deux permutations fixes. L'algorithme de tour est
composé d'une fonction d'extension, intègre une clé de tour, utilise des S-box fixes
et une fonction de permutation de tour. Enfin, chaque tour voit l'inversion des deux
parties du message. Les clés de tour sont générées à partir de la clé de départ.
3) Pour quelles raisons DES a-t-il été remplacé ? Par quoi ?
Problème sur la taille de la clé, problèmes de performances, faiblesse de
l'algorithme. Principalement remplacé par AES
Problème pratique :
Prenons un exemple similaire au DES. Il est détaillé dans les annexes à la fin de cette
fiche.
Les principales différences avec le DES :
–
la taille des données en entrée, réduites à 32 bits
–
un seul tour
–
une seule S-Box utilisée 4 fois
Message initial (hexadécimal) : 81 42 3C F0
Clé (hexadécimal) : F2 80 4C 0F 88
1) Calculer le résultat de la permutation initiale
Binaire : 10000001 01000010 00111100 11110000
Permutation : 10010101 00010001 00010110 01010010
2) Vérifier que la permutation finale est bien l'inverse de la permutation initiale
3) Calculer le résultat du tour, en détaillant le résultat de la fonction d'extension utilisé
pour l'entrée des S-Boxes ainsi que la clé de tour.
4) Effectuer la permutation finale
Partie droite : 0001 0110 0101 0010
Extension : 00001010 11000010 10100100 (0A C2 A4)
Clé de départ : 11110010100000000100 11000000111110001000
Décalage clé : 11100101000000001001 10000001111100010001
Clé de tour : 00000000 10011000 00011111 (00 98 1F)
XOR extension (+) clé : 00001010 01011010 10111011 (0A 5A BB)
Entrée de S-Box : 0 0001 0 1 0010 1 1 0101 0 1 1101 1
Sortie de S-Box : 01001000 01100000
Permutation directe : 10000000 10110001
Partie gauche : 10010101 00010001
XOR partie gauche (+) partie droite : 00010101 10100000
Sortie tour : 10000000 10110001 00010101 10100000
Permutation finale : 00100000 01001011 00001010 10101000
Résultat : 20 4B 0A A8
Annexe 1 : Tables de permutations
Permutation initiale
Permutation finale
25 18 24 08 04 20 06 22 23 30 11 05 17 07 14 04
16 30 03 10 12 07 09 27 15 12 21 13 25 19 22 09
05 31 14 21 11 15 01 23 32 02 31 06 20 08 24 03
13 28 29 26 32 02 19 17 01 28 16 26 27 10 18 29
Annexe 2 : Génération des clés de tour
Clé (40 bits)
P1 (20b)P2 (20b)
<<
<<
P1 (20b)P2 (20b)
12b 12b
Clé de tour
Annexe 3 : S-Box
S-box
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
0 14 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07
1 00 15 07 04 14 02 13 10 03 06 12 11 09 05 03 08
2 04 01 14 08 13 06 02 11 15 12 09 07 03 10 05 00
3 15 12 08 02 04 09 01 07 05 11 03 14 10 00 06 13
Annexe 4 : Permutation directe (de tour)
Permutation
de tour
11 12 09 07
14 06 16 15
10 03 02 05
04 08 01 10