Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de portes dérobées dans...
Transcript of Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de portes dérobées dans...
DUAL EC DRBG : Une histoire de portes derobeesdans les standards
Aris Adamantiadis <[email protected]>
http://www.badcode.be/
27/03/2015
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Qui suis-je ?
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
HistoriqueCritiques
DUAL EC DRBG
Dual Elliptic Curve Deterministic Random Bit Generator
Introduit dans la norme FIPS dans NIST SP800-90A en 2005
Developpe par la NSA
But : fournir un DRBG n’utilisant ni hash, ni chiffrement enblocs
Un historique de critiques a faire rougir RC4
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
HistoriqueCritiques
Ligne du temps
2004 Premier draft de Dual EC DRBG
2004 RSA implemente Dual EC dans BSAFE (pour $10M)
2005 Brevet de Certicom ”key escrow mechanism”
2006 Publication de NIST SP800-90A
2007 Shumow et Ferguson (Microsoft) presentent lapossibilite de porte derobee
2013 Snowden publie des documents sur Bullrun
2013 RSA conseille a ses clients de ne plus utiliser Dual EC
2014 Dual EC DRBG est retire de SP800-90A
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
HistoriqueCritiques
Critiques de Dual EC DRBG
Lenteur : 2 operations EC par 30 octets
Parametres constants suspects
Aucune preuve de securite n’existe1
Biais dans bits de sortie
Le connaissance de relation entre P et Q permet de devinerles sorties ulterieures2
1http://blog.cryptographyengineering.com/2013/09/
the-many-flaws-of-dualecdrbg.html2Shumow et Ferguson, Microsoft
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
HistoriqueCritiques
Pourquoi c’est mal ?
On evite d’utiliser de la cryptographie faible ou cassee
Si l’organisation qui a genere Q connait la clef privee, ilspeuvent exploiter la porte derobee.
SSL/TLS/SSH echangent 32 octets aleatoires en clair
PRNG critique pour la confidentialite :
ECDSA/DSA: leak de la clef secreteDH/DHE/ECDH/ECDHE: leak de la clef de sessionRSA: leak de la clef de session
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Courbe elliptiqueUtilisation en cryptographie
Definition
Ensemble de points obeissant a unestructure de groupe
Equation : y2 = x3 + ax + b(mod p)
Module premier p : defini le champ finiZ/pZ de l’equation
Ordre r : nombre de points dans le groupe
a et b: entiers fixes par convention(a = −3 pour NIST GF(p))
Un generateur (Gx ,Gy ), element de basedu groupe
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Courbe elliptiqueUtilisation en cryptographie
Points
Point: coordonnees (Px ,Py ) qui satisfontl’equation
Notes en lettres capitales (P,G ,Q)
Acceptent une operation 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 <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Courbe elliptiqueUtilisation en cryptographie
Utilisation en cryptographie
Certaines courbes ont des caracteristiques utiles en crypto
l’equation iP = Q est facile a resoudre pour P ou Q
...Mais difficile a resoudre pour i
Probleme du logarithme discret dans le groupe EC
Les points sont souvent utilises comme clefs publiques etscalaires comme clefs privees
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
AlgorithmeUne attaqueGeneration des constantes
Algorithme
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
AlgorithmeUne attaqueGeneration des constantes
Algorithme deroule
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 <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
AlgorithmeUne attaqueGeneration 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 coordonnee X d’un point A, dontil manque 16 bits
Pour chaque valeur de X, il y a 0, 1 ou 2points sur la courbe
On peut recuperer ce point A en 217
operations
Hypothese: nous connaissons A = i1Q
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
AlgorithmeUne attaqueGeneration 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)
Hypothese: nous connaissons A = i1Q
Hypothese: il existe une relation dQ = P
d est la clef secrete 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 <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
AlgorithmeUne attaqueGeneration des constantes
Generation des constantes
On a defini dQ = P
Probleme: P est fixe (generateur)
on doit calculer e tel que deQ = eP
ed = 1 (dans la courbe C )
ed = 1 (mod r)
On obtient Q = eP
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Obtenir le(s) point(s) A
On etait parti sur l’hypothese que A est connu
On n’a que 30 octets de x(A)
Pour les 16 bits qui manquent, creer un candidat pour A
Resoudre 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 <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Generer la sortie
L’etape precedente a genere une liste de candidats pour A
Generer 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 recupere l’etat du PRNG
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Implementation
Implementation de l’algorithme de cassage en C
A telecharger sur mon github3
Utilise OpenSSL FIPS patche
Premiere implementation publique (12/2013)
3https://github.com/arisada/dualec_poc
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Implementation
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 <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Conclusion
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards
IntroductionDUAL EC DRBG
Maths des courbes elliptiquesA l’interieur de DUAL EC
Implementation
Obtenir le(s) point(s) AGenerer la sortieImplementationConclusion
Conclusion
Aris Adamantiadis <[email protected]> DUAL EC DRBG : Une histoire de portes derobees dans les standards