I. 3 Cryptages composés
Sommaire Composition de systèmes cryptographiques Cryptages par blocs et en chaîne Cryptage de Feistel Réalisation de cryptages
1. Composition de systèmes cryptographiques Idée (Shannon) : sur-crypter crypter un cryptogramme Systèmes endomorphiques C = P S1 = < P, K1 ; E1 , D1 > S2 = < P, K2 ; E2 , D2 > Composition de systèmes endomorphiques S = S1 x S2 = < P, K ; E, D > K = K1 x K2 K1 et K2 indépendants E = E2 o E1 z = E2 (E1 (x, k1 ), k2 ) x, z P D = D1 o D2 x = D1 (D2 (z, k’2 ), k’1 ) ki, k’i Ki
Propriétés Associativité (S1 x S2) x S3 = S1 x ( S2 x S3 ) toute composition endomorphique est associative Commutativité S1 x S2 = S2 x S1 toute composition endomorphique n’est pas commutative Idempotence S2 = S beaucoup de compositions endomorphiques sont idempotentes
Itérations Propriété Sn est une itération de S si S idempotent, Sn n’a aucun intérêt Exemples : substitutions, permutations si S n’est pas idempotent Sn offre plus de sécurité que S Exemple : DES Propriété S1 et S2 idempotents et commutent S1 x S2 idempotent Preuve (S1 x S2 ) x (S1 x S2 ) = S1 x ( S2 x S1 ) x S2 = S1 x ( S1 x S2 ) x S2 = (S1 x S1 ) x (S2 x S2 ) = S1 x S2
2. Cryptages par blocs et en chaîne 2.2 Cryptages en chaîne
2.1 Cryptage par blocs u = x1 x2 … P* v = y1 y2… C* k u = x1 x2 … P* v = y1 y2… C* yi = E (xi, k ) les mots successifs d’un même texte sont cryptés de la même façon cryptanalyse facilitée
2.2 Cryptage en chaîne y E x z f k zi = fi (k, x1, x2, …xi-1 ) yi = E (xi, zi) on construit une suite de clefs de cryptage zi à partie de la clef initiale k et de la suite des messages en clair précédemment cryptés
Système cryptographique en chaîne < P, C, K, L ; F, E, D > P, C, K : définitions habituelles L : alphabet de séquence de clefs F = (f1, f2, …) générateur de séquence fi : K x Pi-1 L E : P x L C D : C x L P
Exemple P = C = K = L = Z26 z1 = k zi = fi (xi-1) i > 1 x P y C p,q K E (xi, zi ) = xi + zi mod 26 D (yi, zi) = yi + zi mod 26
3. Cryptage de Feistel Principe P = C = {0, 1 }n K = {0, 1 }m E : P x C x K P x C E (x, y, k) = (y, f (y, k) x ) f est une fonction de composition de substitutions et permutations E utilise un y C et fournit un x P Le cryptage de Feistel est donc défini de façon itérative Horst Feistel (1915-1990)
Réalisation x P texte en clair de départ x = (L, R ) texte x scindé en 2 k = (k1, k2,…kr) calcul de clefs de ronde L0 = L R0 = R cryptogramme initial pour i = 1, 2,…r : rondes d’itération (Li, Ri) = (Ri-1, f (Ri-1, ki ) Li-1 ) yi = (Li, Ri ) cryptogramme i yL = Rr cryptogramme final yR = Lr
Construction d’une ronde Li-1 Ri-1 ki f + Li Ri (Li, Ri) = (Ri-1, f (Ri-1, ki ) Li-1 )
Décryptage (Ri-1, Li-1) = (Li, f (Li, ki ) Ri ) Ri Li ki f + Ri-1 même circuit mais permutation de R & L
Principe de la fonction f u r P d é c o e u r permutations substitutions
Construction d’un étage Ri-1 f E expansion ki S1 S2 S3 S8 P f(Ri-1, ki)
Modes d’utilisation ECB Electronic Codebook Mode cryptage par blocs CBC Block Chaining Mode cryptage en chaîne CFB Cipher Feedback Mode clef modifiée par le cryptogramme OFB Output Feedback Mode clef modifiée par la sortie
CBC Encryptage x1 xi Ek Ek IV = y0 y1 yi yi = Ek (xi yi-1)
CBC Décryptage yi = Ek (xi yi-1) Dk (yi ) = xi yi-1 IV = y0 y1 yi yi = Ek (xi yi-1) Dk (yi ) = xi yi-1 xi = Dk (yi ) yi-1
CFB Encryptage x1 xi Ek Ek IV = y0 y1 yi yi = xi Ek (yi-1)
CFB Décryptage yi = xi Ek (yi-1) xi = Ek (yi-1) yi Dk Dk IV = y0 y1 yi yi = xi Ek (yi-1) xi = Ek (yi-1) yi Dk = Ek xi = Dk (yi-1) yi
OFB Encryptage x1 xi Ek Ek IV = y0 y1 yi yi = Eki (y0) xi
OFB Décryptage yi = Eki (y0) xi Dk = Ek xi = Dki (y0) yi x1 xi IV = y0 y1 yi yi = Eki (y0) xi Dk = Ek xi = Dki (y0) yi
Cryptanalyse force brute cryptogrammes uniquement essais systématique de toutes les clefs cryptogrammes uniquement pas de solutions connues couples de messages en clair et cryptogrammes cryptanalyse différentielle Biham et Shamir (1991) cryptanalyse linéaire Matsui (1994) Eli Biham Adi Shamir
4. Réalisations de cryptages 4.1 DES 4.2 IDEA 4.3 AES
4.1 DES Data Encryption Standard développé par IBM en 1970 normalisé par le NBS en 1977 basé sur le cryptage de Feistel texte en clair et cryptogramme de 64 bits composé de 19 étages 17 itérations (rondes) 2 transpositions clefs de 56 bits expansion de la clef pour les « rondes »
Cryptage … … … … … … …………… … … … … … … … … 64 bits T transposition clef msb it1 … … it2 56 bits expansion …………… Itérations de Feistel … … lsb it16 … … Échange GD … … T-1 transposition inverse … … 64 bits
Décryptage … … … … … … …………… … … … … … … … … 64 bits T transposition clef it1 lsb … … it2 56 bits expansion …………… Itérations de Feistel … … msb it16 … … Échange GD … … T-1 transposition inverse … … 64 bits
Triple DES Faiblesse de la clef de 56 bits Compatibilité avec le DES clef k de 56 bits k k k
4.2 IDEA International Data Encryption Standard Issu de PES Xueja Lai & James Massey Proposed Encryption Standard 1990 Censé résister à la cryptanalyse différentielle (faiblesse du DES) Utilisé pour PGP Pretty Good Privacy openSSL Secure Socket Level
Principe Cryptage par blocs de 64 bits Clefs de 128 bits Cryptage itératif en 8 « rondes » Utilisation d’opérations simples à câbler addition modulo 2 addition modulo 16 produit modulo 216 + 1 +
Une « ronde » + + + + + + + + + + x1 x2 x3 x4 k1 k2 k3 k4 k5 k6 y1 y2 + + + + k5 + k6 + + + + + y1 y2 y3 y4
Cryptage ………………………… + + 4 x 16 bits it1 it2 it8 k1 k2 k3 k4 + + 4 x 16 bits
4.3 AES Advanced Encryption Standard Appel d’offres lancé par le NIST en 1997 National Institute of Standards and Technology pour remplacer le DES et résister aux cryptanalyse différentielle cryptanalyse linéaire Choix d’AES le 2 Octobre 2000 Auteurs Daemen & Rijndael
Principe Cryptage de blocs de 32 bits Opérations définies au niveau de l’octet octet : élément du corps de Galois F28 F28 : polynômes dans F2 modulo 1+x+x3+x4+x8 mot : polynôme à coefficients dans F28 mot de 32 bits : polynôme modulo x4+1 Produit défini modulo x4+1 par a(x) tel que p(x) = a(x) mod (x4+1) inversible