Cryptographie - 2
Plan Primalité RSA Cryptographie à courbes elliptiques Les modes d’opération Les tailles de clé
Primalité Rappel : un nombre est dit premier s’il n’est divisible que par lui-même ou par 1 De nombreux problèmes en cryptographie utilisent les nombres premiers et la factorisation des nombres en facteurs premiers (RSA, …) Il est donc important de pouvoir déterminer si un nombre est premier Méthode classique : crible d’Eratosthene (division par les nombres premiers)
Primalité – suite Avec 256 bits : 2256 => 77 chiffres décimaux Plus grand nombre premier (2006): 232 582 657-1 : 9 808 358 chiffres décimaux
Test de primalité de Fermat Le petit théorème de Fermat affirme que si p est un nombre premier et et si a est premier avec p, alors ap-1 - 1 est divisible par p. corollaire :pour tout a entier et p premier, alors a p - a est un multiple de p. Ceci peut être aussi écrit a p-1 1 (p) Le programme de chiffrage PGP utilise cette propriété pour examiner si les grands nombres aléatoires qu'il choisit sont premiers. Il examine les valeurs que nous appellerons x en utilisant quatre valeurs de a (appelées témoins) en employant la formule ci-dessus. Ces quatre valeurs sont 2, 3, 5 et 7, les quatre premiers nombres premiers. Si 1 2x-1 3x-1 5x-1 7x-1 (x) alors nous savons que le nombre x est probablement premier
RSA: Chiffrement et déchiffrement Chiffrement (publique) La clé publique est un couple d'entiers: K = (e, n) Le chiffrement se fait au moyen de l'élévation à la puissance e modulo n: EK (M) = Me mod n, Déchiffrement (secrète) La clé secrète est un couple d'entiers: k = (d, n) Le déchiffrement se fait au moyen de l'élévation à la puissance d modulo n: Dk (M) = Md mod n
RSA - Détermination des clefs – 1 Détermination de n Trouver deux entiers premiers p et q très grands: Calculer n = p q p et q doivent rester secrets : La sécurité du système repose sur la difficulté de factoriser un grand entier n en deux entiers premiers p et q. n doit avoir un longueur supérieure à 512 bits. p et q doivent vérifier diverses autres conditions. Détermination de e Calculer z = (p-1) (q-1) Choisir un entier e premier avec z. La clé publique est (e, n)
RSA - Détermination des clefs – 2 3. Détermination de d Choisir un entier d tel que : e d =1 mod z (d inverse de e dans l'arithmétique mod z) La clé privée est ( d , n )
RSA : Inversibilité -1 Fonction d'Euler φ(n) = (p-1)(q-1) Pour n entier, z = φ(n) est le nombre d'entiers premiers avec n. si n est premier, φ(n) = n-1 si n = p.q avec p et q premiers, φ(n) = (p-1)(q-1) Théorème d'Euler Si a et n sont premiers entre eux, a φ(n) mod n = 1
RSA : Inversibilité - 2 Pourquoi RSA marche Dk(EK (M)) = ((M)e mod n)d mod n = (Me) d mod n = Me.d mod n Mais on a choisi e.d = 1 mod z Donc, il existe un entier j tel que e.d = j z + 1 Me.d = Mj.z M mod n = M mod n En effet, d’après le théorème d’Euler : Mj.z mod n = (Mz)j mod n = (1)j = 1
Exemple - (B. Schneier) 1) Soit deux entiers premiers p =47,q =71 n = p.q = 3337 2) z= (p-1)(q-1)= 46 . 70 = 3220 Choisissons e = 79 (premier avec n) 3) Calcul de l'inverse de e modulo z Une solution possible : le théorème d'Euler eφ(n) = e eφ(n)-1 mod z = 1 mod z Donc d = e-1 = eφ(n)-1 mod z Numériquement 7978 (mod 3220) = 1019
Exemple - (B. Schneier)- Suite 4) Pour chiffrer M = 6882326879666683 Décomposons M en blocs dont la valeur est inférieure à n= 3337 => Des blocs de 3 chiffres M= 688 232 687 966 668 3 Chiffrer 688: 68879 mod 3337 = 1570 E(M) = 1570 2756 2091 2276 2423 158 Déchiffrer 1570:15701019 mod 3337 = 688
Cryptographie à courbes elliptiques ECC (Elliptic Curve Cryptography) Les courbes elliptiques, peuvent être utilisées pour des opérations asymétriques comme des échanges de clés sur un canal non-sécurisé ou un chiffrement asymétrique, => cryptographie sur les courbes elliptiques. (N. Koblitz et V. Miller - 1985). permet d'utiliser des clés plus courtes qu'avec les systèmes fondés sur le problème de la factorisation comme RSA. De plus l'ECC procure un niveau de sécurité équivalent ou supérieur aux autres méthodes.
Cryptographie à courbes elliptiques - 2 La résistance d'un système fondé sur les courbes elliptiques repose sur le problème du logarithme discret dans le groupe correspondant à la courbe elliptique. théorie complexe et relativement récente. de nombreux brevets sont déposés : incertitudes sur le développement. une clé (=taille du corps de base) de 200 bits pour les courbes elliptiques est plus sûre qu'une clé de 1024 bits pour le RSA. les calculs sur les courbes elliptiques ne sont peu compliqués à réaliser, => avantage pour les cartes à puces (puissance limitée) et où la taille de la clé influe beaucoup sur les performances.
Les modes d’opération C’est le mode opératoire du traitement des blocs clairs et chiffrés en cryptographie symétrique par blocs. Il en existe plusieurs : Dictionnaire de codes (Electronic Code Book, ECB) Enchaînement des blocs (Cipher Block Chaining, CBC) Chiffrement à rétroaction (Cipher Feedback, CFB) Chiffrement à rétroaction de sortie (Output Feedback, OFB) Chiffrement basé sur un compteur (CounTeR, CTR) Chiffrement avec vol de texte (CipherText Stealing, CTS)
Dictionnaire de codes (Electronic Code Book, ECB) Le mode le plus simple. Le message à chiffrer est subdivisé en plusieurs blocs qui sont chiffrés séparément les uns après les autres. 2 blocs avec le même contenu seront chiffrés de la même manière, on peut donc tirer des informations à partir du texte chiffré en cherchant les séquences identiques. On obtient dès lors un « dictionnaire de codes » avec les correspondances entre le clair et le chiffré d'où le terme codebook. fortement déconseillé dans toute application cryptographique.
Enchaînement des blocs (Cipher Block Chaining, CBC) on applique sur chaque bloc un ‘OU exclusif’ avec le chiffrage du bloc précédent avant qu’il soit lui-même chiffré. Utilisation d’un vecteur d’initialisation
CBC
Chiffrement à rétroaction (Cipher Feedback, CFB) le flux de clé est obtenu en chiffrant le précédent bloc chiffré. CFB est un chiffrement par flot. il ne nécessite que la fonction de chiffrement, ce qui le rend moins cher à câbler ou programmer pour les algorithmes ayant une fonction de chiffrement différente de la fonction de déchiffrement (exemple: AES).
Chiffrement à rétroaction de sortie (Output Feedback, OFB) Dans ce mode, le flux de clé est obtenu en chiffrant le précédent flux de clé. mêmes avantages que CFB. possible de le précalculer en chiffrant successivement la clé. Il n'est donc sûr que si la fonction de chiffrement alliée à la clé forment une bonne suite aléatoire.
Chiffrement basé sur un compteur (CounTeR, CTR) le flux de clé est obtenu en chiffrant les valeurs successives d’un compteur. Présente des avantages, car il permet le chiffrement par flot, est précalculable, permet un accès aléatoire aux données, est parallélisable et n'utilise que la fonction de chiffrement. Le compteur utilisé peut être une suite pseudo-aléatoire qu'il sera facile de retrouver à partir de la graine (vecteur d'initialisation).
Chiffrement avec vol de texte (CipherText Stealing, CTS) Dans le chiffrement par blocs (ECB, CBC, etc.), les deux derniers blocs sont partiellement combinés de façon à obtenir un message de même taille. Ici, exemple de CTS opérant sur un chiffrage en mode CBC Notons que les deux derniers blocs sont échangés et combinés en partie, ce qui nécessitera de les obtenir tous les deux pour en décrypter un. CTS n'est pas un mode de chiffrage par flot, mais permet d'éviter l'utilisation de bourrage dans les chiffrements par blocs, et donne une taille de message crypté égale à la taille du message clair. Il est très utilisé dans les protocoles ou formats ne supportant pas une taille quelconque
Taille clés Cryptographie symétrique : Fonction hash : au moins 128 bits. Fonction hash : au moins 160 bits. Cryptographie asymétrique : Type RSA : au moins 768 bits. Courbes elliptiques : 180 bits.