MGR850 Hiver 2014 Protocoles cryptographiques Hakima Ould-Slimane Chargée de cours École de technologie supérieure (ÉTS) Département de génie électrique 1
Plan Motivation et Contexte Notations Protocoles & attaques Cas d étude: Payement Carte Bancaire Conclusion MGR850- H14 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 des entités Chiffrement symétrique/asymétrique Authentification des messages Transport sécurisé des données au niveau applicatif 5
Notations A, B, C, : Parties impliquées dans la communication S : une tierce partie de confiance 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) // N B est-il secret entre A et B? Conçu pour l 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 «Replay» (par rejeu): 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 MGR850 - H14 9
Protocoles & attaques 1. Needham-Schroeder version symétrique Contrer l attaque «Replay»! 1. A B : A 2. B A : {<A, N B >} K-BS // prouve-moi que tu es A! 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 // K-AB est fraîche 6. B A : {N B } K-AB // tu es B 7. A B : {N B -1} K-AB // tu es vraiment A 10
Protocoles & attaques 2. Needham-Schroeder version asymétrique Objectif: authentification mutuelle basée sur des clés publiques 1. A S : <A, B> // A: STP S, donne-moi la clé publique de 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> // B: STP S, donne-moi la clé publique de A 5. S B : {pub_k(a), A} priv_k(s) 6. B A : {N A, N B } pub_k(a) //A: tu es vraiment B 7. A B : {N B } pub_k(b) //B: tu es vraiment A. 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) Finalement, A a-t-il communiqué avec B? 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 Retentons la même 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 avec B!!! Par conséquent, l intrus I est démasqué MGR850 - H14 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 MGR850 - H14 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 MGR850 - H14 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 MGR850 - H14 17
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 publiques (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 (clé de la banque compromise) 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
Payement Carte Bancaire Correction du protocole Static Data Authentication (SDA)-> mêmes faiblesses logiques Dynamic Data Authentification (DDA) MGR850- H14 27
Dynamic Data Authentification (DDA) signée par la banque Signée par une autorité de certification S, Déchiffrée grâce a la clé publique de S dans le terminal MGR850- H14 28
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é! 29
Payement Carte Bancaire Correction de la faille? 30