Cryptanalyse différentielle et linéaire

Documents pareils
Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Cours de Probabilités et de Statistique

«Cours Statistique et logiciel R»

Définitions. Numéro à préciser. (Durée : )

Résolution d équations non linéaires

Quelques algorithmes simples dont l analyse n est pas si simple

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

L exclusion mutuelle distribuée

ÉPREUVE COMMUNE DE TIPE Partie D

Correction du baccalauréat ES/L Métropole 20 juin 2014

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)

LES GENERATEURS DE NOMBRES ALEATOIRES

Analyse de PRESENT avec peu de données

Objets Combinatoires élementaires

INF 4420: Sécurité Informatique Cryptographie II

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Logiciel de base. Première année ENSIMAG

Programmation linéaire

Modes opératoires pour le chiffrement symétrique

Plus courts chemins, programmation dynamique

L ANALYSE EN COMPOSANTES PRINCIPALES (A.C.P.) Pierre-Louis GONZALEZ

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

Calculs de probabilités

Algorithmique et programmation : les bases (VBA) Corrigé

(51) Int Cl.: H04L 29/06 ( ) G06F 21/55 ( )

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

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

Qu est-ce qu une probabilité?

Coefficients binomiaux

Texte Agrégation limitée par diffusion interne

CALCUL DES PROBABILITES

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Introduction à l étude des Corps Finis

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

Optimisation Discrète

Représentation d un entier en base b

Initiation à la programmation en Python

Sujet 4: Programmation stochastique propriétés de fonction de recours

Continuité et dérivabilité d une fonction

Introduction à l approche bootstrap

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

Intelligence Artificielle Planification

Probabilité. Table des matières. 1 Loi de probabilité Conditions préalables Définitions Loi équirépartie...

Système binaire. Algèbre booléenne

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

Quantification Scalaire et Prédictive

Chapitre 5. Le ressort. F ext. F ressort

Poker. A rendre pour le 25 avril

Initiation à la Programmation en Logique avec SISCtus Prolog

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

ARBRES BINAIRES DE RECHERCHE

CRYPTOGRAPHIE. Signature électronique. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

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

Critère du choix des variables auxiliaires à utiliser dans l'estimateur par calage

Encoder Encoder 1 sur 15. Codification fil par étage 15 étages max. + 2 flèches + signal de mouvement. Raccordements 0.1 mm²...

Théorie et Codage de l Information (IF01) exercices Paul Honeine Université de technologie de Troyes France

Algorithmes de Transmission et de Recherche de l Information dans les Réseaux de Communication. Philippe Robert INRIA Paris-Rocquencourt

Programmation Linéaire - Cours 1

Algorithme. Table des matières

Programmation linéaire

Architecture des Systèmes d Information Architecture des Systèmes d Information

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Séminaire TEST. 1 Présentation du sujet. October 18th, 2013

Cours d Informatique

Algorithmes d'apprentissage

Algorithmique et Programmation, IMA

Simulation de variables aléatoires

Cours 7 : Utilisation de modules sous python

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

Chapitre 5 : Flot maximal dans un graphe

DEVOIR MAISON : THEME : LES CLES DE CONTROLE. I. La clé des codes barres

Problème d ordonnancement de véhicules en variables booléennes

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

Authentification de messages et mots de passe

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Journées MATHRICE "Dijon-Besançon" DIJON mars Projet MySafeKey Authentification par clé USB

Patentamt JEuropaisches. European Patent Office Numéro de publication: Office européen des brevets DEMANDE DE BREVET EUROPEEN

Correction de l examen de la première session

Pourquoi l apprentissage?

Bases de données documentaires et distribuées Cours NFE04

Équations non linéaires

Objets et Programmation. origine des langages orientés-objet

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Exposing a test of homogeneity of chronological series of annual rainfall in a climatic area. with using, if possible, the regional vector Hiez.

Publications of the Department of Astronomy - Beograd, N2 8, SUR L' APPLICATION DE LA METHODE DE NEMlRO POUR LE CALCUL DES ASCENSIONS DROITES

Sécurité d IPv6. Sécurité d IPv6. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr. Stéphane Bortzmeyer AFNIC bortzmeyer@nic.fr

Analyse Combinatoire

Capes Première épreuve

Organigramme / Algorigramme Dossier élève 1 SI

Intégration et probabilités TD1 Espaces mesurés Corrigé

Programmation C++ (débutant)/instructions for, while et do...while

TABLE DES MATIÈRES. PRINCIPES D EXPÉRIMENTATION Planification des expériences et analyse de leurs résultats. Pierre Dagnelie

PRECISION - REJET DE PERTURBATIONS T.D. G.E.I.I.

Licence Sciences et Technologies Examen janvier 2010

Transcription:

Cryptanalyse différentielle et linéaire Pierre-Alain Fouque

Réseau SP Schéma de chiffrement par bloc de taille nm Réseau de Substitution-Permutation (SPN) Soit n et m deux entiers Longueur du clair et chiffré: nm Deux composants πs et πp: πs: {0,1} n {0,1} n une substitution (S-box) πp: [1,nm] [1,nm] une permutation

Notations x=(x 1,...,xnm)=x(1)... x(m) {0,1} nm, avec x(i) {0,1} n (K1,...,K e+1 ) les (e+1) sous-clés uk l entrée des Sbox à l étage k vk la sortie des Sbox à l étage k=entrée permutation wk la sortie de la permutation à l étage k Sk i: i-ième Sbox de l étage k z 0 1 2 3 4 5 6 7 8 9 A B C D E F πs(z) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7 z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 πp(z) 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Diversification de clé Décalage des bits: Pas bonne méthode, mais exemple K =0011 1010 1001 0100 1101 0110 0011 1111 {0,1}32, K1 =0011 1010 1001 0100 K2 =1010 1001 0100 1101 K3 =1001 0100 1101 0110 K4 =0100 1101 0110 0011 K5 =1101 0110 0011 1111

x u 1 v 1 w 1 u 2 v 2 w 2 u 3 v 3 w 3 u 4 v 4 y K 1 S 1 1 S 1 2 S 1 3 S 1 4 K 2 S 2 1 S 2 2 S 2 3 S 2 4 K 3 S 3 1 S 3 2 S 3 3 S 3 4 K 4 S 4 1 S 4 2 S 4 3 S 4 4 K 5 SPN Cryptanalyse linéaire: Supposons qu on trouve une relation linéaire probabiliste entre un ensemble de bits du texte clair x et un sousensemble des bits de l état v4 (il existe des variables dont le vaut 0 avec probabilité 1/2) Si on a suffisamment de messages chiffrés avec une clé K, alors on peut retrouver la clé K Pour chaque chiffré, on déchiffre le dernier étage et on vérifie la relation avec des compteurs

Lemme d empilement X1 et X2 deux variables aléatoires sur {0,1} Pr[Xi=0]=pi et Pr[Xi=1]=1-pi, i=1,2 i j, Xi et Xj indépendants, Pr[Xi=0, Xj=0]=pipj Pr[Xi=0, Xj=1]=pi(1-pj) Pr[Xi=1, Xj=0]=(1-pi)pj Pr[Xi=0, Xj=0]=(1-pi)(1-pj) Pr[X i Xj=0]=pipj+(1-pi)(1-pj) Pr[X i Xj=1]=pi(1-pj)+(1-pi)pj

Biais et lemme (suite) Biais de Xi: εi=pi-1/2, -1/2 εi 1/2 Pr[Xi=0]=1/2+εi et Pr[Xi=1]=1/2-εi Soit i1,...,ik k v.a. Quel est le biais de X i1...xik εi1,..,ik en fonction des εi? Lemme: εi1,..,ik = 2 k-1 j=1 k εij (par récurrence) Corollaire: Si εij=0 pour un des j, εi1,..,ik=0 (One-Time-Pad) Attention: Résultat pas vrai si pas indépendant: ε1=ε2=ε3=1/4, ε1,2=ε2,3=ε1,3=1/8, alors que 2ε1,2 ε2,3=1/32

Approximation Sbox Sbox n bits vers n bits n variables aléatoires en entrée Xi Pr[X1=x1,...Xn=xn]=1/2 n y=(y1,...,yn) les n bits de sorties Pr[X1=x1,...,Xn=xn,Y1=y1,...,Yn=yn]=0 si y πs(x) et 2 -n sinon. Quel est le biais de X i1... Xik Yj1... Yjl?

Exemple Sbox X1 X2 X3 X4 Y1 Y2 Y3 Y4 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1 1 1 Soit X1 X4 Y2 Pr[X1 X4 Y2=0] =1/2 Pr[X1 X4 Y2=1] =1/2 Biais de X3 X4 Y1 Y4: -3/8

Représentation résultat 2 8 =256 biais à évaluer de la forme ( i=1 4 aixi) ( i=1 4 biyi) avec ai {0,1} et bi {0,1} pour i=1,...,4 qu on représente de façon compacte (a1,a2,a3,a4) et (b1,b2,b3,b4) en hexa Ex: X 1 X4 Y2 entrée (1,0,0,1)=9 hexa et sortie (0,1,0,0)=4 en hexa Pour chacune, on compte le nombre de ligne qui satisfait la relation ε(a,b)=(nl(a,b)-8)/16 Ex: NL(9,4)=8, ε(9,4)=0 cf. Table d approximation linéaire

Cryptanalyse linéaire SPN Les Sbox qui ont une entrée avec une flèche entrante sont appelées actives dans S1 2, v.a. T1=U 1 5 U 1 7 U 1 8 V 1 6: biais=1/4 dans S 2 2, v.a. T2=U 2 6 V 2 6 V 2 8: biais=-1/4, dans S3 2, v.a. T3=U 3 6 V 3 6 V 3 8: biais=-1/4 dans S3 4, v.a. T4=U 3 14 V 3 14 V 3 16: biais=-1/4 T1,T2,T3,T4 ont un biais important en valeur absolue

Un peu de calcul... Supposons que ces variables aléatoires soient indépendantes... le lemme d empilement dit que le biais de T1 T2 T3 T4 est 2 3 (1/4)(-1/4) 3 =-1/32 On remarque que T 1 T2 T3 T4 s exprime en fonction de x, u 4 et de bits de clés T 1=U 1 5 U 1 7 U 1 8 V 1 6=X5 K 1 5 X7 K 1 7 X8 K 1 8 V 1 6 T 2=U 2 6 V 2 6 V 2 8=V 1 6 K 2 6 V 2 6 V 2 8 T 3=U 3 6 V 3 6 V 3 8=V 2 6 K 3 6 V 3 6 V 3 8,...

suite des calculs X 5 X7 X8 V 3 6 V 3 8 V 3 14 V 3 16 K 1 5 K 1 7 K 1 8 K 2 6 K 3 6 K 3 14 a un biais de -1/32 On remplace V3 i par U 4 i et V 3 6=U 4 6 K 4 6, V 3 8=U 4 14 K 4 14, V 3 14=U 4 8 K 4 8, V 3 16=U 4 16 K 4 16 Comme les bits de clés ont une valeur fixe pour tous les messages, la variable aléatoire X5 X7 X 8 U 4 6 U 4 8 U 4 14 U 4 16 a un biais de -1/32

Algorithme Si on devine les 8 bits de la dernière sousclé correctement, alors on pourra calculer le biais de la variable aléatoire Si on n a pas la bonne valeur de clé, la variable aléatoire aura un biais proche de 0 En utilisant des compteurs, on trouvera le biais (maximal) et on déduira qu on a alors la bonne valeur pour ces 8 bits de clé On retrouvera les autres avec une recherche exhaustive

Un peu de statistique... Si on a un biais de ε, alors il faudra c/ε 2 messages pour le détecter avec c une petite constante Dans notre cas, si on prend T=8000 messages, on aura c 8 car 1/ε 2 =1024 Comment faire mieux avec moins de messages...

Cryptanalyse différentielle C est une attaque à messages choisis Si on a des messages qui satisfont une x =x x* différence fixée en entrée, au bout d un certain nombre de tours, la différence de sorties y =y y* vaudra une valeur fixe avec bonne probabilité Notation: Δ(x )={(x,x x ): x {0,1} m } Δ(1011)={(0000,1011), (0001,1010),..,(1111,0100)} Pour chaque valeur de Δ(1011), on peut calculer les différences de sorties 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2

Cryptanalyse différentielle On notera ND(x,y )=#{(x,x*) Δ(x ):πs(x) πs(x*)=y } et avec des notations adaptées comme pour la cryptanalyse linéaire, on calcule la table des différences ND(a,b ) avec a,b en hexa L addition de clé ne pose pas de problème Rapport de propagation Rp(a,b )=ND(a,b )/2m Rp(a,b )=Pr[xor de sortie=b xor entrée=a ]

Piste différentielle dans S 1 2, Rp(1011,0010)=1/2 dans S 2 3, Rp(0100,0110)=3/8 dans S 3 2, Rp(0010,0101)=3/8 dans S 3 3, Rp(0010,0101)=3/8 Rp(0000 1011 0000 0000,0000 0101 0101 0000) =1/2*(3/8) 3 =27/1024 x = 0000 1011 0000 0000, donne (v 3 ) = 0000 0101 0101 0000 avec probabilité 27/1024 et (u 4 ) =0000 0110 0000 0110

Opération de filtrage L algorithme est similaire à celui pour la cryptanalyse linéaire (on a des compteurs qui vont déterminer 8 bits de la dernière sous-clés) et on augmente les compteurs si la caractéristique différentielle est satisfaite En plus, on ne conserve dans le calcul que les «bonnes paires», celles où on n a pas de différences sur (u(1) 4 ) et (u(3) 4 ) T c/ε, avec c une petite constante et T entre 50 et 100 permet de retrouver la clé car 1/ε 38.

Conclusion: Construction AES AES a été construit en connaissant ces attaques Les concepteurs ont montré qu il n y avait pas d attaque car les pistes différentielles ont une probabilité de l ordre de 2-128 au bout de 5 tours Les marges de sécurité font que dans certains cas, on peut remonter plusieurs étages...