Cryptographie
Cryptographie
Cryptographie
Texte chiffré ou
Texte en clair cryptogramme Texte en clair
(‘Cleartext’) (‘Ciphertext’) (‘Cleartext’)
Nicolas Pioch
17 mars 2009 Clé de chiffrement k1 Clé de déchiffrement k2
(‘Encryption Key’) (‘Decryption Key’)
Nicolas Pioch 1
Cryptographie symétrique 17 mars 2009
Nicolas Pioch 2
Cryptographie symétrique 17 mars 2009
• Sur chaque cycle : m = maj(x8, y10, z10) x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18
• Si x8 = m, alors X se décale :
– t = x13 x16 x17 x18
– Pour i = 17, 16, …. 0 : xi+1 = xi, puis x0 = t
17 16 y0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16 y17 y18 y19 y20 y21
• Si y10 = m, alors Y se décale :
– t = y20 y21
z0 z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 z15 z16 z17 z18 z19 z20 z21 z22
– Pour i = 20, 19, …. 0 : yi+1 = yi, puis y0 = t
• Si z10 = m, alors Z se décale :
– t = z7 z20 z21 z22
– Pour i = 21, 20, …. 0 : zi+1 = zi, puis z0 = t
Nicolas Pioch 3
Cryptographie symétrique 17 mars 2009
• Un algorithme à taille de clé variable inventé • Seul le nom ‘RC4’ est déposé – l’algorithme
en 1987 par Ron Rivest pour RSA Data est un secret industriel non breveté
Security Inc.
• Conçu
ç p pour une implémentation
p p
performante • Code source révélé anonymement en
en logiciel sur processeur 8 bits : les septembre 1994 sur la liste de diffusion
principales opérations sont des XOR et des Cypherpunk et reposté sur sci.crypt
permutations d’octets
• 10 fois plus rapide que DES : très populaire • Usage libre sous le nom ‘arcfour’ :
vers 1995 dans de nombreux logiciels et http://www.mozilla.org/projects/security/pki/n
protocoles tels que SSL, S/MIME, Acrobat… ss/draft-kaukonen-cipher-arcfour-03.txt
Nicolas Pioch 4
Cryptographie symétrique 17 mars 2009
Nicolas Pioch 5
Cryptographie symétrique 17 mars 2009
Chaque étage (ou ‘ronde’) est relativement • Si un étage n’utilise que des opérations de
faible cryptographiquement : substitution (‘S-box’) et de permutation
• C’est le chaînage répété qui confère la (‘P-box’), un tel chiffre itéré se nomme
robustesse au chiffre réseau de substitution-permutation
• Le nombre d’étages impacte la sécurité et la (‘SP-network’)
rapidité de chiffrement : il est compliqué de • On peut également mettre
concevoir un chiffre à la fois rapide et sûr en œuvre des opérations
• Lorsque les fonctions de ronde sont arithmétiques modulaires,
complexes, un faible nombre peut suffire (10 comme dans les chiffres
à 14 pour AES, 16 pour DES), sinon il faut de Horst Feistel
itérer un grand nombre de fois (64 pour TEA) (1915 – 1990)
• Le bloc en entrée est découpé en deux • Le bloc chiffré est (Ln, Rn)
moitiés (L0, R0) = M • On présente les sous-clés dans l’ordre
• F est la fonction inverse : {kn, …, k2, k1}
de ronde • On résout les équations précédentes :
• À chaque étape : Li Ri 1 Ri 1 Li
– Li = Ri-1 Ri Li 1 FRi 1 , ki Li 1 Ri FRi 1 , ki Ri FLi , ki
– Ri = Li-1 F(Ri-1, ki)
• C’est la même formule avec R et L inversés
• Le bloc chiffré est et des indices décroissants
C = (Ln, Rn)
• À noter : F n’a pas besoin d’être inversible
– mais le chiffre n’est pas sûr pour toute fonction F
Nicolas Pioch 6
Cryptographie symétrique 17 mars 2009
• Appel d’offre du National Bureau of • Clé de 56 bits, chiffre par bloc de 64 bits
Standards (NBS, maintenant NIST) en 1973 • Chiffre de Feistel :
• Développé par IBM en 1975 (‘Lucifer’) – 16 étages relativement simples
– Conception secrète – F(Ri-1
i 1, ki) = P
P-box(S-boxes(Expand(R i 1) ki))
box(S boxes(Expand(Ri-1
– Participation de la National Security Agency – Pour chaque étage, une sous-clé de 48 bits est
• Adopté comme standard du gouvernement dérivée de la clé maîtresse
américain (FIPS 46) en 1976 • La sécurité dépend principalement des
• Taille de clé désormais inadéquate : ne doit boîtes ‘S’, qui font correspondre 6 bits
plus être utilisé d’entrée à 4 bits en sortie.
http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf
• Remplacé par AES (FIPS 197) en 2001
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
• Sortie 48 bits :
31 0 1 2 3 4 3 4 5 6 7 8
7 8 9 10 11 12 11 12 13 14 15 16
15 16 17 18 19 20 19 20 21 22 23 24
23 24 25 26 27 28 27 28 29 30 31 0
Nicolas Pioch 7
Cryptographie symétrique 17 mars 2009
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 LK : RK :
49 42 35 28 21 14 7 55 48 41 34 27 20 13
• Sortie 32 bits : 0 50 43 36 29 22 15 6 54 47 40 33 26 19
8 1 51 44 37 30 23 12 5 53 46 39 32 25
15 6 19 20 28 11 27 16 0 14 22 25 4 17 30 9
16 9 2 52 45 38 31 18 11 4 24 17 10 3
1 7 23 13 31 26 2 8 18 12 29 5 21 10 3 24
15 20 10 27 5 24 17 13 21 7 0 3
Nicolas Pioch 8
Cryptographie symétrique 17 mars 2009
• Keith W. Campbell et Michael J. Wiener ont La sécurité réelle n’est pas de 2112 bits mais
démontré que DES n’était pas un groupe plutôt 257 car vulnérable (en théorie) à une
(Conférence CRYPTO 1992, p512-520) attaque à texte clair connu :
• Plus pprécisément,, l’ensemble kK Ek • Pré-calculer et stocker les 256 valeurs
n’est pas stable pour la loi de possibles de E(M, k1) pour toute clé k1
composition des applications • Pour chaque clé k2, calculer D(C, k2) jusqu’à
• Si c’était le cas : trouver une valeur dans la table
(k1 , k 2 ) K 2 , k3 K , Ek3 Ek2 Ek1 • On a alors E(M, k1) = D(C, k2) et trouvé les
clés k1 et k2 puisque C = E(E(M, k1), k2)
(k1 , k 2 ) K 2 , k3 K , m M , E (m, k3 ) E ( E (m, k1 ), k 2 )
• C’est une attaque ‘meet in the middle’.
• C = E(D(E(M, k1), k2), k1) • Appel d’offres du NIST en janvier 1997 pour
• M = D(E(D(C, k1), k2), k1) trouver un remplaçant à DES
Pourquoi utiliser E-D-E avec 2 clés ? – Une quinzaines de chiffres étudiés
– Participation
p p
publique
q de la NSA,, q
qui a déclaré
• Compatibilité avec DES si les deux clés sont que tous les algorithmes finalistes étaient
identiques : suffisamment sûrs pour chiffrer les informations
E(D(E(M, k), k), k) = E(M, k) non classifiées du gouvernement américain
• et 112 bits suffisent. • Rijndael sélectionné en nov. 2001 et publié
• Cela a permis de prolonger la durée utile de comme standard AES (FIPS 197)
DES jusqu’à la normalisation d’AES en 2001 – Inventé par deux cryptographes belges, Vincent
Toutefois : 3 fois plus lent que DES en logiciel ! Rijmen et Joan Daemen. Libre de droits.
Nicolas Pioch 9
Cryptographie symétrique 17 mars 2009
• Algorithme le plus intensément analysé “The design and strength of all key lengths of the
• Adi Shamir a déclaré à la conférence RSA AES algorithm (i.e., 128, 192 and 256) are sufficient
to protect classified information up to the SECRET
2002 que les données chiffrées avec AES et level. TOP SECRET information will require use of
une clé de 256-bits seraient « secure either the 192 or 256 key lengths.
lengths The
forever » quelles que soient les avancées en implementation of AES in products intended to
informatique. protect national security systems and/or information
• En 2003, AES est devenu le premier must be reviewed and certified by NSA prior to their
acquisition and use.”
algorithme de chiffrement ouvert approuvé -- National Policy on the Use of the Advanced
par la NSA pour le chiffrement d’informations Encryption Standard (AES) to Protect National
du gouvernement américain classées Security Systems and National Security Information
TOP SECRET http://www.cnss.gov/Assets/pdf/cnssp_15_fs.pdf
Nicolas Pioch 10
Cryptographie symétrique 17 mars 2009
ShiftRows Mix
Columns
• Décalage cyclique vers la gauche dépendant
du numéro de ligne :
Pour déchiffrer…
Nicolas Pioch 11
Cryptographie symétrique 17 mars 2009
IDEA
Nicolas Pioch 12
Cryptographie symétrique 17 mars 2009
• Publié en 1994 par David Wheeler et Roger • Usage libre (non breveté)
Needham (Cambridge Computer Lab) • Blocs de 64 bits, clé de 128 bits
• Remarquable par sa simplicité – tient en • Arithmétique sur 32-bits
quelques
q q lignes
g de code ! • Presque un réseau de Feistel : est
• Implémentation logicielle simple et rapide, remplacé par l’addition modulo 232
consomme très peu de mémoire (Xbox) • Nombre d’étages variable : 64 recommandés
• Susceptible à une attaque par clés (32 ‘cycles’), car la fonction de ronde est
équivalentes, l’algorithme a été complexifié relativement simple
en eXtended TEA (XTEA) en 1997, puis • La constante est delta = 0x9e3779b9 = 232/,
Corrected block TEA (XXTEA) en 1998 étant le nombre d’or
Nicolas Pioch 13
Cryptographie symétrique 17 mars 2009
Il existe de nombreux modes opératoires pour • Chaque clé k construit un livre de codage
les algorithmes de chiffrement par bloc. électronique
Les 3 les plus simples sont : • Chaque bloc est chiffré avec ce même livre
• Electronic Code Book (ECB) ( ) de codage
g :p pour un message
g m0, m1, …,, mn
– Chiffre chaque bloc indépendamment
Chiffrement Déchiffrement
– Ne pas utiliser !
• Cipher Block Chaining (CBC) c0 = E(m0, k) m0 = D(c0, k)
– Une méthode pour chaîner les blocs entre eux c1 = E(m1, k) m1 = D(c1, k)
• Counter Mode (CTR) … …
– Semblable à un chiffre en continu cn = E(mn, k) mn = D(cn, k)
Nicolas Pioch 14
Cryptographie symétrique 17 mars 2009
Un attaquant actif peut rejouer (réinjecter) des • On chaîne les blocs les uns aux autres
blocs chiffrés avec la même clé ci, ou modifier • Un vecteur d’initialisation (IV) aléatoire est
l’ordre des blocs chiffrés : attaque du ‘copier- nécessaire pour initier le processus. Il peut
coller’ : c0 c1 c2 c3 → c0 c3 c2 c3. Exemples : être transmis en clair.
• Modifier le montant d’un virement bancaire
en le remplaçant par un bloc chiffré extrait Chiffrement Déchiffrement
d’un autre endroit du message (RIB) c0 = E(IVm0, k) m0 = IVD(c0, k)
• Dans le jeu en ligne Phantasy Star Online: c1 = E(c0m1, k) m1 = c0D(c1, k)
Blue Burst, qui utilisait Blowfish en mode … …
ECB, les joueurs renvoyaient le message
correspondant à ‘Monster killed’ au serveur. cn = E(cn-1mn, k) mn = cn-1D(cn, k)
Chiffrement Déchiffrement
c0 = m0 E(IV, k) m0 = c0 D(IV, k)
c1 = m1 E(IV+1, k) m1 = c1 D(IV+1, k)
… …
cn = mn E(IV+n, k) mn = cn D(IV+n, k)
Nicolas Pioch 15
Cryptographie symétrique 17 mars 2009
• Détecter toute modification non autorisée • Appelés également Message Integrity Code
des données (MIC)
• Plus important que la confidentialité dans • Doivent permettre de détecter toute
pp
certaines applications : virements bancaires modification du message g en clair :
• Les chiffres en continu ou les modes – Via une attaque à texte en clair choisi,
opératoires des chiffres par bloc peuvent être l’attaquant ne doit pas pouvoir trouver un autre
classés selon qu’ils amplifient ou minimisent message m’ tel que MAC(m) = MAC(m’)
le résultat d’une modification du • Le CBC-MAC (FIPS 113) est la méthode la
cryptogramme, mais le chiffrement seul est plus ancienne pour construire un MAC à
insuffisant pour garantir l’intégrité : partir d’un algorithme de chiffrement par bloc
il n’assure que la confidentialité. http://www.itl.nist.gov/fipspubs/fip113.htm
Nicolas Pioch 16
Cryptographie symétrique 17 mars 2009
CBC-MAC
Nicolas Pioch 17
Cryptographie symétrique 17 mars 2009
Conclusion
Nicolas Pioch 18