Attaques sur les protocoles cryptographiques Chamseddine Talhi École de technologie supérieure (ÉTS) Dép. Génie logiciel et des TI Automne 2012 1
Plan Motivations & contexte Notations Protocoles cryptographiques & attaques Cas d étude: Payements cartes bancaires Conclusion 2
Motivation & Contexte Je veux sécuriser mes Communications. Ma solution est la cryptographie Mais quelle combinaison adopter? Clés secrètes, clés publiques, J ai besoin de suivre un protocole 3
Motivation & Contexte Un protocole cryptographique est un protocole de communication qui utilise des outils de la cryptographie afin d atteindre un objectif de sécurité (Faire respecter/assurer une politique de sécurité) Il décrit les détails d utilisation et d implémentation des algorithmes utilisés e.g., structures de données et leurs représentations 4
Motivation & Contexte Propriétés assurées: Entente sur les clés à utiliser Authentification d'entités Chiffrement symétrique/asymétrique Authentification de messages Transport sécurisé de données au niveau applicatif 5
Notations A, B, C, : Parties impliquées dans la communication I(A) : Attaquant jouant le rôle de A Pub_K(A) : Clé publique de A Priv_K(A) : Clé privée de A K-AB : Clé secrète partagée entre A et B K-A : Clé secrète universelle de A M : Message en clair A B: M : Message M envoyé à B par A <M 1, M 2,..., M N > : Concaténation de N messages {M} Pub_K(A) : Message M chiffré par la clé publique de A {M} Priv_K(A) : Message signé par la clé privée de A N A : Nombre aléatoire (nonce) généré par A 6
Notations Exemple: principes de base du protocole Needham-Schroeder (1978) 1. A B : {<A, N A >} pub_k(b) 2. B A : {< N A, N B >} pub_k(a) 3. A B : {< N B >} pub_k(b) Authentification mutuelle de deux parties A et B A et B utilisent un canal de communication non sécurisé 7
Protocoles & attaques 1. Needham-Schroeder version symétrique 1. A S : <A, B, N A > 2. S A : {< N A, K-AB, B, {K-AB, A} K-BS>} K-AS 3. A B : {K-AB, A} K-BS 4. B A : {N B } K-AB 5. A B : {N B -1} K-AB Objectifs: Authentification mutuelle basée sur des clés secrètes. Échange de clés secrètes de sessions. 8
Protocoles & attaques 1. Needham-Schroeder version symétrique Attaque «Reply»: On suppose que l attaquant a réussi à avoir une ancienne clé de session en exploitant une vulnérabilité de la machine de A. On suppose aussi qu il a intercepté et enregistré tous les messages échangés entre A et B. Avec une ancienne clé K-AB et le message A B : {K-AB, A} K-BS correspondant, l attaquant peut faire: 3. I(A) B : {K-AB, A} K-BS 4. B I(A) : {N B } K-AB 5. I(A) B : {N B -1} K-AB Pb: Aucune information sur le temps 9
Protocoles & attaques 1. Needham-Schroeder version symétrique Contrer l attaque «Reply»: 1. A B : A 2. B A : {A, N B } K-BS 3. A S : <A, B, N A, {A, N B } K-BS > 4. S A : {N A, K-AB, B, {K-AB, A, N B } K-BS} K-AS 5. A B : {K-AB, A, N B } K-BS 6. B A : {N B } K-AB 7. A B : {N B -1} K-AB 10
Protocoles & attaques 2. Needham-Schroeder version asymétrique 1. A S : <A, B> 2. S A : {pub_k(b), B} priv_k(s) 3. A B : {N A, A} pub_k(b) 4. B S : <B, A> 5. S B : {pub_k(a), A} priv_k(s) 6. B A : {N A, N B } pub_k(a) 7. A B : {N B } pub_k(b) Objectif: authentification mutuelle basée sur des clés publiques. 11
Protocoles & attaques 2. Needham-Schroeder version asymétrique Attaque «Man in the Middle»: 3. A I : {N A, A} pub_k(i) 3. I(A) B : {N A, A} pub_k(b) 6. B I(A) : {N A, N B } pub_k(a) 6. I A : {N A, N B } pub_k(a) 7. A I : {N B } pub_k(i) 7. I(A) B : {N B } pub_k(b) L attaquant I a personnifié A? 12
Protocoles & attaques 2. Needham-Schroeder version asymétrique Contrer l attaque: 1. A S : <A, B> 2. S A : {pub_k(b), B} priv_k(s) 3. A B : {N A, A} pub_k(b) 4. B S : <B, A> 5. S B : {pub_k(a), A} priv_k(s) 6. B A : {N A, N B, B} pub_k(a) 7. A B : {N B } pub_k(b) 13
Protocoles & attaques 2. Needham-Schroeder version asymétrique Contrer l attaque: 3. A I : {N A, A} pub_k(i) 3. I(A) B : {N A, A} pub_k(b) 6. B I(A) : {N A, N B, B} pub_k(a) 6. I A : {N A, N B, B} pub_k(a) Mais je suis supposé communiquer avec I,pas B!!! 14
Protocoles & attaques 3. Protocole de Rivest, Shamir, et Adelman. 1. A B : {M} K-A 2. B A : {{M} K-A } K-B 3. A B : {M} K-B Objectif: authentification mutuelle sans l aide d un serveur de confiance!!! Juste des clés secrètes universelles Hypothèses: {{M} K-A } K-B = {M} K-B } K-A {{M} K-A } K-A = M {{M} K-B } K-B = M 15
Protocoles & attaques 3. Protocole de Rivest, Shamir, et Adelman. 1. A B : {M} K-A 2. B A : {{M} K-A } K-B 3. A B : {M} K-B Hypothèses: {{M} K-A } K-B = {{M} K-B } K-A {{M} K-A } K-A = M 1. A B : {M} K-A 2. B A : {{M} K-A } K-B => A: {{{M} K-A } K-B } K-A = {{{M} K-A } K-A } K-B = {M} K-B 3. A B : {M} K-B 16
Protocoles & attaques 3. Protocole de Rivest, Shamir, et Adelman Attaquant :jouant un seul rôle dans toutes ses participations aux sessions du protocoles 1. A I(B) : {M} K-A 2. I(B) A : {M} K-A 3. A I(B) : M Très facile, non? {{M} K-A } K-A = M Attaque Oracle Rôle unique - 17
Protocoles & attaques 4. Protocole de Andrew Secure RPC 1. A B : {N A } K-AB 2. B A : {N A +1, N B } K-AB 3. A B : {N B +1} K-AB 4. B A : {K -AB, N B } K-AB K-AB : ancienne clé secrète entre A et B K -AB : nouvelle clé secrète entre A et B N B : nonce qui sera utilisé lors de la prochaine session du protocole. Objectif: Échange de clés plus fraiches 18
Protocoles & attaques 4. Protocole de Andrew Secure RPC Attaque: 1. A B : {N A } K-AB 2. B A : {N A +1, N B } K-AB 3. A B : {N B +1} K-AB 4. I(B) A : {N A +1, N B } K-AB 4. B A : {K -AB, N B } K-AB Hypothèse: les nonces et les clés ont les même types N A +1 est la nouvelle clé «Secrète» entre I(B) et A 19
Payement Carte Bancaire Acheteur / commerçant : Introduire la carte dans le lecteur Commerçant : saisir le montant M de la transaction sur le terminal. Terminal : authentifier la carte. Client: s authentifier auprès de la carte (NIP) Cas particulier: si M > Seuil : o o o Terminal : authentifier la carte auprès de la banque Banque : autoriser la transaction. Adapté de: http://interstices.info/jcms/c_33835/le-protocole-cryptographique-de-paiement-par-carte-bancaire 20
Payement Carte Bancaire Banque (B) Clé privée : Priv_K(B). Pour signer Clé publique: Pub_K(B). Pour vérifier une signature Clé secrète entre B et chaque carte C: K-BC Carte (C) Données : nom, prénom, numéro de carte, validité, etc. Signature des données : {hash(données)} Priv_K(B) Clé secrète entre B et chaque carte C: K-BC NIP : choisi par l utilisateur. Authentifier l utilisateur Terminal (T) Clé publique: Pub_K(B). Vérifier la signature Personne (P) NIP : choisi par l utilisateur. S authentifier auprès de la carte C 21
Payement Carte Bancaire Protocole Authentifier la carte auprès du terminal : 1. C T : Données, {hash(données)} Priv_K(B) Authentifier la personne auprès de la carte : 2. T P : Entrez le NIP 3. P C : 7432 4. C T : NIP OK 22
Payement Carte Bancaire Protocole (suite) Authentifier la carte auprès de la banque (cas particuliers): 5. T B : Nonce? 6. B T : 830937256514 7. T C : 830937256514 8. C T :{830937256514} K-BC 9. T B :{830937256514} K-BC 10. B T : OK 23
Payement Carte Bancaire Failles du protocole Clés cryptographiques bubliques (320 bits) faibles depuis 1988: o Serge Humpich a déduit Priv_K(B) à partir de Pub_K(B) Les cartes YesCard : Serge Humpich (1998): o Fausse signature sur une fausse carte! http://fr.wikipedia.org/wiki/serge_humpich 24
Payement Carte Bancaire Failles du protocole Faille logique: Indépendance entre l authentification Personne/Carte et l authentification Carte/Banque 1. C T : Données, {hash(données)} Priv_K(B) 2. T P : Entrez le NIP 3. P C : 7432 4. C T : NIP OK Intervertir les cartes en cours de transaction 1. C T : Données, {hash(données)} Priv_K(B) 2. T P : Entrez le NIP 3. P C : 8590 4. C T : NIP OK 25
Payement Carte Bancaire Failles du protocole Faille cryptographique: Fausses signatures sur fausses cartes 1. C T : Données, {hash(données)} Priv_K(B) 2. T P : Entrez le NIP 3. P C : 7432 4. C T : NIP OK 1. C T : BlaBla, {hash(blabla)} Priv_K(B) 2. T P : Entrez le NIP 3. P C : 8679 4. C T : NIP OK 26
27
Conclusion Différents objectifs de sécurité. Les vulnérabilités d un protocole cryptographique ne sont pas faciles à identifier -17 ans pour que le protocole Needham-Schroeder soit attaqué avec succès!!! Règles d or: Filtrer les messages échangés par les entités en communication Plus de complexité n est pas toujours synonyme de plus de sécurité! 28
Payement Carte Bancaire Correction de la faille? 29