Fiche Révision Cybersécurité (Focus 1h30 : Asymétrique, DH & Rôle de RSA)
+ Notions Clés du Cours (pour copie double)
I. Concepts Fondamentaux de Sécurité (Issues du Cours)
1. Scénario de Base & Menaces
Hypothèse : Échanges sur réseau public (tout est visible, interceptable).
Menaces :
Écoute (Confidentialité) : Ex: Wireshark.
Usurpation d'identité (Authentification) :
Homme du Milieu (MitM) : Ex: Ettercap. S'interpose, modifie/lit.
Attaque par Rejeu : Réutiliser des messages interceptés.
2. Authentification : Évolution
Protocole 1 (MDP en clair) : ID + MDP -> Problème : MDP lisible par tous.
Fonction à Sens Unique (FSU) -
y = f(x):yfacile à calculer depuisx.x"impossible" à calculer depuisy(dépend puissance de calcul -> obsolescence).Types :
Fonction de Hachage (
H(x)) : Entrée taille variable -> sortie taille fixe (empreinte).Ex : MD5 (cassé), SHA-1 (faible), SHA-2 (SHA-256, SHA-512), SHA-3.
Propriétés : Résistance préimage, 2nde préimage (collision), différentielle.
Générateur de Nombres Pseudo-Aléatoires (PRNG). Utiliser version "cryptographiquement sûre" (CSPRNG).
Protocole 2 (FSU simple) : ID +
y = H(MDP)-> Problèmes :yconnu, réutilisable si même MDP ailleurs (Rainbow tables).Salage (Salt
r) :Protocole 3 : ID +
y = H(MDP + r)(ouH(r + MDP)ouH(r || MDP || r)...). Le selrest unique par utilisateur/MDP, stocké avecy.Avantage :
yunique même si MDP identiques. Invalide les tables arc-en-ciel généralisées.Précautions Sel : Unique, long, généré aléatoirement à chaque création/modif MDP.
Problème :
y(avecrconnu) peut toujours être rejoué. N'empêche pas attaque par dictionnaire ciblée (mais sur 1 utilisateur).
Hachage Itératif / Fonctions de Dérivation de Clé (KDF) :
Ex: PBKDF2 (Password-Based Key Derivation Function 2), Bcrypt, Scrypt, Argon2.
Principe : Appliquer
H(souvent HMAC-SHAx) de nombreuses fois (citérations).DK = PBKDF2(PRF, Password, Salt, c, dkLen)où PRF est une fonction pseudo-aléatoire (ex: HMAC-SHA256).Stockage : Utilisateur, Sel, Hash issu de PBKDF2, Nombre d'itérations
c.But : Ralentir significativement les attaques par force brute/dictionnaire.
Fonction à Sens Unique à Brèche Secrète (Trapdoor One-Way Function) -
y = f_k(x):yfacile à calculer depuisx.ximpossible à calculer depuisySANS connaître la "brèche" (la clé secrètek).Si
kest connue,x = f_k^(-1)(y)est facile.Base du chiffrement (symétrique et asymétrique).
kest la clé de chiffrement/déchiffrement.
Authentification par Défi-Réponse (Challenge-Response) :
Protocole 5 (Authentification Simple) :
Alice -> Bob : ID_Alice
Bob -> Alice :
r_t(défi aléatoire)Alice -> Bob :
y = f_k(r_t)(réponse, oùkest le secret partagé, ex:H(MDP+sel))Bob vérifie si
y == f_k(r_t).
Avantage : Le secret
k(ou MDP) ne transite pas. Empêche rejeu simple.Problème : Bob ne s'authentifie pas.
Protocole 6 (Authentification Mutuelle) : Les deux s'envoient des défis et des réponses.
Vulnérabilité possible : Attaque par réflexion/oracle si mal conçu (Kévin utilise Bob comme oracle pour répondre au défi d'Alice).
II. Chiffrement Asymétrique (Théorie & RSA)
1. Principes (Rappel)
Deux clés : Publique et Privée.
Confidentialité : Chiffrer avec Publique_Dest -> Déchiffrer avec Privée_Dest.
Signature : Signer (hash) avec Privée_Emetteur -> Vérifier avec Publique_Emetteur. (Authenticité, Intégrité, Non-répudiation).
Usage : Chiffrement de petites données (clés sym.), signatures. Rôle clé pour authentifier DH.
2. Algorithme RSA
a. Génération des Clés (par Alice)
Choisir 2 grands premiers distincts
p, q(secrets).n = p * q(module, public).φ(n) = (p-1) * (q-1)(indicateur d'Euler, secret).Choisir
e(exposant public) :1 < e < φ(n),pgcd(e, φ(n)) = 1. (Souvente=65537).Calculer
d(exposant privé) :d * e ≡ 1 (mod φ(n)). (Inverse multiplicatif modulaire).Clé Publique :
(n, e)Clé Privée :
(n, d)(ou(p, q, d, φ(n)))
b. Chiffrement (Bob envoie M à Alice)
C = M^e % n(où0 ≤ M < n)
c. Déchiffrement (Alice reçoit C)
M = C^d % n
d. Signature (Alice signe h(M))
S = (h(M))^d % n
e. Vérification de Signature (Bob vérifie S sur h(M))
Calculer
(h(M))_verif = S^e % n. Si(h(M))_verif == h(M), signature valide.
Points à Noter pour la Copie Double (RSA) :
Les 5 étapes de génération de clé.
Les formules de chiffrement, déchiffrement, signature, vérification.
Quelles parties sont publiques/privées.
La sécurité repose sur la difficulté de factoriser
n.
III. Protocole d'Échange de Clés Diffie-Hellman (DH)
Objectif : Alice et Bob s'accordent sur une clé secrète partagée
Svia un canal public.
1. Paramètres Publics : p (grand premier), g (primitif de ℤp*)
2. Vérification d'un Élément Primitif g (pour un module p)
Calculer
N = p-1.Trouver tous les diviseurs premiers distincts
q_1, q_2, ..., q_kdeN.Pour chaque
q_i(dei=1àk), calculertest_i = g^(N / q_i) % p.Si TOUS les
test_i ≠ 1, alorsgest un primitif.Ex (TD) :
p=11, N=10. Diviseurs premiers de 10 :2, 5. Testerg=7:7^(10/2) % 11 = 7^5 % 11 = 16807 % 11 = 10 ≠ 17^(10/5) % 11 = 7^2 % 11 = 49 % 11 = 5 ≠ 1Donc, 7 est primitif.
3. Algorithme / Déroulement de l'Échange Standard DH
Acteur |
Secrets Internes |
Calculs Publics |
Échanges |
Calcul Clé Secrète Commune |
|---|---|---|---|---|
Alice |
|
|
|
|
Bob |
|
|
|
|
Tous |
|
Sécurité : Repose sur la difficulté du Logarithme Discret (DLP) : étant
p,g,A, trouveraest dur. Et du Problème DH Calculatoire (CDH) : étantp,g,A,B, trouverg^(ab)%pest dur.Savoir faire les calculs de A, B, S pour des petits nombres.
Savoir retrouver
aoubpar énumération pour petitp.
4. Vulnérabilité : Attaque de l'Homme du Milieu (MitM)
Cause :
AetBne sont pas authentifiés.Scénario : Oscar (secrets
o_A, o_B) s'interpose.Alice calcule
A = g^a % p. Envoie à Oscar (pensant Bob).Oscar calcule
O_A = g^(o_A) % p. Envoie à Bob (se faisant passer pour Alice).Bob calcule
B = g^b % p. Envoie à Oscar (pensant Alice).Oscar calcule
O_B = g^(o_B) % p. Envoie à Alice (se faisant passer pour Bob).
Clés établies :
Alice <-> Oscar :
S_AO = (O_B)^a % p = g^(o_B * a) % p.Bob <-> Oscar :
S_BO = (O_A)^b % p = g^(o_A * b) % p.
Savoir calculer
S_AOetS_BO.
5. Contre-mesure à MitM : DH Authentifié (ADH)
Utilisation de signatures numériques (souvent RSA) sur
AetB, avec certificats X.509.Alice envoie
(A_DH, Sign_RSA_privée_Alice(h(A_DH)), Cert_Alice_RSA_pub).Bob vérifie
Cert_Alice(via AC), puisSign_RSAavec clé publique RSA d'Alice.Idem pour Bob.
Rôle de RSA : Fournir l'authenticité des messages DH, pas la confidentialité de A ou B.
6. Extensions DH (Pertinent pour compréhension)
DHE (Éphémère) :
aetb(et doncA,B,S) sont nouveaux à chaque session. Fournit Perfect Forward Secrecy (PFS) : si la clé privée long terme (ex: RSA de signature) est compromise, les clés de session DH passées ne le sont pas.ECDH / ECDHE : Utilise courbes elliptiques. Mêmes principes, clés plus courtes pour même sécurité.
IV. Notions du Cours sur le Chiffrement Symétrique (Très bref, pour contexte)
Symétrique = Fonction à Sens Unique à Brèche Secrète
f_k(x)oùkest la même clé pour chiffrer et déchiffrer.Types :
Par Flots (Stream Cipher) : Chiffre bit/octet par bit/octet. Ex: ChaCha20.
Utilise un PRNG pour étendre la clé en un flux keystream.
C = P ⊕ Keystream.
Par Blocs (Block Cipher) : Chiffre blocs de taille fixe (ex: AES 128 bits = 16 octets).
AES (Advanced Encryption Standard) : Standard actuel. Clés de 128, 192, 256 bits.
Architecture SPN (Substitution-Permutation Network). Opérations dans Corps de Galois GF(28).
Tours multiples avec opérations :
SubBytes(S-Box, non-linéaire),ShiftRows(permutation),MixColumns(diffusion, multiplication matricielle dans GF(28)),AddRoundKey(XOR avec sous-clé).
Nécessite un Mode Opératoire (ex: ECB, CBC, GCM) et souvent du Bourrage (Padding).
ECB :
C_i = f_k(P_i). NON SÉCURISÉ (mêmes P_i -> mêmes C_i).CBC :
C_i = f_k(P_i ⊕ C_(i-1))(avecC_0 = IV). Lie les blocs.GCM (Galois/Counter Mode) : Mode AEAD (Authenticated Encryption with Associated Data). Fournit confidentialité ET authenticité/intégrité. Prévient attaques type Padding Oracle.
Protocole ECDH (Elliptic Curve Diffie-Hellman) - Échange de Clés
1. Paramètres Publics (Communs et connus de tous)
Courbe Elliptique (E) : Définie par une équation (ex:
y² = x³ + ax + b) sur un corps fini (ex:F_poùpest un grand nombre premier).Point de Base (G) : Un point public, fixe et bien connu sur la courbe E, avec un grand ordre. C'est l'équivalent du générateur
gdans le DH classique.(Note : Le "fp" que tu mentionnes dans le schéma du prof est probablement une référence au corps fini
F_psur lequel la courbe est définie, ou aux paramètres de la courbe qui incluent ce corps fini et le point de base G.)
2. Schéma de l'Échange ECDH
Acteur |
Action |
Calculs (Opérations sur la Courbe Elliptique) |
Envoi / Réception |
|---|---|---|---|
Alice |
1. Choisit un entier secret privé aléatoire |
||
2. Calcule son point public |
|
||
3. Envoie |
|
||
Bob |
1. Choisit un entier secret privé aléatoire |
||
2. Calcule son point public |
|
||
3. Envoie |
|
||
Alice |
4. Reçoit |
|
Reçoit |
Bob |
4. Reçoit |
|
Reçoit |
Explication des calculs
d * P(Multiplication scalaire d'un point) :Cela signifie "additionner" le point
Pà lui-mêmedfois, en utilisant l'opération d'addition spécifique définie pour les points sur la courbe elliptique.d_A * (d_B * G) = (d_A * d_B) * Gd_B * (d_A * G) = (d_B * d_A) * GPuisque
d_A * d_B = d_B * d_A, les deux calculent le même pointS_Psur la courbe.
3. La Clé Secrète Partagée Finale
Le point
S_P = ( (d_A * d_B) * G )est un point sur la courbe, ayant des coordonnées (x, y).La clé secrète partagée finale
K(utilisée ensuite pour un chiffrement symétrique) n'est généralement pas le pointS_Plui-même, mais est dérivée de ce point.Souvent, on utilise la coordonnée
xdu pointS_P(et parfoisy) comme entrée d'une Fonction de Dérivation de Clé (KDF) pour produireK.Ex:
K = KDF(coordonnée_x(S_P))
4. Comparaison ECDH vs DH Classique
Caractéristique |
DH Classique (sur ℤp*) |
ECDH (sur Courbes Elliptiques) |
|---|---|---|
Paramètres Publics |
|
Paramètres de la Courbe |
Secrets Privés |
Entiers |
Entiers (scalaires) |
Valeurs Publiques Échangées |
Nombres entiers |
Points sur la courbe |
Opération Principale |
Exponentiation modulaire ( |
Multiplication scalaire d'un point ( |
Secret Partagé (Intermédiaire) |
Nombre entier |
Point sur la courbe |
Clé Finale Dérivée |
Souvent |
Toujours |
Problème Difficile Sous-jacent |
Logarithme Discret (DLP) : trouver |
Logarithme Discret sur Courbes Elliptiques (ECDLP) : trouver |
Taille des Clés / Valeurs (pour sécurité équivalente) |
Plus grandes (ex: 2048-3072 bits) |
Beaucoup plus petites (ex: 256-384 bits) |
Efficacité |
Moins efficace (calculs plus lourds) |
Plus efficace (calculs plus rapides pour même sécurité) |
5. Points Clés de Différence et Caractéristiques d'ECDH
Nature des Objets Mathématiques :
DH Classique : Opère sur des nombres entiers dans un groupe multiplicatif modulo
p.ECDH : Opère sur des points
(x,y)qui satisfont l'équation de la courbe, formant un groupe avec une "addition" de points spécifique.
"Multiplication" vs "Exponentiation" :
Dans DH classique, on "élève
gà la puissancea".Dans ECDH, on "multiplie le point
Gpar le scalaired_A". C'est une analogie :d_A * Gest àGce queg^aest àg(en termes de structure de groupe).
Avantage Principal d'ECDH : Efficacité et Taille des Clés.
Pour un niveau de sécurité donné, ECDH nécessite des clés (les scalaires
d_A, d_B) et des paramètres (taille du corps finippour la courbe) significativement plus petits que DH classique.Cela se traduit par des calculs plus rapides, moins de données à transmettre (les coordonnées des points
Q_A, Q_Bsont plus petites que les grands nombresA, Bdu DH classique pour une sécurité équivalente).
Sécurité :
Repose sur la difficulté de l'ECDLP. Pour des courbes bien choisies, l'ECDLP est considéré plus difficile à résoudre que le DLP classique pour des tailles de paramètres comparables. C'est pourquoi on peut utiliser des paramètres plus petits.
Authentification :
Comme DH classique, ECDH seul ne fournit pas d'authentification.
Q_AetQ_Bdoivent être authentifiés (par ex. via ECDSA et certificats) pour prévenir les attaques MitM. La version authentifiée s'appelle ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) lorsqu'utilisée avec des clés éphémères (scalairesd_A, d_Bgénérés pour chaque session) pour assurer la Perfect Forward Secrecy (PFS).
ECDH (Elliptic Curve Diffie-Hellman) - Version Condensée
1. Principe Général
Comme DH, mais opérations sur points d'une courbe elliptique (E) au lieu de nombres
mod p.Avantage clé : Même sécurité avec clés/valeurs beaucoup plus petites -> plus rapide, moins de données.
Sécurité : Repose sur difficulté ECDLP (trouver
kdansQ = k * P).
2. Paramètres Publics
Courbe E, Point de base G (un point
(x,y)sur E).
3. Échange ECDH (Alice & Bob)
Étape |
Alice |
Bob |
Échange |
|---|---|---|---|
Secrets |
Entier |
Entier |
|
Calculs Publiques |
Point |
Point |
|
Calcul Secret Partagé |
Point |
Point |
|
Clé Finale |
|
|
k * P= "multiplication scalaire" : additionner le pointPà lui-mêmekfois sur la courbe.
4. Différences Clés vs DH Classique (g^a % p)
DH Classique |
ECDH |
|
|---|---|---|
Objets échangés |
Nombres |
Points |
Opération |
Exponentiation modulaire |
Multiplication scalaire de points |
Clé/Param. Taille |
Grande |
Petite (pour même sécurité) |
5. Authentification & PFS
ECDH seul : Pas d'authentification (vulnérable MitM).
ECDHE (Ephemeral) :
d_A, d_Bnouveaux à chaque session -> Perfect Forward Secrecy (PFS).Authentification via signatures (ex: ECDSA) sur
Q_A, Q_B.
Protocole DH Classique (sur ℤp*) - Échange de Clés
1. Paramètres Publics (Communs et connus de tous)
p: Un grand nombre premier (le module).g: Un élément primitif (générateur entier) de ℤp*.
2. Schéma de l'Échange DH Classique
Acteur |
Action |
Calculs (Opérations Modulo |
Envoi / Réception |
|---|---|---|---|
Alice |
1. Choisit un entier secret privé aléatoire |
||
2. Calcule sa valeur publique |
|
||
3. Envoie |
|
||
Bob |
1. Choisit un entier secret privé aléatoire |
||
2. Calcule sa valeur publique |
|
||
3. Envoie |
|
||
Alice |
4. Reçoit |
|
Reçoit |
Bob |
4. Reçoit |
|
Reçoit |
Résultat : Alice et Bob possèdent la même clé secrète
S = g^(ab) % p.Cette valeur
S(un entier) peut être utilisée directement comme clé symétrique ou passée dans une KDF.
Protocole DH Classique Authentifié avec Signatures RSA (ADH)
Prérequis
Alice possède :
Clé privée RSA :
(d_RSA_A, n_RSA_A)Clé publique RSA :
(e_RSA_A, n_RSA_A)(dans son certificatCert_A)
Bob possède :
Clé privée RSA :
(d_RSA_B, n_RSA_B)Clé publique RSA :
(e_RSA_B, n_RSA_B)(dans son certificatCert_B)
Chacun fait confiance à l'Autorité de Certification (AC) qui a émis les certificats de l'autre.
1. Paramètres Publics DH (Communs)
p: Un grand nombre premier (module DH).g: Un élément primitif (générateur entier) de ℤp*.
2. Schéma de l'Échange DH Classique avec Authentification RSA
Acteur |
Action & Secrets Internes DH/RSA |
Calculs DH & RSA (Signatures) |
Envoi / Réception |
Vérifications RSA par le Récepteur |
|---|---|---|---|---|
Alice |
1. Secret DH |
2. Valeur publique DH : |
||
4. Envoie son message à Bob. |
|
|||
Bob |
1. Reçoit le message d'Alice. |
Reçoit |
2. Vérifie |
|
5. Valeur publique DH : |
||||
7. Envoie son message à Alice. |
|
|||
Alice |
6. Reçoit le message de Bob. |
Reçoit |
7. Vérifie |
|
Alice |
10. Calcule la clé secrète partagée |
|
||
Bob |
8. Si |
|
h()est une fonction de hachage cryptographique (ex: SHA-256).On signe le hash de
A(ouB) pour l'efficacité et la compatibilité avec RSA.
Explication du Rôle de RSA dans ce Schéma
Avant de faire confiance à la valeur DH reçue (
AouB), chaque participant vérifie son authenticité.Certificat (
Cert_A,Cert_B) : Lie une identité (Alice, Bob) à une clé publique RSA. L'Autorité de Certification (AC) garantit ce lien. C'est le point de départ de la confiance.Signature (
Sig_A,Sig_B) :Alice utilise sa clé privée RSA pour signer le hash de sa valeur DH
A. Seule Alice peut produire cette signature.Bob utilise la clé publique RSA d'Alice (extraite de son certificat vérifié) pour vérifier la signature. Si la vérification réussit, Bob est assuré que :
Aa bien été envoyé par la propriétaire de la clé privée RSA correspondant à la clé publique du certificat (donc Alice, si le certificat est valide et digne de confiance).An'a pas été modifié en transit (grâce au hash).
Conséquence : Si Oscar intercepte
Aet le remplace parO_A, il ne pourra pas créer uneSig_O_Avalide au nom d'Alice car il ne possède pas la clé privée RSA d'Alice. Bob détectera que la signature est invalide (ou absente pourO_A) et rejettera la communication ouO_A. L'attaque MitM sur les valeurs DH est ainsi contrecarrée.
En résumé, dans ADH (Authenticated Diffie-Hellman) :
Diffie-Hellman est utilisé pour s'accorder sur une clé secrète
S.RSA (ou autre algo asymétrique de signature comme ECDSA) est utilisé pour authentifier les messages de l'échange DH (
AetB), garantissant que les participants sont bien ceux qu'ils prétendent être.
Ce tableau est plus complexe car il intègre deux protocoles (DH et la partie signature/vérification RSA). Pour ta feuille de notes, tu pourrais te concentrer sur les étapes clés de l'envoi et de la réception, en notant quelles clés sont utilisées pour la signature et la vérification.
Opérations Modulaires de Base & Congruence (Utile pour DH, RSA, Générateurs)
Notation / Concept |
Signification & Explication |
Exemple |
Utilité Cryptographique |
|---|---|---|---|
|
Reste de la division euclidienne de |
|
Opération de base dans tous les calculs DH ( |
|
|
|
Exprime l'égalité dans l'arithmétique modulaire. Utilisé dans les définitions (ex: |
Addition Modulaire |
|
|
Opérations dans les groupes additifs (moins courant en DH/RSA, mais base des corps de Galois). |
Soustraction Modulaire |
|
|
Idem. |
Multiplication Modulaire |
|
|
Opérations dans les groupes multiplicatifs ℤp* (DH, RSA). |
Inverse Multiplicatif Modulaire |
|
Inverse de 3 mod 7 : |
Crucial pour RSA : Calcul de |
Exponentiation Modulaire |
|
|
Opération fondamentale pour DH et RSA. |
Ordre d'un élément |
Le plus petit entier positif |
Ordre de 3 mod 7 : |
Lié aux éléments primitifs. L'ordre d'un primitif |
Élément Primitif (Générateur) |
|
|
Essentiel pour Diffie-Hellman : |
Algorithme d'Euclide Étendu (pour trouver inv(a, n) i.e. x dans ax + ny = pgcd(a,n))
Si
pgcd(a,n) = 1, alorsax + ny = 1. En prenantmod n, on aax ≡ 1 (mod n), doncxest l'inverse.Méthode : Tableau itératif (ou récursif) basé sur les restes successifs de l'algorithme d'Euclide.
Formules de base (itératif) :
r_i = r_(i-2) - q_i * r_(i-1)x_i = x_(i-2) - q_i * x_(i-1)y_i = y_(i-2) - q_i * y_(i-1)
Initialisation :
r_0=n, r_1=a,x_0=1, x_1=0(si on chercheinv(a,n)pourax=1 mod n),y_0=0, y_1=1.Quand
r_k = 1, alorsx_kest l'inverse deamodulon(six_kest négatif, ajoutern).Il est peu probable de devoir dérouler l'algorithme complet en 1h30 sauf si c'est un cas très simple, mais comprendre son but (trouver l'inverse) est important pour RSA.