20
DUAL EC DRBG : Une histoire de portes d´ erob´ ees dans les standards Aris Adamantiadis <[email protected]> http://www.badcode.be/ 27/03/2015

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

  • Upload
    sthack

  • View
    262

  • Download
    0

Embed Size (px)

Citation preview

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