Audit et Sécurité Informatique
Ce matériel couvre les fondamentaux de la cryptographie et de la cryptanalyse, destiné aux étudiants de licence en informatique ou sécurité informatique. Il présente les différents types d’algorithmes de chiffrement, les protocoles d’attaque, ainsi que des exemples concrets comme le DES et l’AES, en insistant sur les modes de cryptage par bloc.
D'après le document Audit et Sécurité Informatique
Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.
Document source
Cryptographie et Cryptanalyse · PDF · 95 pages · 1918
Afficher l'aperçu du document
Ce matériel couvre les fondamentaux de la cryptographie et de la cryptanalyse, destiné aux étudiants de licence en informatique ou sécurité informatique. Il présente les différents types d’algorithmes de chiffrement, les protocoles d’attaque, ainsi que des exemples concrets comme le DES et l’AES, en insistant sur les modes de cryptage par bloc.
Cryptographie et Cryptanalyse
La cryptographie est la science des messages secrets, qui étudie les méthodes de chiffrement permettant de convertir un message original (plaintext) en un message chiffré (ciphertext). Le déchiffrement est le processus inverse. La cryptanalyse, quant à elle, étudie les techniques pour casser ces algorithmes, souvent dans le but de retrouver la clé secrète utilisée.
Les algorithmes de chiffrement se classent selon :
- Le nombre de clés utilisées : cryptosystème à clé privée (symétrique) avec une seule clé, ou à clé publique (asymétrique) avec deux clés.
- Le type d’opération : substitution, transposition, ou produit des deux.
- La manière dont le plaintext est traité : par blocs (block cipher) ou en flux (stream cipher).
Le cryptage symétrique, aussi appelé cryptage conventionnel, utilise une seule clé secrète partagée entre émetteur et récepteur. C’est le type de cryptage le plus répandu.
Protocole d’attaque cryptographique général
Les attaques cryptographiques peuvent être classées selon les informations disponibles à l’attaquant :
- Ciphertext-only attack (COA) : l’attaquant ne dispose que du texte chiffré.
- Known-plaintext attack (KPA) : l’attaquant connaît des paires plaintext/ciphertext.
- Chosen-plaintext attack (CPA) : l’attaquant peut choisir des plaintexts et obtenir leur ciphertext.
- Chosen-ciphertext attack (CCA) : l’attaquant peut choisir des ciphertexts et obtenir leur plaintext.
Les attaques peuvent aussi exploiter des faiblesses physiques, appelées attaques par canal auxiliaire (Side Channel Attack) :
- Mesure du temps de cryptage/décryptage.
- Fuites électromagnétiques.
- Analyse du bruit acoustique du processeur.
- Analyse de la consommation d’énergie.
Après collecte d’informations, l’étape "off-line" consiste à analyser et exploiter ces données :
- Attaque à force brute : essayer toutes les clés possibles.
- Attaque statistique : analyse des fréquences des lettres.
- Attaque algébrique : exploitation de linéarités dans le cryptosystème.
- Cryptanalyse linéaire : approximation linéaire de l’algorithme.
- Cryptanalyse différentielle : étude des différences entre entrées et sorties.
Algorithmes de substitution
Chiffre de César
Le plus simple des algorithmes de substitution consiste à décaler chaque lettre du plaintext de k positions dans l’alphabet (modulo 26). Par exemple, avec k = 3 :
c = E(k, p) = (p + k) mod 26 p = D(k, c) = (c − k) mod 26
Exemple :
Plaintext : meet me after the toga party
Ciphertext : PHHW PH DIWHU WKH WRJD SDUWB
Une attaque par force brute consiste à essayer les 26 décalages possibles.
Chiffre monoalphabétique
Chaque lettre du plaintext est remplacée arbitrairement par une autre lettre selon une clé de longueur 26. Par exemple :
Plain : a b c d e f g h i j k l m n o p q r s t u v w x y z Cipher: D K V Q F I B J W P E S C X H T M Y A U O L R G Z N
Exemple :
Plaintext : if we wish to replace letters
Ciphertext : WI RF RWAJ UH YFTSDVF SFUUFYA
La sécurité repose sur le nombre de clés possibles : 26! ≈ 4 × 10^26, mais l’analyse fréquentielle permet de casser ce chiffrement en exploitant la redondance du langage naturel.
Exemple de cryptanalyse monoalphabétique
Pour le ciphertext :
UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXU
DBMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSV
PQUZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPF UPZHMDJUDTMOHMQ
On compte la fréquence des lettres, on identifie des correspondances probables (P et Z pour e et t), puis on déduit progressivement le plaintext :
It was disclosed yesterday that several informal but direct contacts have been made with political representatives of the viet cong in moscow
Algorithme Playfair
Le Playfair chiffre des paires de lettres (diagrammes) simultanément, augmentant la complexité par rapport au monoalphabétique. Il utilise une matrice 5×5 construite à partir d’un mot-clé, où les lettres I et J sont confondues.
Exemple de matrice avec le mot-clé MONARCHY :
M O N A R C H Y B D E F G I K L P Q S T U V W X Z
Règles de chiffrement :
- Si les deux lettres sont identiques, insérer un 'x' entre elles (ex : balloon → ba lx lo on).
- Si les deux lettres sont sur la même ligne, remplacer chaque lettre par celle à sa droite (enroulement à gauche).
- Si elles sont sur la même colonne, remplacer chaque lettre par celle en dessous (enroulement en haut).
- Sinon, chaque lettre est remplacée par la lettre située à l’intersection de sa ligne et de la colonne de l’autre lettre.
Exemples :
- pq → qs (même ligne)
- mu → cm (même colonne)
- hs → bp (rectangle)
La sécurité est améliorée car il y a 26×26 = 676 diagrammes possibles, rendant l’analyse fréquentielle plus difficile. Cependant, avec suffisamment de paires plaintext/ciphertext, il peut être cassé.
Algorithmes poly-alphabétiques
Ces algorithmes combinent plusieurs alphabets monoalphabétiques pour améliorer la sécurité et rendre l’analyse fréquentielle plus complexe. Ils utilisent une clé pour choisir l’alphabet à appliquer à chaque lettre du plaintext, répétée si nécessaire.
Chiffre de Vigenère
Le chiffre de Vigenère applique plusieurs décalages de César selon une clé K = k1 k2 ... kd. Chaque lettre du plaintext est chiffrée avec le décalage spécifié par la lettre correspondante de la clé, répétée sur toute la longueur du message.
Exemple :
Clé : deceptive
Le plaintext est écrit, puis la clé répétée en dessous, chaque lettre du plaintext est chiffrée avec le décalage correspondant à la lettre de la clé.
Autokey cipher
Variante du Vigenère où la clé est prolongée par le message lui-même, afin d’avoir une clé aussi longue que le plaintext. Cette méthode peut être cassée par analyse fréquentielle.
Chiffre de Vernam et One Time Pad
Le chiffre de Vernam utilise une clé aussi longue que le message. Le One Time Pad (OTP), amélioration proposée par Joseph Mauborgne, utilise une clé aléatoire unique pour chaque message, qui n’est jamais réutilisée. Ce système est théoriquement incassable, mais impraticable à cause des difficultés de génération et distribution sécurisée des clés. Il reste utilisé dans des communications top-secrètes.
Algorithmes de transposition
La transposition consiste à permuter les lettres du plaintext sans les remplacer, conservant la fréquence des lettres. Le ciphertext est une réorganisation du plaintext.
Rail Fence Cipher
Le plaintext est écrit en diagonales sur un nombre donné de lignes (profondeur), puis lu ligne par ligne.
Exemple :
Message : meet me after the toga party
Profondeur : 2
Ciphertext : MEMATRHTGPRYETEFETEOAAT
Raw Transposition Cipher
Le plaintext est écrit en lignes dans un rectangle, puis lu colonne par colonne selon un ordre de colonnes donné par la clé.
Product ciphers
Pour améliorer la sécurité, on combine plusieurs algorithmes de substitution et de transposition successivement, rendant la cryptanalyse plus difficile.
Algorithmes de cryptage moderne
Les algorithmes modernes se divisent en deux catégories :
- Stream ciphers : chiffrent le plaintext bit par bit ou octet par octet (ex : Vigenère, Vernam).
- Block ciphers : chiffrent le plaintext par blocs (ex : DES, AES).
La majorité des algorithmes modernes sont des block ciphers.
Stream ciphers
Exemple : Vernam cipher, utilisant une clé aussi longue que le plaintext.
One Time Pad (OTP) est une amélioration du Vernam, avec une clé aléatoire unique par message, incassable mais difficile à utiliser en pratique.
Block ciphers
Un algorithme de chiffrement par bloc prend un bloc de n bits du plaintext et le transforme en un bloc de n bits de ciphertext. Le cryptage doit être réversible (bijection).
Claude Shannon a introduit en 1949 les réseaux de substitution-permutation (S-P), base des algorithmes modernes :
- Substitution (S-box) : substitution non linéaire des bits.
- Permutation (P-box) : réarrangement des bits pour diffusion.
Ces opérations assurent :
- Confusion : complexité de la relation entre clé et ciphertext.
- Diffusion : chaque bit du plaintext affecte plusieurs bits du ciphertext (effet avalanche).
Exemple : DES (Data Encryption Standard)
Standard de chiffrement adopté par le NIST en 1977, utilisé jusqu’en 2001. Le DES chiffre des blocs de 64 bits avec une clé de 56 bits.
Le chiffrement et le déchiffrement utilisent les mêmes étapes avec la même clé.
Permutation initiale (IP)
Le bloc de 64 bits est réarrangé selon une permutation fixe avant les rondes de chiffrement.
Structure d’une ronde DES (structure de Feistel)
Le bloc est divisé en deux moitiés L et R de 32 bits :
Li = Ri−1 Ri = Li−1 ⊕ F(Ri−1, Ki)
La fonction F prend la moitié droite R et une clé intermédiaire Ki de 48 bits :
- Expansion de R de 32 à 48 bits (permutation E).
- XOR avec la clé Ki.
- Passage dans 8 S-box, chacune transformant 6 bits en 4 bits (total 32 bits).
- Permutation finale P.
Les S-box
Chaque S-box sélectionne une ligne selon les bits 1 et 6 et une colonne selon les bits 2 à 5, produisant une sortie de 4 bits. Exemple :
S(18 09 12 3d 11 17 38 39) = 5fd25e03
Key schedule (génération des clés intermédiaires)
La clé originale de 56 bits est divisée en deux moitiés de 28 bits, puis subit 16 rotations circulaires à gauche (1 ou 2 bits selon la ronde), suivies de permutations (PC2) pour produire les 16 clés de 48 bits utilisées dans chaque ronde.
Sécurité et améliorations
L’espace clé de DES est de 2^56 ≈ 7.2 × 10^16. Avec des machines modernes, une attaque par force brute est réalisable en un temps raisonnable, rendant DES vulnérable.
Des attaques plus avancées comme la cryptanalyse différentielle, linéaire et les attaques sur clés liées ont été développées.
Cryptage multiple avec DES
Pour renforcer la sécurité, on chiffre plusieurs fois :
- Double DES : chiffrement deux fois avec deux clés différentes (112 bits). Vulnérable à l’attaque Meet-in-the-middle.
- Triple DES (3DES) : chiffrement trois fois avec deux ou trois clés (112 ou 168 bits). Plus sécurisé et utilisé dans des applications comme PGP et S/MIME.
Attaque Meet-in-the-middle
Pour le double chiffrement C = E(K2, E(K1, P)) :
- Chiffrer Pa avec toutes les clés K1 possibles, stocker les résultats X = E(K1, Pa).
- Déchiffrer Ca avec toutes les clés K2 possibles, vérifier si D(K2, Ca) correspond à une valeur X stockée.
- Si correspondance, vérifier avec une deuxième paire (Pb, Cb).
Cette attaque a une complexité de 2 × 2^56, bien inférieure à la force brute 2^112.
AES (Advanced Encryption Standard)
Remplaçant du DES adopté en 2001, AES chiffre des blocs de 128 bits avec des clés de 128, 192 ou 256 bits, et un nombre de rondes variant (10, 12, 14). Il utilise des opérations XOR, substitutions via S-box, et un mixage basé sur l’arithmétique du corps de Galois.
AES est largement utilisé dans les communications sécurisées et considéré comme sûr à ce jour.
Modes de cryptage par bloc
Le NIST définit cinq modes principaux pour appliquer un algorithme de chiffrement par bloc :
- ECB (Electronic Codebook) : chaque bloc est chiffré indépendamment.
- CBC (Cipher Block Chaining) : chaque bloc est XORé avec le bloc chiffré précédent avant chiffrement.
- CFB (Cipher Feedback) : transforme un algorithme de bloc en algorithme de flux avec rétroaction.
- OFB (Output Feedback) : similaire à CFB mais le feedback est indépendant du message.
- CTR (Counter) : chiffre un compteur et le combine avec le plaintext.
ECB
Chaque bloc Pi est chiffré indépendamment :
Ci = EK(Pi)
Avantages : simple, adapté aux messages courts.
Limites : répétitions dans le plaintext apparaissent dans le ciphertext, vulnérable à l’analyse, peu adapté aux images ou données redondantes.
CBC
Chaque bloc ciphertext dépend de tous les blocs précédents :
Ci = EK(Pi XOR Ci−1) C−1 = IV (vecteur d'initialisation)
Avantages : meilleure diffusion, modification d’un bloc affecte tous les suivants.
Limites : nécessite un IV connu des deux parties, qui doit être unique et protégé contre les modifications.
CFB
Le message est traité en flux de bits ou octets :
Ci = Pi XOR EK(Ci−1) C−1 = IV
Avantages : adapté au cryptage en temps réel, flux de données.
Limites : propagation des erreurs sur plusieurs blocs.
OFB
Le feedback est indépendant du message :
Oi = EK(Oi−1) Ci = Pi XOR Oi O−1 = IV
Avantages : erreurs ne se propagent pas, peut être calculé à l’avance.
Limites : IV doit être unique, synchronisation nécessaire entre émetteur et récepteur.
CTR
Chiffre un compteur i :
Oi = EK(i) Ci = Pi XOR Oi
Avantages : parallélisable, adapté aux réseaux haut débit.
Glossaire des termes clés
- Plaintext : message original non chiffré.
- Ciphertext : message chiffré.
- Chiffrement (cryptage) : transformation du plaintext en ciphertext.
- Déchiffrement (décryptage) : transformation inverse du ciphertext en plaintext.
- Cryptographie : science des méthodes de chiffrement.
- Cryptanalyse : étude des techniques pour casser les chiffrement.
- Cryptologie : ensemble de la cryptographie et de la cryptanalyse.
- Clé secrète : information utilisée pour chiffrer et déchiffrer.
- Substitution : remplacement des lettres ou bits du message.
- Transposition : permutation de l’ordre des lettres ou bits.
- Block cipher : chiffrement par blocs de taille fixe.
- Stream cipher : chiffrement bit par bit ou octet par octet.
- S-box : boîte de substitution non linéaire dans un algorithme.
- P-box : boîte de permutation dans un algorithme.
- Confusion : complexification de la relation entre clé et ciphertext.
- Diffusion : propagation de l’influence de chaque bit du plaintext sur le ciphertext.
- Force brute : attaque consistant à tester toutes les clés possibles.
- Vecteur d’initialisation (IV) : donnée initiale utilisée pour certains modes de chiffrement.
Points clés à retenir
- La cryptographie symétrique utilise une seule clé secrète partagée pour chiffrer et déchiffrer.
- Les attaques cryptographiques varient selon les informations disponibles et peuvent exploiter des faiblesses théoriques ou physiques.
- Les algorithmes de substitution simples sont vulnérables à l’analyse fréquentielle.
- Le Playfair chiffre des paires de lettres, augmentant la complexité par rapport au monoalphabétique.
- Les algorithmes poly-alphabétiques comme Vigenère améliorent la sécurité en combinant plusieurs alphabets.
- Le One Time Pad est théoriquement incassable mais peu pratique.
- Les algorithmes de transposition réarrangent les lettres sans les remplacer, souvent combinés avec des substitutions.
- Les algorithmes modernes sont principalement des block ciphers, utilisant des réseaux de substitution-permutation pour assurer confusion et diffusion.
- DES, bien que largement utilisé, est aujourd’hui vulnérable, d’où l’apparition de 3DES et AES.
- Les modes de cryptage par bloc (ECB, CBC, CFB, OFB, CTR) permettent d’adapter les algorithmes aux besoins spécifiques des applications.
Commentaires
Aucun commentaire pour le moment. Posez la première question.