DUAL EC DRBG : Une histoire de portes d´erob´ees
dans les standards
Aris Adamantiadis <aris@badcode.be>
http://www.badcode...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Qui suis-je ?
Aris Adam...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Historique
Critiques
DU...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Historique
Critiques
Li...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Historique
Critiques
Cr...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Historique
Critiques
Po...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Courbe elliptique
Utili...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Courbe elliptique
Utili...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Courbe elliptique
Utili...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Algorithme
Une attaque
...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Algorithme
Une attaque
...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Algorithme
Une attaque
...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Algorithme
Une attaque
...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Algorithme
Une attaque
...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Introduction
DUAL EC DRBG
Maths des courbes elliptiques
`A l’int´erieur de DUAL EC
Impl´ementation
Obtenir le(s) point(s) ...
Prochain SlideShare
Chargement dans…5
×

Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de portes dérobées dans les standards

997 vues

Publié le

Juin 2006, le NIST publie les spécifications de plusieurs générateurs de nombres pseudo-aléatoires, dont le tristement célèbre Dual_EC_DRBG, dans la norme NIST SP 800-90A, et cela malgré le scepticisme de la communauté crypto. Depuis, il a été démontré que ce générateur peut facilement être détourné pour rendre ses sorties totalement prévisibles, en faisant un cas d'école de kleptographie (ce qui n'a pas empêché qu'il soit utilisé).

Cette présentation technique donnera les bases nécessaires pour comprendre l'utilisation des courbes elliptiques en cryptographie et comment elles ont servi à corrompre ce générateur d'aléa.

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
997
Sur SlideShare
0
Issues des intégrations
0
Intégrations
255
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de portes dérobées dans les standards

  1. 1. DUAL EC DRBG : Une histoire de portes d´erob´ees dans les standards Aris Adamantiadis <aris@badcode.be> http://www.badcode.be/ 27/03/2015
  2. 2. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Qui suis-je ? Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  3. 3. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Historique Critiques DUAL EC DRBG Dual Elliptic Curve Deterministic Random Bit Generator Introduit dans la norme FIPS dans NIST SP800-90A en 2005 D´evelopp´e par la NSA But : fournir un DRBG n’utilisant ni hash, ni chiffrement en blocs Un historique de critiques `a faire rougir RC4 Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  4. 4. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Historique Critiques Ligne du temps 2004 Premier draft de Dual EC DRBG 2004 RSA impl´emente Dual EC dans BSAFE (pour $10M) 2005 Brevet de Certicom ”key escrow mechanism” 2006 Publication de NIST SP800-90A 2007 Shumow et Ferguson (Microsoft) pr´esentent la possibilit´e de porte d´erob´ee 2013 Snowden publie des documents sur Bullrun 2013 RSA conseille `a ses clients de ne plus utiliser Dual EC 2014 Dual EC DRBG est retir´e de SP800-90A Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  5. 5. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Historique Critiques Critiques de Dual EC DRBG Lenteur : 2 op´erations EC par 30 octets Param`etres constants suspects Aucune preuve de s´ecurit´e n’existe1 Biais dans bits de sortie Le connaissance de relation entre P et Q permet de deviner les sorties ult´erieures2 1 http://blog.cryptographyengineering.com/2013/09/ the-many-flaws-of-dualecdrbg.html 2 Shumow et Ferguson, Microsoft Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  6. 6. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Historique Critiques Pourquoi c’est mal ? On ´evite d’utiliser de la cryptographie faible ou cass´ee Si l’organisation qui a g´en´er´e Q connait la clef priv´ee, ils peuvent exploiter la porte d´erob´ee. SSL/TLS/SSH ´echangent 32 octets al´eatoires en clair PRNG critique pour la confidentialit´e : ECDSA/DSA: leak de la clef secr`ete DH/DHE/ECDH/ECDHE: leak de la clef de session RSA: leak de la clef de session Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  7. 7. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Courbe elliptique Utilisation en cryptographie D´efinition Ensemble de points ob´eissant `a une structure de groupe Equation : y2 = x3 + ax + b(mod p) Module premier p : d´efini le champ fini Z/pZ de l’´equation Ordre r: nombre de points dans le groupe a et b: entiers fix´es par convention (a = −3 pour NIST GF(p)) Un g´en´erateur (Gx , Gy ), ´element de base du groupe Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  8. 8. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Courbe elliptique Utilisation en cryptographie Points Point: coordonn´ees (Px , Py ) qui satisfont l’´equation Not´es en lettres capitales (P,G,Q) Acceptent une op´eration d’addition (P + Q) L’addition est commutative et associative Multiplication scalaire: nP Associative et commutative: a(bP) = b(aP) Le scalaire est un entier modulo r Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  9. 9. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Courbe elliptique Utilisation en cryptographie Utilisation en cryptographie Certaines courbes ont des caract´eristiques utiles en crypto l’´equation iP = Q est facile `a r´esoudre pour P ou Q ...Mais difficile `a r´esoudre pour i Probl`eme du logarithme discret dans le groupe EC Les points sont souvent utilis´es comme clefs publiques et scalaires comme clefs priv´ees Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  10. 10. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Algorithme Une attaque Generation des constantes Algorithme Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  11. 11. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Algorithme Une attaque Generation des constantes Algorithme d´eroul´e 1 i0 = randomseed() 2 i1 = φ(x(i0P)) 3 o0 = φ(x(i1Q)) 4 output(30 LSB o0) 5 i2 = φ(x(i1P)) 6 o1 = φ(x(i2Q)) 7 output(30 LSB o1) Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  12. 12. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Algorithme Une attaque Generation des constantes Une attaque 1 i0 = randomseed() 2 i1 = φ(x(i0P)) 3 o0 = φ(x(i1Q)) 4 output(30 LSB o0) 5 i2 = φ(x(i1P)) 6 o1 = φ(x(i2Q)) 7 output(30 LSB o1) Tentons de deviner o1 depuis o0 o0 est la coordonn´ee X d’un point A, dont il manque 16 bits Pour chaque valeur de X, il y a 0, 1 ou 2 points sur la courbe On peut r´ecup´erer ce point A en 217 op´erations Hypoth`ese: nous connaissons A = i1Q Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  13. 13. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Algorithme Une attaque Generation des constantes Une attaque 1 i0 = randomseed() 2 i1 = x(i0P) 3 o0 = x(i1Q) 4 output(30 LSB o0) 5 i2 = x(i1P) 6 o1 = x(i2Q) 7 output(30 LSB o1) Hypoth`ese: nous connaissons A = i1Q Hypoth`ese: il existe une relation dQ = P d est la clef secr`ete de la backdoor! i1dQ = dA (mult. par d) i1P = dA (dQ = P) i2 = x(i1P) = x(dA) o1 = x(i2Q) = x(x(dA)Q) Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  14. 14. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Algorithme Une attaque Generation des constantes G´en´eration des constantes On a d´efini dQ = P Probl`eme: P est fixe (g´en´erateur) on doit calculer e tel que deQ = eP ed = 1 (dans la courbe C) ed = 1 (mod r) On obtient Q = eP Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  15. 15. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion Obtenir le(s) point(s) A On ´etait parti sur l’hypoth`ese que A est connu On n’a que 30 octets de x(A) Pour les 16 bits qui manquent, cr´eer un candidat pour A R´esoudre l’´equation y2 = x3 − 3x + b (mod p) y = sqrt(x3 − 3x + b) (mod p) On obtient 0, 1 ou 2 solutions (Ax , Ay ) et (Ax , −Ay ) Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  16. 16. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion G´en´erer la sortie L’´etape pr´ec´edente a g´en´er´e une liste de candidats pour A G´en´erer o1 = x(x(dA)Q) pour chaque A Comparer les deux derniers octets du texte clair connu avec o1 En cas de match, on a r´ecup´er´e l’´etat du PRNG Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  17. 17. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion Impl´ementation Impl´ementation de l’algorithme de cassage en C `A t´el´echarger sur mon github3 Utilise OpenSSL FIPS patch´e Premi`ere impl´ementation publique (12/2013) 3 https://github.com/arisada/dualec_poc Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  18. 18. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion Impl´ementation aris@kalix86:~/dualec$ ./dual_ec_drbg_poc s at start of generate: E9B8FBCFCDC7BCB091D14A41A95AD68966AC18879ECC27519403B34231916485 [omitted: many output from openssl] y coordinate at end of mul: 0663BC78276A258D2F422BE407F881AA51B8D2D82ECE31481DB69DFBC6C4D010 r in generate is: 96E8EBC0D507C39F3B5ED8C96E789CC3E6861E1DDFB9D4170D3D5FF68E242437 Random bits written: 000000000000000000000000000000000000000000000000000000000000 y coordinate at end of mul: 5F49D75753F59EA996774DD75E17D730051F93F6C4EB65951DED75A8FCD5D429 s in generate: C64EAF10729061418EB280CCB288AD9D14707E005655FDD2277FC76EC173125E [omitted: many output from openssl] PRNG output: ebc0d507c39f3b5ed8c96e789cc3e6861e1ddfb9d4170d3d5ff68e242437449e Found a match ! A_x: 96e8ebc0d507c39f3b5ed8c96e789cc3e6861e1ddfb9d4170d3d5ff68e242437 A_y: 0663bc78276a258d2f422be407f881aa51b8d2d82ece31481db69dfbc6c4d010 prediction: a3cbc223507c197ec2598e6cff61cab0d75f89a68ccffcb7097c09d3 Reviewed 65502 valid points (candidates for A) PRNG output: a3cbc223507c197ec2598e6cff61cab0d75f89a68ccffcb7097c09d3 Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  19. 19. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion Conclusion Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand
  20. 20. Introduction DUAL EC DRBG Maths des courbes elliptiques `A l’int´erieur de DUAL EC Impl´ementation Obtenir le(s) point(s) A G´en´erer la sortie Impl´ementation Conclusion Conclusion Aris Adamantiadis <aris@badcode.be> DUAL EC DRBG : Une histoire de portes d´erob´ees dans les stand

×