350 likes | 585 Views
Cryptanalyse du Chiffrement. Damier Alexandre -M2 CCS. Sommaire. 1. Introduction 2. Le chiffrement 3. Vulnérabilité 4. Détection 5. Décryptement 6. Trappes ?. Introduction 1. 2.3.4.5.6 . Chiffrement allant de XOR (le plus faible) à RC4 avec une clé de 128 bits
E N D
Cryptanalyse du Chiffrement Damier Alexandre -M2 CCS
Sommaire 1. Introduction 2. Le chiffrement 3. Vulnérabilité 4. Détection 5. Décryptement 6. Trappes ?
Introduction 1.2.3.4.5.6. • Chiffrement allant de XOR (le plus faible) à RC4 avec une clé de 128 bits Le XOR est un opérateur logique qui correspond à un « OU exclusif » Même principe que le cryptage de Vigenère, puis on effectue un XOR, bit par bit. L'algorithme est complètement symétrique. Exemple
Introduction1.2.3.4.5.6. • Chiffrement allant de XOR (le plus faible) à RC4 avec une clé de 128 bits • Chiffrement présent jusqu’à Office 2003 75% des particuliers et près de 80% des licences professionnelles • En 2005, Hongjun Wu met en évidence une faiblesse dans l’utilisation de RC4 128 de la suite Office Les clés restent les mêmes pour toutes les versions modifiées !
Le chiffrement 1.2.3.4.5.6. Le cas XOR … • Via un mot de passe Outils -> Options -> Onglet Sécurité -> Options avancées • XOR utilisé par défaut si on ne clique pas sur Paramètres avancés Ce que font la plupart des utilisateurs ! • XOR est un algorithme simple et facile mais pitoyable en terme de sécurité (utilisation d’un dérivé du mot de passe)
Le chiffrement 1.2.3.4.5.6. Algorithme RC4 • Plusieurs options proposées (comme la signature numérique) • Différentes longueurs de clés • Celui censé offrir la meilleure sécurité est RC4 avec clé de 128 bits C’est celui que nous allons cryptanalyser
Le chiffrement 1.2.3.4.5.6. Algorithme RC4 • Chiffrement de type flot • Le texte clair M est combiné à une séquence aléatoire Sigproduite par l’expansion de la clé K pour produire le texte chiffré C Ct = MtSigt Chiffrement symétrique Mt = CtSigt
Le chiffrement 1.2.3.4.5.6. Algorithme RC4 • Clé de chiffrement généré par le logiciel • Obtenue à partir du mot de passe de l’utilisateur et d’un vecteur d’initialisation (IV généré aléatoirement par Word) K= F ( H ( IV || mot de passe ) • F fonction de dérivation, K la clé de chiffrement , H la fonction de hachage (SHA1) et || l’opérateur de concaténation.
Le chiffrement 1.2.3.4.5.6. Algorithme RC4 • L’utilisation d’un même mot de passe pour plusieurs documents n’affaiblit pas la clé… hachage avec IV censé être généré aléatoirement à chaque fois !
Vulnérabilité 1.2.3.4.5.6. Principe général • Microsoft Word viole une règle fondamentale en cryptologie Utilisation du même IV pour différentes versions d’un document Obtention de messages parallèles • Profondeur de parallélisme : nombre de messages parallèles relativement à une même suite chiffrante.
Vulnérabilité 1.2.3.4.5.6. Analyse technique • Création de deux fichiers « message1.doc » et « message2.doc » Word avec une modification • Mot de passe « protection » Nous allons ici utiliser Hackman 9.0 qui est un éditeur hexadécimal, un désassembleur et un débuggeur tout en un
Vulnérabilité 1.2.3.4.5.6. Analyse technique 37 premiers octets identiques ! Donc même suite chiffrante, donc même IV !
Vulnérabilité 1.2.3.4.5.6. Analyse technique Comparaison des IV Après le marqueur 10 00 0000
Vulnérabilité 1.2.3.4.5.6. Structure d’un document Word • Word positionne toujours le début du texte à l’offset0xA00 • IV visible après le marqueur 10 00 0000 • La taille des données (nombres de caractères) se détermine en lisant les valeurs x et y situées respectivement aux offsets 0x21D et 0x21C. T (en octets) = (x-8) * 28 + y Données toujours accessibles en clairs même avec l’option « chiffrer les propriétés du document »
Détection 1.2.3.4.5.6. Des messages parallèles… Principe général C1 = M1 Sig1 C2 = M2 Sig2 ( C1 C2 ) = ( M1 M2 ) ( Sig1 Sig2 ) • M1 M2 possède un profil statistique aisément identifiable • La valeur Sig1 Sig2 aura un profil statistique aléatoire
Détection 1.2.3.4.5.6. Des messages parallèles… Principe général Deux cas de figure pour déterminer si M1 et M2 sont parallèles • (H0) : Les textes ne sont pas parallèles et donc le texte chiffré exhibe un profil statistique totalement aléatoire • (H1) : Les textes sont parallèles et donc Sig1 et Sig2 du fait de la mauvaise gestion de la clé. ( C1C2 ) = ( M1 M2 ) On bâtit alors un test d’hypothèses simples pour décider du parallélisme
Détection 1.2.3.4.5.6. Des messages parallèles… Algorithme de détection Estimateur Z = i=0..n ( C1i C2i 1 ) n étant la taille commune entre C1 et C2 Ckireprésente le bit i du message k • L’estimateur Z compte le nombre de bits valant 0 dans le texte ( C1 C2 ) • Z suit une loi Binomiale de paramètre n et p , où p est la probabilité pour que les bits de ( C1 C2 ) valent 0 .
Détection 1.2.3.4.5.6. Des messages parallèles… Algorithme de détection • Cette loi binomiale peut être approximée lorsque Z par : Une loi normale de paramètres np et ( np ( 1-p ))1/2 (Théorème central limite) • Sous H0 (messages non parallèles), Z suit la loi N( n/2 , n/2 ) • Sous H1(messages parallèles), Z suit la loi N ( np , ( np ( 1-p ))1/2 ) avec p > 1/2
Détection 1.2.3.4.5.6. Des messages parallèles… Algorithme de détection • Le test est alors simple, on choisit un seuil S défini par les probabilités d’erreur que l’on se fixe et la décision s’établit comme suit : • Si Z<S alors les textes ne sont pas parallèles • Si Z>S les textes sont parallèles • Les différentes expériences montrent des pics très importants de l’estimateur Z pour les textes parallèles. La détection est ainsi aisée par la simple présence d’un pic
Détection 1.2.3.4.5.6. Des messages parallèles… Algorithme de détection • Cela ne permet pas de distinguer plusieurs groupes différents de textes parallèles • Mais le parallélisme est une relation d’équivalence, tout groupe de messages parallèles sera une classe d’ équivalence pour cette relation • On compare alors deux à deux nos N textes chiffrés et extrayons les groupes de messages parallèles.
Détection 1.2.3.4.5.6. Des messages parallèles… Résultats À venir…
Décryptement 1.2.3.4.5.6. Construction d’un corpus Exemple connu
Décryptement 1.2.3.4.5.6. Construction d’un corpus Plus généralement, les n-grammes
Décryptement 1.2.3.4.5.6. Construction d’un corpus Pour répondre à nos besoin un tel corpus doit être : • Suffisamment représentatif de la langue cible • De taille raisonnable pour permettre un traitement rapide Nous définissons alors une variable aléatoire discrète X et nous appelons Pi la probabilité que notre événement soit égal à l’élément xi de notre corpus En réalité, il faudra également prendre en compte certains éléments de ponctuations, espacement, …
Décryptement 1.2.3.4.5.6. Principe du décryptement • C1, C2, …, Cp les textes chiffrés que l’on se donne • x1, x2, …, xN les n-grammes de notre corpus • Pour chaque n-gramme Cg1 du premier texte chiffré C1 Hypothèse sur la valeur du n-gramme Mg1 du texte clair • Calcul du n-gramme chiffrant k Mg1 Cg1 • A partir de ce n-gramme chiffrant, calcul des Mgi k Cgi
Décryptement 1.2.3.4.5.6. Principe du décryptement • Réitération du procédé pour chaque élément du corpus Constitution pour chaque n-gramme des textes N p-uplets (Mg1, …, Mgi,… , Mgp) • Ce sont autant de possibilités pour les textes en clair M1, …, Mp • Association aux N p-uplets trouvés les N p-uplets de probabilités (P(Mg1), …, P(Mgi),… , P(Mgp))
Décryptement 1.2.3.4.5.6. Principe du décryptement • Il nous faut alors maximiser le p-uplet de probabilités • Choix d’un bon estimateur Z dépendant de la nature des textes • Z est fonction positive strictement croissante du vecteur de probabilités
Décryptement 1.2.3.4.5.6. Algorithme général Pour chaque n-gramme Cg1 de C1 faire : Z Pour m1 {x0, x1, …, xN} faire l’hypothèse Mg1 m1 Calculer k m1 Cg1 Pour i {2, …, p} Calculer mi k Cgi Calculer P(mi) Fin pour Si Z[P(m1), …, P(mi),… , P(mp)] > Z Z Z[P(m1), …, P(mi),… , P(mp)] Pour i {1, …, p} Mgi mi Fin pour Fin si Fin pour Fin pour
Décryptement 1.2.3.4.5.6. Optimisations et paramètres optimaux – Choix de Z • De nombreux choix possibles de la fonction du cumul des fréquences Utilisation de Z+ i=1..p fia où fi est la fréquence des n-grammes trouvés • Le choix de a dépend de la nature du texte • Pour des textes riches en noms propres et termes techniques rare, le choix optimal est a 0.3
Décryptement 1.2.3.4.5.6. Optimisations et paramètres optimaux – n-grammes • Méthode d’extraction sans recouvrement Exemple d’extraction de 4-grammes • Méthode d’extraction avec recouvrement Exemple d’extraction de 4-grammes Ainsi les n-grammes clairs trouvés se chevauchent (n-1 caractères communs entres deux n-grammes consécutifs)
Décryptement 1.2.3.4.5.6. Résultats expérimentaux À venir…
Trappes ? 1.2.3.4.5.6. • Obtention des textes parallèles par les fichiers temporaires de Word • Création de fichiers temporaires à chaque modification de document Utilisation de PC inspector file recovery
Trappes ? 1.2.3.4.5.6. • Vulnérabilité partagée entre l’OS et le l’application • Deux failles indépendantes non critiques faille critique • Méthode classique pour l’implémentation de trappes • Vulnérabilité présente version après version