sequenceDiagram autonumber participant V as Verifieur participant P as Prouveur Note over P: Secret K (constant) V->>P: Requete preuve P-->>V: R = f(K) (constant) V->>V: Verifie R
Challenge–Response : 3 echanges + 3 attaques
0.1 Introduction
On compare 3 variantes de schemas challenge–response et on illustre, pour chacun, une attaque typique.
Ici “signature” couvre MAC/HMAC (symetrique) ou signature (asymetrique).
Note: Mermaid (sequenceDiagram) est parfois strict sur la syntaxe.
Pour eviter les erreurs: pas de participants avec parentheses dans leur nom, et pas de fleche bidirectionnelleV<->>P.
1 1) echange 1 — Cle constante -> Reponse constante (statique)
1.1 1.1 Sequence
1.2 1.2 Attaques typiques (classes)
- Replay : capture une fois, rejoue a vie.
- Clonage par copie : fuite de R = identite copiee.
- Brute-force / oracle offline : si f(K) ou K faibles.
- Extraction de secret : compromis de P = K expose.
- Interception passive : l’ecoute suffit.
1.3 1.3 Attaque illustree — Replay
sequenceDiagram autonumber participant V as Verifieur participant A as Attaquant participant P as Prouveur Note over A: Phase 1 - Capture V->>P: Requete preuve P-->>V: R = f(K) A-->>A: Enregistre R Note over A: Phase 2 - Rejeu (plus tard) V->>A: Requete preuve A-->>V: R (rejoue) V->>V: Accepte si R attendu
2 2) echange 2 — Cle -> ChallengeRand -> Signed Response -> Chiffrement
2.1 2.1 Sequence
sequenceDiagram
autonumber
participant V as Verifieur
participant P as Prouveur
Note over P: K = secret partage (MAC) ou cle privee (signature)
V->>P: C = Random() (challenge)
P-->>V: S = MAC/Sign(K, C)
V->>V: Verifie S
alt S valide
Note over V,P: cle_session = KDF(C, transcript)
V->>P: Demarre chiffrement (session)
P-->>V: OK (session active)
else S invalide
V-->>P: Reject
end
2.2 2.2 Attaques typiques (classes)
- Replay : normalement bloque si
Cest unique et verifie. - RNG faible : challenge predictible -> pre-calcul / reutilisation.
- MitM sur negociation crypto : downgrade/strip si transcript pas authentifie.
- Relai (relay attack) : l’attaquant relaie
Cau vrai P et renvoieSa V. - DoS : flood de challenges (cout calcul cote P).
2.3 2.3 Attaque illustree — Relai (cable humain)
sequenceDiagram autonumber participant V as Verifieur participant A as Relai participant P as Prouveur Note over A: Attaquant = "cable humain" (relay) V->>A: C = Random() A->>P: C (relay) P-->>A: S = MAC/Sign(K, C) A-->>V: S (relay) V->>V: Verifie S -> OK
3 3) echange 3 — Cle -> ChallengeRand + Nonce(s) -> Signed Response -> Chiffrement
3.1 3.1 Sequence
sequenceDiagram
autonumber
participant V as Verifieur
participant P as Prouveur
Note over P: K = secret (MAC) ou cle privee (signature)
V->>P: C = Random(), Nv = NonceV
P-->>V: Np = NonceP
P-->>V: S = MAC/Sign(K, C + Nv + Np)
V->>V: Verifie S
alt S valide
Note over V,P: cle_session = KDF(C, Nv, Np, IDs, params)
V->>P: Demarre chiffrement (session)
P-->>V: OK (session active)
else S invalide
V-->>P: Reject
end
3.2 3.2 Attaques typiques (classes)
- Relai : toujours possible meme avec nonces (forward en live, aucune forge).
- RNG faible :
C/Nv/Nppredictibles -> memes problemes que (2). - Replay : bloque si
C/Nvuniques et correctement verifies. - Reflection : si roles confondus / messages symetriques sans separation de domaine.
- Unknown key-share : si IDs/roles/params pas inclus dans ce qui est MACe/signe.
- Downgrade / transcript tampering : si la cle session ne lie pas le transcript complet.
3.3 3.3 Attaque illustree — Relai malgre nonces (fraicheur != proximite)
sequenceDiagram autonumber participant V as Verifieur participant A as Relai participant P as Prouveur Note over A: Attaquant relaie tout en temps reel V->>A: C, Nv A->>P: C, Nv (relay) P-->>A: Np P-->>A: S = MAC/Sign(K, C + Nv + Np) A-->>V: Np A-->>V: S (relay) V->>V: Verifie S -> OK Note over V,A: V accepte, mais A n'est pas P (attaque de proximite)
4 Tableau — classes d’attaques (resume)
| Classe d’attaque | 1) Reponse statique | 2) Challenge+Sign | 3) + Nonces + transcript |
|---|---|---|---|
| Replay (rejeu) | Vulnerable | Bloque si bien fait | Bloque si bien fait |
| Relai / Proximite (relay) | N/A | Vulnerable | Vulnerable |
| RNG faible / challenge predictible | N/A | Vulnerable | Vulnerable |
| Downgrade / strip (nego crypto) | N/A | Possible | Reduit si transcript lie |
| Reflection (roles confondus) | N/A | Possible | Reduit si domain-sep |
| Unknown key-share / identite mal liee | Possible | Possible | Reduit si IDs inclus |
| Brute-force offline (si MAC/cle faibles) | Possible | Selon construction | Selon construction |
| DoS (flood de challenges) | Faible | Vulnerable | Vulnerable |
5 Conclusion
- echange 1 (statique) : casse par replay (et clonage).
- echange 2 (challenge–response) : solide contre replay si RNG correct, mais vulnerable au relai et aux downgrades si le transcript n’est pas authentifie.
- echange 3 (nonces + transcript) : meilleure liaison de session/parametres, mais le relai reste possible sans preuve de proximite (distance-bounding / timing / canal).