Système de chiffrement par blocs

Documents pareils
1 Recherche en table par balayage

Modes opératoires pour le chiffrement symétrique

Examen Médian - 1 heure 30

Corrigé des TD 1 à 5

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Simulation de variables aléatoires

Cryptographie. Cours 3/8 - Chiffrement asymétrique

Cryptographie et fonctions à sens unique

CRYPTOGRAPHIE. Chiffrement par flot. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Activité 4. Tour de cartes Détection et correction des erreurs. Résumé. Liens pédagogiques. Compétences. Âge. Matériels

Les fonctions de hachage, un domaine à la mode

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Programmation C. Apprendre à développer des programmes simples dans le langage C


Probabilités (méthodes et objectifs)

Probabilités et Statistiques. Feuille 2 : variables aléatoires discrètes

Resolution limit in community detection

Licence Sciences et Technologies Examen janvier 2010

Le calcul formel dans l enseignement des mathématiques

Les probabilités. Chapitre 18. Tester ses connaissances

Analyse Combinatoire

Initiation à l algorithmique

INF 4420: Sécurité Informatique Cryptographie II

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Cours de Probabilités et de Statistique

Algorithmique et Programmation, IMA

LES GENERATEURS DE NOMBRES ALEATOIRES

Application 1- VBA : Test de comportements d'investissements

Quelques algorithmes simples dont l analyse n est pas si simple

Enseignement secondaire technique

Progressons vers l internet de demain

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

ÉPREUVE COMMUNE DE TIPE Partie D

ASR1 TD7 : Un microprocesseur RISC 16 bits

Exercices de dénombrement

Cours d algorithmique pour la classe de 2nde

Chaînes de Markov au lycée

Parallélisme et Répartition

Équations non linéaires

Résolution d équations non linéaires

Chapitre 2. Eléments pour comprendre un énoncé

L addition mentale. Entrée en matière. À ton tour. Évaluation : Question 4. Évaluation continue : Observer et écouter

Distribution Uniforme Probabilité de Laplace Dénombrements Les Paris. Chapitre 2 Le calcul des probabilités

Algorithme. Table des matières

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Cryptologie et physique quantique : Espoirs et menaces. Objectifs 2. distribué sous licence creative common détails sur

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Résolution de systèmes linéaires par des méthodes directes

CALCUL DES PROBABILITES

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Exercices Alternatifs. Une fonction continue mais dérivable nulle part

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

PRENOM NOM DE L ENTREPRISE DATE DU STAGE METIER

Oracles Cryptographiques. Trouver une joke de padding

Guide pratique. Pour une recherche efficace de sponsors

Principes de mathématiques 12 SÉRIE DE PROBLÈMES. Septembre Student Assessment and Program Evaluation Branch

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Authentification de messages et mots de passe

Modèles à Événements Discrets. Réseaux de Petri Stochastiques

Initiation à la programmation en Python

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Statistiques II. Alexandre Caboussat Classe : Mardi 11h15-13h00 Salle : C110.

Arbres binaires de recherche

= constante et cette constante est a.

S initier aux probabilités simples «Un jeu de cartes inédit»

La valeur présente (ou actuelle) d une annuité, si elle est constante, est donc aussi calculable par cette fonction : VA = A [(1-1/(1+k) T )/k]

Propagation sur réseau statique et dynamique

Chiffrement du système de fichiers EFS (Encrypting File System)

Cours de Génie Logiciel

Algorithmique et programmation : les bases (VBA) Corrigé

Probabilités conditionnelles Loi binomiale

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

LES DECIMALES DE π BERNARD EGGER

Introduction à MATLAB R

1. Structure d'un programme FORTRAN 95

Thématiques Questions possibles berufsfeld/fach

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Fluctuation d une fréquence selon les échantillons - Probabilités

Problèmes liés à la concurrence

Cours 14. Crypto. 2004, Marc-André Léger

La médiatrice d un segment

Exo7. Probabilité conditionnelle. Exercices : Martine Quinio

Bureau N301 (Nautile)

Efficacité des Modules Maintenance dans les ERP.

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours Informatique Master STEP

STAGE IREM 0- Premiers pas en Python

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Guide No.2 de la Recommandation Rec (2009).. du Comité des Ministres aux États membres sur la démocratie électronique

- Le Diagramme de Gantt. - Le Diagramme de Pert - La Méthode QQCQCCP - La Méthode MOSI - Cahier des charges fonctionnel

Baccalauréat ES Amérique du Nord 4 juin 2008

CONFIGURATION DE L AUTOMATE SIEMENS

Calculs de probabilités avec la loi normale

Transcription:

ystème de chiffrement par blocs Université de Lille-1 IL PAC 19 février 2015 1 Réseaux de eistel Question 1: La fonction f a-t-elle besoin d être inversible? Expliquez comment on peut procéder au déchiffrement. Question 2: Expliquez comment distinguer un tour de réseau de eistel d une permutation aléatoire Question 3: Même question avec deux tours. Question 4: En supposant que la fonction f renvoie des sorties aléatoires, qu observe-t-on au bout de 3 tours de réseau de feistel? Question 5: i on a le droit de faire déchiffrer ce qu on veut, montrer comment distinguer trois tours de réseau de eistel. 2 Un Block Cipher maison Vos enseignants ont conçu un système de chiffrement par bloc, juste pour vous. Ce système est inspiré par l AE. Il chiffre des blocs de 8 octets avec des clefs de 8 octets. Quand on a un bloc x (ou une clef k) de 8 octets, on numérote les différents octets x 0,..., x 7 (et k 0,..., k 7, respectivement). Notre système fonctionne en appliquant des fonctions de tour plusieurs fois de suite sur le bloc à chiffrer. Plus précisément, le chiffrement fonctionne comme ça : 1: function Encrypt(k, x) 2: for i = 0 to r 1 do 3: x R i (k, x) 4: return x 5: end function La i-ème fonction de tour, elle, est décrite par le programme suivant (la figure ci-dessous en donne une représentation graphique) : 1: function R i (k, x) 2: y 0 (x 0 k 0 ) i 3: for j = 1 to 7 do 4: y j (x j k j ) 5: for j = 1 to 7 do 6: z j y j 1 y j 7: z 0 y 0 y 7 8: return z 9: end function Dans cette fonction, on suppose que (... ) désigne la -boite de l AE. 1

i k 0 k 1 k 2 k 3 k 4 k 5 k 6 k 7 x 0 x 1 x 2 x 3 x 4 x 5 x 6 x 7 Question 6: Combien d opérations nécessite (en gros) une recherche exhaustive pour retrouver la clef secrète? Quelle(s) information(s) sont nécessaire(s) pour effectuer cette recherche? Question 7: Expliquez comment on peut effectuer le déchiffrement sachant qu on dispose de 1, qui est la -boite inverse de l AE. Question 8: upposons qu on connaisse k 0,..., k 6, c est-à-dire toute la clef sauf k 7. On applique la fonction de tour sur un bloc clair X, qu on choisit. Que peut-on connaître dans R 0 (X)? Question 9: Même question pour R 0 (R 1 (X))? Question 10: Maintenant, on essaye de prendre le problème à l envers. On a sous la main un bloc de chiffré, Z, et on suppose qu on connaît k 1,..., k 7 (toute la clef sauf k 0 ). Que peut-on connaître dans R 0 1 (Z)? Question 11: Même question avec R 1 1 ( R 0 1 (Z) )? Question 12: Même question avec R 6 1 ( (R 0 1 (Z) ) )? z 0 z 1 z 2 z 3 z 4 z 5 z 6 z 7 On suppose maintenant que notre block-cipher a 7 tours (r = 7 dans l algorithme). On veut monter une attaque qui retrouve la clef (sensiblement) plus vite que la recherche exhaustive. Question 6: Décrivez une fonction Test qui prend en argument k 1,..., k 7 ainsi qu une paire clair/chiffré et qui indique si oui ou non les valeurs de la clef si correctes. Votre procédure a le droit de se tromper avec probabilité 1/256. Le pseudo-code de l attaque est le suivant. Ici, (X, Z) est une paire clair-chiffré : 1: procedure Attack(X, Z) 2: for all k 1,..., k 7 do 3: if Test(X, Z, k 1,..., k 7 ) then 4: for all k 0 do 5: if Encrypt(k 0,..., k 7, X) = Z then 6: print la clef est peut-être, (k 0,..., k 7 ). 7: end if 8: end if 9: end procedure Question 7: Quelle est la complexité de l attaque? Est-ce qu elle réussit toujours? Est-elle plus rapide que la recherche exhaustive. Question 8: D après vous, quel est le principal défaut de ce système de chiffrement par bloc?

3 GOT GOT est un Block Cipher conçu en UR peu après le développement du DE, vers la fin des années 1970. Il chiffre des blocs de 64 bits avec des clefs de 256 bits. Le chiffrement GOT opère en appliquant 4 fois un autre Block Cipher plus faible, qu on note G, et qui chiffre lui aussi 64 bits avec des clefs de 256 bits : 1: function GOT(m,k) 2: a G(m, k) 3: b G(a, k) 4: c G(b, ( k) ) 5: d G c, k 6: return d 7: end function La clef k se décompose naturellement en 8 mots de 32 bits (k 0, k 1, k 2, k 3, k 4, k 5, k 6, k 7 ), et le message m en deux mots de 32 bits (m 0, m 1 ). On note k la clef «mirroir» : k = (k7, k 6, k 5, k 4, k 3, k 2, k 1, k 0 ) Les concepteurs de GOT ont choisi d inverser l ordre des clefs dans le dernier tour pour rendre le tout «moins symétrique». On va voir que c est pourtant ça qui va causer tous leurs problèmes. La première «attaque» plus rapide que la recherche exhaustive contre GOT a été découverte en 2011. C est celle-ci qui est étudiée ici. m 0 m 1 k 0 k 1 k 2 k 3 k 4 k 5 k 6 k 7 3.1 Préliminaires La fonction G est décrite par le dessin ci-dessus à droite. La fonction est complètement arbitraire (c est un tour de PN, en gros). Question 9: En supposant qu on puisse faire appel à la fonction G 1, qui est le déchiffrement de G, écrivez le déchiffrement de GOT. La fonction G est en fait un réseau de feistel à 8 tours, qui figure sur la colonne de droite. La fonction n a pas besoin d être spécifiée. Question 10: Expliquez comment fonctionne G 1. i vous êtes coincé, imaginez d abord que G n a qu un seul tour. Passez ensuite à deux, puis trois, etc. Question 11: On considère deux blocs x et y de 64 bits. Combien y a-t-il (en moyenne) de clefs k de 256 bits telles que y = GOT (x, k)? Vous pouvez supposer que GOT (x, k) est une valeur aléatoire parmis l ensemble des chaines de 64 bits pour chaque nouvelle clef k. Question 12: Combien faut-il de paires clair / chiffré pour espérer retrouver la clef k de manière (à peu près) unique? Question 13: Quelle est la complexité de la recherche exhaustive sur la clef quand on dispose de suffisament de paires clair/chiffré? 3.2 aiblesse de G G, pris isolément, n est pas un bon Block Cipher. On va voir qu il est possible de récupérer la clef plus vite que la recherche exhaustive par un moyen simple. On suppose ici qu on a sous la main suffisament de paires clair/chiffré, que la fonction est bijective et qu on sait calculer efficacement son inverse. Question 14: Montrez comment récupérer k 7 à partir de k 0,..., k 6.

Question 15: Déduisez-en une une attaque sur G qui retrouve l ensemble de la clef secrète plus vite que la recherche exhaustive. Quelle est sa complexité? 3.3 Propriété de «reflexion» On dit qu un bloc de 64 bits m = (m 0, m 1 ) est symétrique si m 0 = m 1 (c.a.d. si les deux moitiés qui entrent dans le réseau de eistel qui forme G sont égales). Question 16: Montrez que G(m, k) 1 ( = G m, k ) lorsque m est symétrique. Question 17: Justifiez que lorsque c est symétrique, alors b = d (dans la description de haut-niveau de GOT donnée au début) Question 18: Quelle est la probabilité qu un bloc de 64 bits choisi au hasard soit symétrique? (vous pouvez imaginer que la première moitié est choisie d abord, et la deuxième ensuite). Question 19: upposons qu on chiffre x pour obtenir y = GOT (x, k). Justifiez pourquoi, lorsque c est symétrique, on a G(x, k) = G 1 (y, k) 3.4 Principe de l attaque sur GOT complet Cette propriété de reflexion est l ingrédient-clef d une procédure qui permet de récupérer la clef secrète de GOT à partir d un «petit» nombre de clairs connus. 1: function Break-GOT 2: Obtenir une nouvelle paire clair/chiffré (x, y) avec y = GOT (x, k) 3: for all bloc a {0, 1} 64 do 4: Déterminer toutes les solutions de () : { a = G(x, k) y = G(a, k) 5: for all solution k de () do 6: Tester k avec des paires clair/chiffré connues. En cas de succès, s arrêter et renvoyer k. 7: Retourner à l étape 2 8: end function On va voir dans la suite qu il est possible d exécuter l étape 4 en grosso-modo 2 128 opérations, et que le nombre de solutions k du système () de l étape 4 est lui aussi environ 2 128. Question 20: Justifiez que cette procédure est correcte : quand elle renvoie une valeur de k, alors c est la bonne. Question 21: Justifiez que si la paire clair/chiffré choisir à l étape 2 conduit à une valeur de c symétrique, alors une bonne solution sera trouvée à l étape 6 et la procédure s arrêtera. Question 22: Déterminer la complexité (moyenne) en temps de cette procédure. Combien de paires clair/chiffré sont-elles nécessaires au total? 3.5 Attaque par le milieu de G Pour que l attaque de GOT soit complète, il reste à être capable de résoudre efficacement le système () de l étape 4. On va voir qu on peut même faire quelque chose d un peu plus général, et qu on peut résoudre «efficacement» le système suivant : ( ) : { t = G(s, k) v = G(u, k) où s, t, u et v sont quatres blocs de 64 bits arbitraires dont on connaît la valeur (et s u). Question 23: Justifiez que si on sait résoudre ( ), alors on sait résoudre () avec la même complexité.

Question 24: i on choisissait une clef k au hasard, quelle serait la probabilité que ce soit une solution? Déduisez-en que si on testait toutes les clefs possibles on pourrait s attendre à obtenir en moyenne 2 128 solutions. Question 25: Montrez qu on peut «découper «G en deux. Pour cela, montrer qu on peut construire une fonction R qui prend seulement 128 bits de clef, telle que : G k (x) = R k4,k 5,k 6,k 7 ( ( R k0,k 1,k 2,k 3 (x) ) Vous pouvez dessiner une représentation de R. Concluez-en que le système ( ) est équivalent à : ( ) : { R 1 (t) R 1 (v) = R k0,k 1,k 2,k 3 (s) = R k0,k 1,k 2,k 3 (u) Pour trouver les solutions rapidement, on utilise la technique dite «Meet-In-The-Middle» : 1: function olve(s,t,u,v) 2: Allouer un (gros) dictionnaire D 3: for all valeur de (k 0, k 1, k 2, k 3 ) {0, 1} 128 do 4: oit i = (R k0,k 1,k 2,k 3 (s) R k0,k 1,k 2,k 3 (u)) 5: Ajouter (k 0, k 1, k 2, k 3 ) à D[i] 6: for all valeur ( de (k 4, k 5, k 6, k 7 ) {0, 1} 128 ) do 7: oit i = R 1 (t) R 1 (v) 8: for all quadruplet(k 0, k 1, k 2, k 3 ) dans D[i] do 9: Considérer k = (k 0, k 1, k 2, k 3, k 4, k 5, k 6, k 7 ) comme une solution potentielle de ( ). 10: end function Question 26: Justifiez que les solutions signalées par cette procédure sont correctes (ce sont vraiment des solutions de ( ). Question 27: ans rentrer trop dans les détails, donnez des éléments de justification permettant de se convaincre que chaque case du dictionnaire D contient en moyenne une seule entrée. Question 28: Justifiez que cette procédure signale en moyenne 2 128 solutions.