INF4420: Sécurité Informatique Cryptographie I
Aperçu du module – Cryptographie (3 sem.) Définitions et histoire Notions de base (théorie de l'information) Chiffrement Méthodes "classiques" Cryptanalyse de base Chiffrement symétrique Chiffrement à clé publique Autres primitives cryptographiques Principes d'applications Risques résiduels RÉFÉRENCES : Stinson, « Cryptography : Theory and Practice », chap. 1,2,3,4. Bishop, « Computer Security : Art and Science », chap. 9,10,11,32.
Aperçu – Crypto I (aujourd’hui) Définition et nomenclature Historique Modèle de Shannon Source d’information Codage et compression Entropie et redondance Chiffrement Chiffrement et codage Algorithmes « classiques » Cryptanalyse de base Force brute Reconnaissance de texte Analyse de fréquences Texte et cryptogramme choisi
Définitions et terminologie Un peu de grec classique… Kryptos = "caché", "secret" Graphos = écriture => Cryptographie => Cryptanalyse Logos = "savoir" => Cryptologie Stéganos = "couvert", "étanche" => Stéganographie Un peu d'américain… Alice Bob Ève (Charlie) Encrypt and Decrypt Un peu de français !!! Chiffrer et déchiffrer Coder et décoder Crypter et décrypter (!) Irène !!! (l'ingénieure) Un peu de math…
Les trois ères de la cryptographie Historique Les trois ères de la cryptographie « Classique » Jusqu’au masque jettable « Moderne » Crypto électro-mécanique et WWII Guerre froide … Crypto électronique et informatique - DES « Âge d’or » Chiffrement à clé publique Cryptologie et autres tâches cryptographiques Internet et enjeux commerciaux
Modèle de Shannon Source Codeur Décodeur Récepteur Canal Source Codage Alice Bob Irène Source Produit des symboles d'un "alphabet" (sigma) Fonctionne "sur demande" (d'où le "bouton") Codage Regroupe et transforme les symboles de la source dans un format pouvant être transmis ou sauvegardé Canal Peut introduire du bruit Transmission peuvent être interceptés Décodage Permet de reconstruire le message original (séquence des symboles de source)
Source d'informations Alphabet Contrôle Principe de la boîte noire Ensemble discret fini = {1, …, M} Par convention taille de , || = M Contrôle un "bouton" qui permet d'obtenir un symbole à la fois Principe de la boîte noire Autre que le bouton et un nombre petit d'observations (symboles), on ne peut rien savoir sur le contenu ou fonctionnement de la source (sauf peut-être Alice, mais pas Ève, Irène ou Bob). Pourquoi cette abstraction ?? Permet de discuter de l'efficacité du codage (théorie de l'information) Permet d'analyser correctement la résistance à certaines menaces Algorithmes de chiffrement Choix de mots de passes et phrases de passe
Source par échantillonnage Sources dérivées Source par bloc Étant donné une source S, et un entier positif b, la source Sb représente la source obtenue en encapsulant S par une boîte qui mets b symboles de S dans un tampon ("buffer") avant de les sortir à l'extérieur Noter que l'alphabet de Sb est maintenant b Source par échantillonnage Étant donné une source S, et un entier positif b, la source S1/b représente la source obtenue en encapsulant S par une boîte qui émet seulement le 1er symbole de chaque b symboles sortie de S dans L'alphabet de S1/b est le même que S, soit Ajouter dessein
Modélisation de la source Interprétations "Déterministe" La boîte "connaît" à l'avance toute la séquence de symboles (potentiellement infinie…) Probabiliste La boîte choisit les symboles au fur et à mesure selon un distribution de probabilité Processus markovien ou "sans mémoire" : p_i = Prob (S => " i"), 1<i<M e.g. Prob (Sb => " i , j") = pi pj Processus non-markovien Les probabilités de symboles peuvent dépendre des symboles antérieurs sortis de la source…
Codage Translittération Fonction de codage Fonction de décodage Un codage traduit les symboles de source vers un autre "alphabet" = {1, …, N}, Fonction de codage F : , = F(), représente comment le symbole devra être transmis Fonction de décodage F-1: ' = F-1(), si ' ≠ , il n'y a eu une erreur de transmission/codage
Efficacité du codage - Compression Dans certaines circonstances, on voudrait pouvoir coder en utilisant moins de bande passante, p.ex. tel que N < M Efficacité du code est mesuré en bits transmis par chaque symbole de source émis 1er Théorème de Shannon 1. Efficacité maximum d'un code compresseur est approx. égale à H(S) 2. Il existe un code compresseur (sans erreur) avec efficacité H(S)+1
Entropie de Shannon Définitions Propriétés H(S) = i pi log2 1/pi Q: Comment est-ce qu'on calcule pi si la source n'est pas Markovienne? A: En utilisant les fréquences de symboles, calculés sur la chaîne infinie… Propriétés = 0,1 Prob (S="0") = Prob (S="1") = 1/2 => H(S) = 1 bit (valeur maximal) Prob (S="1") = 1; Prob (S="0") = 0 => H(S) = 0 bit (valeur minimal) arbitraire, || = N Valeur minimale H(S) = 0 , quand Prob (S= )=1 pour un donné Valeur maximale H(S) = log N bits, quand Prob (S= i) = Prob (S= j), i , j Source markovienne Si S est markovien, alors H(Sb) = b*H(S) Sinon, en général H(Sb) b*H(S)
Interprétation de l’entropie d’une source Interprétation de H(S) 1er théorème dit que chaque symbole émit par S peut être codé individuellement avec en moyenne H(S) bits Mais si, on permet que le codage regroupe 2 lettres à la fois ? Alors, par 1er théorème on peut coder chaque digramme (2 symboles) avec H(S2) bits, soit H(S2)/2 bits par symbole Taux de compression Sans compression log N bits par symbole Avec compression par bloc de b lettres H(Sb)/b bits par lettre Taux de compression =
Entropie du langage de la source À cause des propriétés de H, plus b est grand plus le taux de compression sera élevé, jusqu’à une certaine limite On définit l’entropie HL du langage associé à la source S (langage = ensemble de chaînes que S génère) qui représente le « minimum » de bits par symboles qu’il sera nécessaire pour coder des chaînes de symboles émises par S, même si on permet de coder par blocs de plusieurs symboles à la fois.
Code correcteur d'erreur Correction d'erreur Code correcteur d'erreur L'introduction de bruit dans le canal est compensé en utilisant code "correcteur d'erreur" t.q. Prob (F-1(') = ) 1, quand ' est le symbole reçu via le canal L'efficacité du code correcteur d'erreur Dépend du niveau de bruit introduit par le canal celui-ci peut être mesuré avec l'entropie de Shannon Se mesure également en nombre de bits nécessaires par symbole de source, pour un code qui corrige "presque toutes les erreurs" 2e Théorème de Shannon Établit le lien entre l'efficacité du code correcteur d'erreur et le niveau de bruit du canal
Modèle de Shannon révisé Ève ' Source Codeur Chiffr. Déchif. Décodeur Récepteur Alice Bob Irène
Modèle de Shannon révisé Ève Peut intercepter impunément tous les mots de codes transmis sur le canal Irène Choisit l'algorithme de chiffrement Détermine la politique de choix et gestion de clés Doit tenir en compte le codage en considérant les caractéristiques de la source (DP, entropie, etc.) en influençant le choix de codage (si possible) en choisissant et adaptant l'algorithme de chiffrement en conséquence (choix de taille de clés, compression/décompression, etc.) Pourquoi : voir TP 1…
Algorithme de chiffrement – Concepts généraux Alphabet Entrée : Sortie : en général , mais peut-être un autre alphabet Fonction de chiffrement Clé de chiffrement = ke ' = E(ke, ) = Ek1 () Fonction de déchiffrement Clé de déchiffrement = kd = D(kd, ') = Dk2() Ne corrige pas les erreurs donc, En général = '
Algorithmes "classiques" mono-alphabétiques Algorithme de César Source texte en caractères latin Codage lettres chiffres de 1 à 26 (20 pour être historiquement exact) Chiffrement x x+3 mod 26 Clés nil Algorithme de décalage Source et codage idem x x + k mod 26 Clés k {1,…,26} Algorithme de substitution Source Idem Codage aucun Chiffrement x (x) Clé (une table de substitution) Algorithme afin Source et codage lettres en chiffres x a x + b mod 26 (a,b) où a, b {1,…,26}
Algorithme de Vigenère Source Texte en caractères latin Codage lettres chiffres de 1 à 26 Clé K = k1 k2 … km , mot/phrase de longueur m Chiffrement xi (xi + k i mod m ) mod 26 C E C I N E S T P A U N E P I P E ... S E X Y S E X Y S E X Y S E X Y S ... 3 5 3 9 14 5 19 20 16 1 21 14 5 16 9 16 5 ... 19 5 24 25 19 5 24 25 19 5 24 25 19 5 24 25 19 ... + 22 10 1 8 7 10 17 19 9 6 19 13 24 21 7 15 24 ... V J A H G J Q S I F S M N U G O X ...
Méthode de cryptanalyse de base Force brute Taille de l’espace de clés Critère de reconnaissance ou succès Patron ou format reconnaissable Le texte « fait du sens » Le texte « marche », e.g. mot de passe, etc. Analyse fréquentielle Établir le tableau des fréquences Connaître les fréquences de la source Codage connu Rétro-ingénierie de l'algorithme de chiffrement: Marche pour les algorithmes de substitution mono-alphabétiques Peut marcher pour les poly-alphabétiques, si fréquences connues Mesure de facilité ENTROPIE !!!! (mais attention : entropie de la source vs. entropie du langage) COMPRÉSSIBILITÉ !!!