Audit et Sécurité Informatique
Ce matériel couvre les concepts fondamentaux des algorithmes à clé publique, des fonctions de hachage, des codes d’authentification de message (MAC) et des signatures numériques.
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, Sécurité Informatique · PDF · 66 pages · 1976
Afficher l'aperçu du document
Ce matériel couvre les concepts fondamentaux des algorithmes à clé publique, des fonctions de hachage, des codes d’authentification de message (MAC) et des signatures numériques. Il s’adresse aux étudiants de troisième année de licence en informatique ou en sécurité des systèmes d’information souhaitant comprendre les mécanismes cryptographiques essentiels pour assurer la confidentialité, l’intégrité et l’authentification des données.
Principes de la Cryptographie asymétrique
La cryptographie symétrique utilise une seule clé partagée entre l’émetteur et le récepteur pour le chiffrement et le déchiffrement. Cette approche présente des faiblesses majeures : si la clé est divulguée, toute la communication est compromise, et elle ne protège pas contre la modification frauduleuse des messages par le récepteur.
La cryptographie asymétrique a été conçue pour résoudre deux problèmes majeurs :
- Distribution des clés : Comment communiquer de manière sécurisée sans passer par un centre de distribution de clés (KDC).
- Signature numérique : Comment vérifier que le message reçu provient bien de l’émetteur légitime et qu’il n’a pas été altéré.
Whitfield Diffie et Martin Hellman ont proposé en 1976 une approche permettant de résoudre ces problèmes.
Les composants clés de la cryptographie asymétrique sont :
- Plaintext : texte clair.
- Ciphertext : texte chiffré.
- Algorithme de cryptage : opérations appliquées au plaintext.
- Algorithme de décryptage : opérations appliquées au ciphertext.
- Clé publique : utilisée pour le chiffrement (confidentialité).
- Clé privée : utilisée pour le déchiffrement (récepteur).
Le chiffrement peut se faire avec la clé publique (pour assurer la confidentialité) ou avec la clé privée (pour assurer l’authentification). La cryptographie asymétrique permet ainsi de garantir à la fois la confidentialité et l’authentification.
Les principales applications des algorithmes à clé publique sont :
- Chiffrement/déchiffrement : l’émetteur chiffre un message avec la clé publique du récepteur.
- Signature numérique : l’émetteur signe un message avec sa clé privée.
- Partage de clé : émetteur et récepteur coopèrent pour partager une clé de session.
Ces algorithmes reposent sur des fonctions à sens unique avec une "trapdoor" (fonction trappe) : faciles à calculer dans un sens, mais difficiles à inverser sans une information secrète (clé privée).
RSA
Développé en 1977 au MIT par Rivest, Shamir et Adleman, RSA est l’algorithme à clé publique le plus utilisé. Le plaintext et le ciphertext sont des entiers compris entre 0 et n-1, où n est un nombre très grand (typiquement 1024 bits).
Le chiffrement d’un bloc M se fait par :
C = M^e mod n
Le déchiffrement par :
M = C^d mod n = (M^e)^d mod n = M^{ed} mod n
La clé publique est la paire (e, n) connue de tous, tandis que la clé privée est la paire (d, n) connue uniquement du récepteur.
Génération des clés RSA
- Choisir deux grands nombres premiers p et q.
- Calculer n = p × q.
- Calculer φ(n) = (p − 1) × (q − 1).
- Choisir un entier e tel que 1 < e < φ(n) et gcd(e, φ(n)) = 1.
- Calculer d tel que d × e ≡ 1 mod φ(n), avec 0 ≤ d < n.
- Publier la clé publique PU = {e, n}.
- Garder la clé privée PR = {d, n} secrète.
Exemple de génération de clés RSA
- Choisir p = 17 et q = 11.
- Calculer n = 17 × 11 = 187.
- Calculer φ(n) = (17 − 1) × (11 − 1) = 16 × 10 = 160.
- Choisir e tel que gcd(e, 160) = 1, par exemple e = 7.
- Calculer d tel que d × 7 ≡ 1 mod 160. Ici, d = 23 car 23 × 7 = 161 = 1 + 160 × 10.
- La clé publique est PU = {7, 187}.
- La clé privée est PR = {23, 187}.
Exponentiation modulaire dans RSA
Le chiffrement et le déchiffrement reposent sur des exponentiations modulo n. Pour optimiser, on utilise la propriété :
(a mod n) × (b mod n) = (a × b) mod n
L’exponentiation peut être réalisée en O(log2 n) multiplications, ce qui est beaucoup plus efficace que la méthode naïve.
Partage de clé de Diffie-Hellman
Le protocole d’échange de clé de Diffie-Hellman permet à deux utilisateurs d’échanger une clé secrète commune, utilisable ensuite pour un chiffrement symétrique. Ce protocole repose sur la difficulté du calcul des logarithmes discrets.
Soient deux entités A et B, un nombre premier q et une base a. A choisit un secret xA, B choisit un secret xB. Ils calculent leurs clés publiques :
yA = a^{xA} mod q
yB = a^{xB} mod q
Ils échangent yA et yB, puis calculent la clé partagée :
KAB = yB^{xA} mod q = yA^{xB} mod q = a^{xA xB} mod q
Exemple d’échange Diffie-Hellman
- q = 353, a = 3
- Alice choisit xA = 97, Bob choisit xB = 233
- Alice calcule yA = 3^{97} mod 353 = 40
- Bob calcule yB = 3^{233} mod 353 = 248
- Alice calcule KAB = yB^{xA} mod 353 = 248^{97} mod 353 = 160
- Bob calcule KAB = yA^{xB} mod 353 = 40^{233} mod 353 = 160
La clé partagée KAB = 160 est utilisée comme clé de session symétrique.
Attaque Man-in-the-Middle
Un attaquant Darth peut intercepter les clés publiques échangées entre Alice et Bob, substituer ses propres clés et établir deux clés partagées distinctes avec chacun. Ainsi, Darth peut intercepter, déchiffrer, modifier et retransmettre les messages sans que Alice et Bob ne s’en aperçoivent.
Les fonctions de hachage
Une fonction de hachage accepte une entrée de longueur variable et produit un condensé (empreinte) de longueur fixe h = H(M). Elle sert principalement à vérifier l’intégrité des données.
Une fonction de hachage cryptographique doit être :
- À sens unique : il est difficile de retrouver l’entrée à partir du condensé.
- Sans collision : il est difficile de trouver deux entrées différentes donnant le même condensé.
Le condensé est beaucoup plus petit que le message original, facile à calculer, et toute modification du message change automatiquement le condensé.
Authentification par fonction de hachage
- Exemple 1 : Chiffrer le message et son condensé avec un cryptosystème symétrique.
- Exemple 2 : Chiffrer uniquement le condensé pour réduire la complexité si la confidentialité n’est pas nécessaire.
- Exemple 3 : Hacher un secret partagé sans chiffrement.
- Exemple 4 : Combiner un secret partagé avec la confidentialité.
Autres utilisations des fonctions de hachage
- Stockage sécurisé des mots de passe : le condensé du mot de passe est comparé au condensé enregistré.
- Détection d’intrusions et de virus : vérifier l’intégrité des fichiers en comparant leur condensé.
- Construction de générateurs pseudo-aléatoires (PRNG) pour générer des clés ou séquences secrètes.
Exigences d’une fonction de hachage
- Entrée de longueur variable, sortie de longueur fixe.
- Efficacité de calcul.
- Résistance à la préimage : impossible de retrouver une entrée à partir du condensé.
- Résistance à la seconde préimage : impossible de trouver une autre entrée produisant le même condensé.
- Résistance aux collisions : impossible de trouver deux entrées différentes avec le même condensé.
- Sortie aléatoire selon des tests standards (NIST).
Paradoxe d’anniversaire
Ce paradoxe illustre que dans un groupe de seulement 23 personnes, la probabilité que deux personnes aient le même anniversaire dépasse 50 %. Appliqué aux fonctions de hachage, cela signifie que la probabilité de collisions augmente rapidement avec le nombre d’entrées hachées.
Formule de probabilité que k messages aient tous des condensés différents :
p_k = (1 - 1/2^b) × (1 - 2/2^b) × ... × (1 - (k-1)/2^b)
où b est la taille en bits du condensé.
Cette propriété est utilisée pour évaluer la sécurité des fonctions de hachage contre les attaques par collision.
Exemple d’impact sur la sécurité Wi-Fi (WEP)
WEP utilise une clé de 104 bits fixe, mais un vecteur d’initialisation (IV) de 24 bits. Par le paradoxe d’anniversaire, il suffit d’environ 4824 échanges pour qu’un IV soit réutilisé, rendant la sécurité effective limitée à 24 bits. WEP a été remplacé par WPA et WPA2 qui améliorent la gestion des IV et utilisent des algorithmes plus sûrs.
Secure Hash Algorithm (SHA)
SHA a été conçu par le NIST et publié en 1993, révisé en 1995 en SHA-1, produisant un condensé de 160 bits. En 2002, SHA-2 a été introduit avec des longueurs de condensé de 256, 384 et 512 bits.
Problèmes et contre-mesures des problèmes de sécurité
Les attaques possibles sur un réseau incluent :
- Divulgation des messages : solution par chiffrement.
- Analyse de trafic : solution par chiffrement.
- Mascarade : insertion de messages frauduleux, solution par authentification.
- Modification de contenu : insertion, suppression, transposition, solution par authentification.
- Modification en temps : retard ou rediffusion (replay), solution par authentification.
- Répudiation de la source : déni d’envoi, solution par signature numérique.
- Répudiation de la destination : déni de réception, solution par signature numérique.
Les techniques d’authentification de message comprennent :
- Fonctions de hachage (condensé comme authentificateur).
- Cryptage du message (ciphertext comme authentificateur).
- MAC (Message Authentication Code) : fonction du message et d’une clé secrète produisant un authentificateur de longueur fixe.
MAC (Message Authentication Code)
Le MAC est une fonction de hachage à clé utilisée lorsque deux entités partagent une clé secrète pour authentifier un message. Il prend en entrée une clé secrète K et un message M, et produit un MAC = C(K, M).
Le MAC est envoyé avec le message. Pour vérifier l’intégrité, on calcule le MAC du message reçu et on le compare au MAC reçu. Un attaquant ne peut modifier le message sans connaître la clé secrète, car il ne peut pas recalculer un MAC valide.
Le MAC n’est pas une signature numérique car il nécessite une clé secrète partagée.
Cryptage authentifié
Pour assurer à la fois confidentialité et authentification, plusieurs approches combinent chiffrement et MAC :
- Hash-then-encrypt : E(K, (M || H(M)))
- MAC-then-encrypt : E(K2, (M || MAC(K1, M)))
- Encrypt-then-MAC : C = E(K2, M), T = MAC(K1, C)
- Encrypt-and-MAC : C = E(K2, M), T = MAC(K1, M)
Le déchiffrement et la vérification sont alors simples et sécurisés.
Signature numérique
La signature numérique est similaire au MAC, mais utilise une clé privée pour chiffrer le condensé du message. N’importe qui connaissant la clé publique de l’émetteur peut vérifier l’intégrité et l’authenticité du message.
Un attaquant souhaitant modifier un message doit connaître la clé privée de l’émetteur, ce qui est difficile.
Les trois propriétés essentielles d’une signature numérique sont :
- Vérification de l’auteur, du temps et de la date du document signé.
- Authentification du contenu au moment de la signature.
- Possibilité de vérification par une tierce partie pour résoudre les litiges.
Modèle général de la signature numérique
Le message est d’abord condensé par une fonction de hachage, puis ce condensé est chiffré avec la clé privée de l’émetteur pour produire la signature. Le destinataire déchiffre la signature avec la clé publique de l’émetteur et compare le condensé obtenu au condensé calculé du message reçu.
Glossaire des termes clés
- Algorithme asymétrique : Algorithme utilisant une paire de clés (publique et privée) pour chiffrement et déchiffrement.
- Clé publique : Clé accessible à tous, utilisée pour chiffrer ou vérifier une signature.
- Clé privée : Clé secrète, utilisée pour déchiffrer ou signer un message.
- Condensé (digest) : Résultat d’une fonction de hachage, empreinte numérique du message.
- Fonction à sens unique : Fonction facile à calculer dans un sens, difficile à inverser.
- MAC (Message Authentication Code) : Code d’authentification produit à partir d’un message et d’une clé secrète.
- Paradoxe d’anniversaire : Phénomène statistique montrant la probabilité élevée de collisions dans un ensemble limité.
- RSA : Algorithme de cryptographie asymétrique basé sur la factorisation de grands nombres premiers.
- Signature numérique : Chiffrement du condensé d’un message avec une clé privée pour authentification.
- SHA (Secure Hash Algorithm) : Famille de fonctions de hachage cryptographiques standardisées.
Points clés à retenir
- La cryptographie asymétrique résout les problèmes de distribution de clés et d’authentification.
- RSA est un algorithme fondamental basé sur la factorisation de grands nombres premiers.
- Le protocole Diffie-Hellman permet un échange sécurisé de clé de session.
- Les fonctions de hachage garantissent l’intégrité des messages et sont résistantes aux collisions.
- Le paradoxe d’anniversaire montre la nécessité de condensés suffisamment longs pour éviter les collisions.
- Les MAC fournissent une authentification basée sur une clé secrète partagée.
- La signature numérique assure l’authenticité, l’intégrité et la non-répudiation des messages.
Commentaires
Aucun commentaire pour le moment. Posez la première question.