La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Confidentialité I : Chiffrement symétrique

Présentations similaires


Présentation au sujet: "Confidentialité I : Chiffrement symétrique"— Transcription de la présentation:

1 Confidentialité I : Chiffrement symétrique
IFT6271--Hiver 2014 3e cours Louis Salvail

2 Confidentialité par chiffrement
Une des principales méthodes pour assurer la confidentialité des données est le chiffrement. Les méthodes de chiffrement offrent deux outils qui fonctionnent à partir d’une clé : C := EK(M) chiffre le message M avec la clé K ; DK’(C) déchiffre le message C avec la clé K’. Nous voulons que, sans connaître la clé K, C=EK(M) ne donne pas d’information sur M.

3 Le scénario K K C M M ? ?

4 Le seul chiffre parfaitement sûr
F+Y := 5+24 (mod 26) = 29 (mod 26) = 3 := D. A:=0, B:=1,..., Y:=24, Z:=25. Q:=Q+A M:=Z+L L:=A+L P:=B+O EK(M) Q-Q:=A M-Z:=L L-A:=L P-B:=O DK(M) nécessite une clé de 4 lettres! QZAB QZAB Un message de 4 lettres QMLP ALLO ALLO

5 Est-ce la panacée? NON! Ce qui le rend à peu près inutilisable lorsque les communications sont fréquentes! Il n’est pas trop difficile de se convaincre que, si la clé est aléatoire, le message chiffré ne contient pas d’information sur le message clair (Shannon, 1949). Cependant, la clé doit être aussi longue que le message et ne doit être utilisée qu’une seule fois! Tout système de chiffrement qui dissimule toute l’information sur le message clair à quiconque ne connaissant pas la clé aura la même faiblesse (Shannon, 1949).

6 Dans la pratique Un système de chiffrement devrait nécessiter une clé secrète de longueur indépendante de la longueur du message à transmettre. Un système de chiffrement devrait permettre de chiffrer plusieurs messages avec la même clé. Malheureusement, il n’est pas possible qu’un tel système cache toute l’information sur le message clair même à un adversaire qui ne connaît rien sur la clé secrète! Nous sommes dans l’impasse!

7 Une autre approche Relaxons un peu la condition qu’un chiffre ne doit pas donner d’information sur le message clair : Un cryptogramme C ne doit pas donner d’information sur le message clair M à quiconque ne pouvant essayer les déchiffrements de C avec (presque) toutes les clés. Noter que si l’adversaire avait le temps de calculer tous les déchiffrements possibles de C, alors il pourrait sans doute déterminer de l’information sur M en conservant les messages qui sont bien formés. Une attaque de ce type est appelée « recherche exhaustive de clés ». Notre notion de sécurité relaxée dira d’un système de chiffrement qu’il est sûr s’il ne peut être attaqué que par la recherche exhaustive de clés.

8 Est-ce raisonnable? OUI!
Supposons que le déchiffrement de C avec clé K peut s’effectuer en 1μs sur un ordinateur (ce qui est pas mal rapide). Combien de temps est nécessaire pour effectuer une recherche exhaustive de clés lorsque la clé est de longueur : 16 bits? 216 X 10-6sec = X 10-6 = 0,06 sec. 32 bits? 232 X 10-6sec = 4295 secs. 64 bits? secs = années. 128 bits? 264 X années >>>>>>> l’âge de l’univers!

9 Chiffres symétriques Un chiffre est appelé symétrique si la clé de chiffrement est la même que celle pour le déchiffrement. La clé peut être réutilisée pour le chiffrement de plusieurs messages. Ces systèmes sont habituellement très performants! La longueur des clés secrètes doit être assez grande pour exclure la recherche exhaustive des clés. Ceci n’est cependant pas une garantie de sécurité...

10 Un peu d’histoire NON SÛR! Le chiffre de César: Chiffrement :
A->D, B->E, C->F,..., X->A, Y->B, Z->C. Déchiffrement : A->X, B->Y, C->Z,..., X->U, Y->V, Z->W. Quand César transmettait le message : UHWLUHCYRXV alors RETIREZVOUS..... Le chiffre de César n’a donc pas de clé secrète!!!!! NON SÛR!

11 César avec une clé! Nous pouvons facilement ajouter une clé au chiffre de César. La clé est 0 ≤ K ≤ 25 et indique le décalage appliqué à chaque lettre du message. Le chiffre de César est le cas spécial K=3. Pour montrer que ce chiffre est peu sûr, essayez de déchiffrer : ID RTHR UDMV IZH UT IZH UZHMBV! 26 clés possibles est bien trop peu!!!!

12 Alphabet mélangé (chiffrement par substitution monoalphabétique)
Dans ce chiffre, la clé correspond à une permutation des lettres de l’alphabet : [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] [D,H,Q,A,X,E,W,T,U,P,L,G,M,V,K,I,B,Y,Z,C,F,J,K,N,S,O] ELEPHANTESQUE -> XGXITDVCXZBFX Le nombre de clés possibles est 26! = 4.03 X 1026 > 291! Est-ce sûr?

13 Cryptanalyse statistique
Remarquez qu’étant donné un message chiffré C, le tableau des fréquences des lettres de C contient les mêmes valeurs que celui des lettres du message clair M. Si M est un message en français, la lettre la plus fréquente est ‘E’. Ainsi, il est très probable que la lettre la plus fréquente de C soit en fait la version chiffrée de ‘E’. La procédure peut être répétée. La deuxième lettre la plus fréquente en français est le ‘A’. On s’attend à ce que la lettre de C, deuxième quant à sa fréquence, devrait être la version chiffrée de ‘A’. En continuant ainsi, beaucoup d’information sur le message M peut être obtenue à partir de C. Même avec plus de 291 clés possibles, M n’est pas chiffré de façon sûre! L’analyse fréquentielle a été découverte par Al Kindi au 9e siècle, peut-être en étudiant le Coran (il faut des textes écrits pour y parvenir!).

14 La machine Enigma La machine Enigma permettait à l’armée allemande de communiquer d’une façon jugée alors sûre. Elle effectue un chiffrement symétrique à l’aide de 3 rotors (embrouilleurs, ou roues), chacun induisant une permutation de l’alphabet (3 rotors avant la guerre, 4 ensuite). La clé secrète est de taille (environ 1016) : 6 dispositions des 3 rotors, chaque roue peut être placée de 26 façons différentes ( possibilités), et substitutions de quelques (6) paires de lettres. Brisé par les Polonais à cause du mode d’utilisation (de courts messages étaient répétés).

15 La machine... Alan Turing à Bletchley Park

16 Substitutions et transpositions
Shannon (1949) propose d’utiliser des fonctions pour créer des transformations de mixage qui distribuent les messages intelligibles uniformément sur l’ensemble des messages chiffrés possibles. Un exemple commun est l’utilisation de transpositions (permutations), de substitutions et d’opérations linéaires simples. Évidemment, toutes ces opérations doivent être inversibles pour permettre le déchiffrement... Substitution 1 Transposition 1 Substitution 2 Transposition 2 P A T E +1 Q B U C V G G U V B C Q +1 H V W D E S V H D W S E +2 +2

17 Data Encryption Standard (DES)
DES est un standard NIST (des années 1970) pour le chiffrement à clé secrète de blocs de données de taille fixe. Sa version la plus simple (et la moins sûre) : Chiffre des blocs de données de 64 bits. La clé secrète est longue de 56 bits (en fait 64 bits dont 8 bits servent à tester la parité de chaque bloc de 8 bits de clé).

18 K0 G0 D0 G1=D0 D1= F(D0,K0) +G0 Bloc de données à chiffrer :
DES dérive 16 clés de 48bits, une pour chaque ronde, à partir d’une seule clé de 64(56) bits. Ronde 1 1 2 3 4 5 6 ... 61 62 63 64 Permutation initiale 58 50 42 34 26 18 ... 31 23 15 7 Ronde 2 K0 G0 D0 G1=D0 Ceci applique une substitution définie par la clé de ronde D1= F(D0,K0) +G0 Les clés DES sont codées sur 64 bits (8 octets) mais chaque octet contient un bit de parité (de sorte que la parité de chaque bloc est impaire). Le résultat est une clé de 64-8=56 bits! Ronde 16 Notez que s’il y avait moins de 16 rondes, certaines attaques connues pourraient briser DES.

19 Dérivation des clés pour les rondes DES
La clé de 56 bits est permutée. Elle est ensuite séparée en 2 clés de 28 bits. À chaque ronde, chaque partie est décalée d’une ou deux positions vers la gauche (dépendant de la ronde). Des sous-clés de 48 bits sont extraites en prenant 24 bits dans chaque partie de 28 bits. Les 24 bits considérés varient en fonction de la ronde. Chaque bit de clé original est utilisé dans environ 14 des 16 sous-clés générées (une par ronde).

20 Les rondes E: fonction d’expansion S: fonction de substitution
F(Dn,Kn)+Gn E: fonction d’expansion S: fonction de substitution E La fonction E double certains des 32 bits pour en obtenir 48 dans un ordre un peu modifié. Dn1=001101 rang=01 col=0110 Le bloc Dn , à la sortie de E, est scindé en 8 blocs de 6 bits Dn1,Dn2,...,Dn8 Le sous-bloc Dni est utilisé pour l’évaluation de la fonction de substitution Si. Le premier et dernier bit du sous-bloc indiquent la rangé de Si à consulter tandis que les 4 bits du milieu indiquent la colonne de Si à consulter. sortie : 1101=13 Nous revenons à 32 bits!!!! S1

21 L’insécurité de DES simple
Une clé de 56 bits n’est pas suffisante pour s’assurer qu’une fouille exhaustive des clés n’est pas possible. C’est probablement pourquoi ce système de chiffrement a été adopté comme tel (72,057,594,037,927,936 clés) : De nombreux processeurs peuvent déchiffrer plus de 92 milliards de clés/sec. Un grand organisme peut accomplir une fouille exhaustive en déchiffrant en parallèle à l’aide de plusieurs machines. Des machines dédiées peuvent briser DES pour moins de $ en quelques heures. Des versions plus fortes ont été proposées. Triple-DES est un système de chiffrement avec 112 bits de clé très utilisé dans le monde bancaire: 3DESKK’(M) = DESK(DESK’-1(DESK(M))). 72 Billiards 2 chiffrements plus 1 déchiffrement DES avec deux clés sont nécessaires pour éviter certaines attaques.

22 Briser DES (56 bits) Coût : 250 000 $
Cherche 92 milliards de clés/sec. A déterminé une clé en 56 heures. Kocher et Jaffe ont gagné $ en 1998 : Défi DES organisé par RSA.

23 DES : modes de fonctionnement (ECB)
Comment utiliser DES pour chiffrer des données de beaucoup plus que 64 bits? Nous pourrions décomposer un long message M en blocs de 64 bits M=(M1,M2,..,Ms), c’est l’Electronic Codebook Mode: TOUT À FAIT NON SÛR! M1 M2 M3 M4 DESK(M1) DESK(M2) DESK(M3) DESK(M4) C1 C2 C3 C4 = Supposons que M= ou M= Il est possible de déterminer lequel des deux messages a été chiffré en observant le cryptogramme...

24 ECB est mauvais

25 Modes de fonctionnement CBC pour DES
Important de choisir ce vecteur au hasard. Permet à deux chiffrements du même message avec la même clé de produire des cryptogrammes différents. Modes de fonctionnement CBC pour DES C1 C2 Cn C=(IV,C1,C2,...,Cn) C1 C2 Cn

26 Autres modes Voilà le résultat en mode CBC :
Il y a bien d’autres modes : PCBC : Propagating Cipher Block Chaining Mode, CFB : Cipher Feedback Mode, OFB : Output Feedback Mode, CTR : Counter Mode.

27 Mode CFB Considéré comme très sûr. Plus lent que ECB. C1 C2 Cn
C=(IV,C1,C2,...,Cn) C1 C2 Cn Considéré comme très sûr. Plus lent que ECB. C0 = IV, Chiffrement : Ci = Mi⊕DESK(Ci-1) . Déchiffrement : Mi=DESK(Ci-1)⊕Ci . Vous n’avez besoin que du code pour chiffrer et non celui pour déchiffrer!

28 Mode OFB C1 C2 Cn C=(IV,C1,C2,...,Cn) Se comporte un peu comme le masque jetable. Il est assez rapide (streamcipher). Considéré moins sûr que les modes CBC et CFB, cependant : Deux messages clairs avec un bit de différence produisent deux cryptogrammes comportant un bit de différence, ce qui permet de corriger des erreurs de transmission. Ce qui est aussi une faiblesse car de l’information sur les messages clairs devient accessible!

29 Chiffrement de flux («streamcipher»)
Un streamcipher est un chiffre qui permet le chiffrement de messages de longueurs arbitraires. Il est construit à partir d’un générateur pseudo-aléatoire G(k) : beaucoup plus long que n G k∈{0,1}n G(k)1 G(k)2 G(k)3 G(k)4 G(k)5 ... M1 M2 M3 M4 M5 ... = C1 C2 C3 C4 C5 ... G doit être tel qu’il est impossible de faire la différence efficacement entre G(k), lorsque k est choisi aléatoirement, et une vraie séquence aléatoire de longueur beaucoup plus grande que n.

30 OFB et streamcipher Le mode OFB consiste à transformer un chiffre par bloc en un chiffre de flux («streamcipher») : IV E k E k E k ... E k Stream M1 M2 Mt-1 Mt C C Ct Ct

31 Autres modes CTR est un mode qui permet de paralléliser le chiffrement. OCB est un mode qui ne nécessite pas un vecteur d’initialisation IV aléatoire, seulement une nouvelle valeur à chaque fois. Il peut aussi assurer l’intégrité des messages du même coup... XTS pour chiffrer des données à accès direct (pas un flux).

32 AES: Advanced Encryption Standard
Le système DES a été remplacé pour un nouveau système appelé AES : Advanced Encryption Standard. Il est devenu le nouveau standard NIST en 2001. Sa conception est similaire à celle de DES. Il chiffre des blocs de 128 bits avec des clés secrètes de 128, 192 ou 256 bits. Consomme peu de mémoire et est très efficace. Évidemment, il n’est pas plus sûr que DES, si un bon mode de fonctionnement n’est pas utilisé...

33 AES AddRoundKey : Calcul des XOR des octets du bloc à chiffrer avec la matrice de la clé courante. SubByte : Substitue chaque octet du bloc à chiffrer. Voyons le bloc courant comme une matrice 4X4 d’octets : Shiftrows : Applique des rotations aux rangées 2, 3, 4 de la matrice. Mixcol : Multiplie chaque colonne du bloc courant par une matrice. Les multiplications sont dans un corps fini et les additions, des XOR.

34 Chiffrement d’un flux de données («streamcipher»)
Certaines méthodes de chiffrement sont spécifiquement conçues pour chiffrer un flux de données continu par opposition aux méthodes par blocs comme DES et AES. L’idée est la suivante : Une séquence pseudo-aléatoire est générée à partir d’une valeur initiale IV et d’une clé K en utilisant un générateur G : GK(IV)= r1,r2,r3, ... Le i-ième bit du message mi est chiffré par ci = ri⊕mi Le message chiffré C=(IV, c1,c2,c3,...) est alors transmis. Cette séquence est appelée flux de clés («keystream»). Un chiffre par blocs en mode OFB est presque un chiffrement de flux.

35 Chiffrement de flux (II)
Le chiffrement de flux de données défini précédemment est du type asynchrone puisque le flux de clés est indépendant du message clair. Un problème est que la perte/l’ajout d’un bit au cryptogramme rend le décodage très problématique... Par contre, un bit d’erreur n’affecte que le bit du message clair correspondant. Ceci ouvre la porte aux attaques qui modifient quelques bits du message transmis. Il y a aussi des méthodes de chiffrement de flux synchrones qui permettent une resynchronisation après un certain nombre de bits. La différence entre un chiffre par flux et un chiffre par blocs est que ce dernier demande au message clair d’être au moins de la taille du bloc. Les messages plus courts doivent être soumis au remplissage («padding»). Ceci est inutile pour le chiffrement de flux. Imaginez que les données sont reçus et chiffrées par DES en paquets de 32bits. Ceci produira un cryptogramme 2 fois plus long que celui par flot.

36 RC4 RC4 est le chiffre de flux le plus connu. Il s’agit du Rivest Cipher 4 développé pour RSA en 1987. Le code de RC4 était maintenu secret jusqu’à ce qu’un cyberpunk le rende public en 1993. Utilisé par exemple pour WEP, WPA (réseaux sans fil) et SSL. Très très rapide. Des faiblesses sont connues. Les premiers octets de la séquence pseudo-aléatoire (flux de clés) doivent être éliminés (1024!) parce que biaisés.

37 RC4 (II) Génération de clés (key scheduling):
for i from 0 to 255 S[i] := i endfor j := 0 j := (j + S[i] + key[i mod keylength]) mod 256 swap(S[i],S[j]) Initialise un tableau S (une permutation) à l’aide d’une clé de 1 à 256 octets. La plupart du temps entre 5 et 16. Flux de clés (keystream): La sortie (un nouveau bit de flux de clés) est obtenue en regardant S(S(i)+S(j) mod 256). S(i) et S(j) sont permutés... i := 0 j := 0 while GeneratingOutput: i := (i + 1) mod 256 j := (j + S[i]) mod 256 swap(S[i],S[j]) output S[(S[i] + S[j]) mod 256] endwhile

38 Utilisation de RC4 Attention : si deux flux de données sont chiffrés avec la même clé, alors il faut faire quelque chose pour éviter que la même séquence aléatoire soit générée... Il faut donc faire intervenir une valeur IV (RC4 n’en a pas directement) utilisée une seule fois seulement avec la même clé K. Il faut aussi indiquer comment générer une nouvelle clé K’ en combinant la clé initiale (long terme) K avec IV : Une approche est l’utilisation d’une fonction de hachage H et poser K’ = H(K,IV). Il faut utiliser une bonne fonction de hachage. Une autre approche est l’utilisation de K’=(K,IV) avec IV public... ceci cause des problèmes étant donné la faiblesse relative de RC4.

39 Analyse de cas Une compagnie de portes et fenêtres vient de mettre en marché des fenêtres avec contrôle radio pour l’ouverture et la fermeture de celles-ci. Pratique pour les fenêtres qui sont difficiles d’accès. Les compagnies d’assurance ne sont pas heureuses. Elles veulent des garanties que les fenêtres ne peuvent être ouvertes qu’à partir du contrôle que possède le propriétaire...

40 Solution? Nous pourrions faire en sorte que les transmissions du contrôle vers la fenêtre soient chiffrées. Est-ce une bonne idée? Est-il important de chiffrer les messages dans ce scénario? Quelle est la différence entre les utilisations d’un chiffrement de flux comme RC4 et DES en mode CBC? RC4 a des faiblesses evidentes: Il est possible de convertir une fermeture en ouverture sans connaitre la cle. CBC: Il semble plus difficile de convertir une fermeture en ouverture.....

41 RC4 et DES en mode CBC En général, l’intégrité et l’origine des messages ne peuvent pas être assurées par une méthode de chiffrement seule. Cependant, certains modes de fonctionnement peuvent offrir quelques protections (mais pas contre les redites, si le système est non interactif). Voyons en premier lieu le chiffrement de flux comme RC4 : Rapide, simple. Facile de modifier un message, comme transformer une fermeture en une ouverture, Pertes de synchronisation inévitables. Pour resynchroniser, il faut faire intervenir un IV et les composantes doivent pouvoir être capables de calcul.

42 DES en mode CBC DES en mode CBC :
Modifier le message pour le rendre intelligible est plus difficile que pour RC4. Ceci n’implique pas que l’approche est sûre. Les problèmes de resynchronisation sont moins importants ici. Nous verrons la semaine prochaine comment cette tâche peut être accomplie de la bonne façon en utilisant un code d’authentification de message... Le chiffrement n’est pas la bonne approche! Comme mentionné précédemment, ces codes peuvent être construits à partir de DES/AES en mode CBC (avec IV=0) en publiant le message clair avec le résultat du dernier chiffrement seulement.

43 Conclusion : chiffrement symétrique
Pour assurer que le chiffrement à clé secrète fonctionne comme il devrait : Vous devez avoir un bon système de chiffrement par blocs, Un mode de fonctionnement approprié et Une bonne façon de choisir le vecteur d’initialisation. Même dans ce cas, il se pourrait que le système ne soit pas sûr, car aucun de ceux-ci n’a été démontré comme tel. Ces systèmes sont rapides : 1-10 Mo/sec sur un PC décent et beaucoup plus rapides sur du matériel dédié. Parfait pour le chiffrement de flux. En général, à mesure que le nombre de messages chiffrés avec la même clé augmente, la sécurité se détériore. Bien des réalisations posent IV=0, ce qui est une bien mauvaise idée....


Télécharger ppt "Confidentialité I : Chiffrement symétrique"

Présentations similaires


Annonces Google