Confidentialité II Systèmes à clé publique

33
Confidentialité II Systèmes à clé publique 5 e cours--Hiver 2014 Louis Salvail

description

Confidentialité II Systèmes à clé publique. 5 e cours--Hiver 2014 Louis Salvail. Une approche différente. Nous avons vu comment la confidentialité peut être préservée lorsque l’expéditeur et le destinataire partagent une clé secrète : - PowerPoint PPT Presentation

Transcript of Confidentialité II Systèmes à clé publique

Page 1: Confidentialité II Systèmes à clé publique

Confidentialité IISystèmes à clé publique

5e cours--Hiver 2014Louis Salvail

Page 2: Confidentialité II Systèmes à clé publique

Une approche différente

Nous avons vu comment la confidentialité peut être préservée lorsque l’expéditeur et le destinataire partagent une clé secrète :

Si la confidentialité doit être garantie inconditionnellement, alors une clé aussi longue que le message doit être utilisée.

Si la confidentialité est garantie contre les adversaires efficaces, alors il est admis que des chiffrements sûrs à clé secrète courte sont possibles.

Pouvons-nous penser avoir de la confidentialité sans le partage préalable d’une clé?

Page 3: Confidentialité II Systèmes à clé publique

C

La situation

M ME

K

D

Page 4: Confidentialité II Systèmes à clé publique

Systèmes à clé publiqueLes chiffres qui satisfont le modèle précédent sont appelés chiffres à clé publique.

Ces systèmes nécessitent deux types de clés :

Clés privées SK : Permettent le déchiffrement,

Clés publiques PK : Permettent le chiffrement et quiconque la connaît peut envoyer un message chiffré pour M que seul le détenteur de SK peut déchiffrer.

À chaque clé publique correspond une clé privée. Nous dénotons (PK,SK) une telle paire.

Évidemment, les deux algorithmes suivants sont nécessaires :

Chiffrement : EPK(M)=C,

Déchiffrement : DSK(C)= DSK(EPK(M)) =M.

Page 5: Confidentialité II Systèmes à clé publique

Conditions de sécuritéPuisque tout le monde connaît PK, il doit être difficile de trouver SK à partir de PK :

Autrement, SK pourrait être déterminée pour ensuite être utilisée pour déchiffrer.

Cependant, PK doit être facile à calculer à partir de SK. Ceci permet de générer les clés nécessaires efficacement.

La bonne clé publique PK doit être associée à la personne qui connaît SK :

Sinon, un message destiné à Astérix pourrait être chiffré avec la clé publique de César permettant ainsi à César d’en connaître la teneur.

Les clés PK doivent donc être certifiées... nous verrons comment faire plus tard.

Page 6: Confidentialité II Systèmes à clé publique

Sécurité du chiffrement à clé publique

La sécurité du chiffrement à clé publique demande que l’adversaire n’ait aucune idée à propos du message clair correspondant au message chiffré C, même étant donné PK (car l’adversaire la connaît aussi).

Habituellement il n’y a qu’une clé privée associée à la clé publique PK. La fouille exhaustive de clés est donc une attaque possible contre ces systèmes :

Il s’agit d’essayer toutes les clés privées SK jusqu’à ce que celle associée à PK soit trouvée.

Cependant, tous les systèmes à clé publique connus sont vulnérables à des attaques beaucoup plus efficaces que la fouille exhaustive des clés.

En conséquence, les clés pour ces systèmes sont beaucoup plus longues que pour les systèmes à clé secrète.

Page 7: Confidentialité II Systèmes à clé publique

RSA

RSA est le système à clé publique le plus utilisé dans la pratique. Il a révolutionné la cryptographie moderne.

Il a été proposé en 1977 par Rivest, Shamir et Adleman peu de temps après l’invention de la cryptographie à clé publique.

Clifford Cook, un mathématicien britannique travaillant pour les services de renseignements, a décrit un système semblable dès 1973.

Ceci n’a été dévoilé qu’en 1997 parce que le travail avait été classé secret!

Page 8: Confidentialité II Systèmes à clé publique

Clés pour RSAUne clé publique PK pour RSA est composée de deux nombres entiers PK=(N,e) tels que :

N = pq pour deux grands nombres premiers p et q de la même taille.

e > 1 et PGCD(φ(N), e) = 1 (c.-à-d. : e ∈ Z*φ(N)).

La clé privée associée à la clé publique (N,e) est d tel que :

d ∈ Z*φ(N) et

ed = 1 mod φ(N).

Page 9: Confidentialité II Systèmes à clé publique

Chiffrement/déchiffrement RSA

Chiffrement à partir de la clé publique PK=(N,e) :Le message M ∈ Z*N est chiffré comme :

C = Me mod N

Déchiffrement à partir de la clé privée SK=d :Le cryptogramme C ∈ Z*N est déchiffré comme :Cd mod N = (Me mod N)d mod N = Med mod N = Mkφ(N)+1 mod N = (Mφ(N))k mod N × M mod N = 1k × M mod N = M.

Il s’agit d’associer chaque Il s’agit d’associer chaque message à un nombre entre 0 message à un nombre entre 0

et N-1et N-1

La chance qu’il ne La chance qu’il ne soit pas dans Z*soit pas dans Z*NN est est

négligeable.négligeable.

Par Euler!Par Euler!

Page 10: Confidentialité II Systèmes à clé publique

Complexité de générer les clés publiques pour RSA

Le premier défi consiste à générer des paires (SK,PK) efficacement. Vérifions que c’est possible de le faire pour PK.

PK=(N,e) :

Tirer au hasard deux nombres premiers de k bits,

N=pq, (cependant, le résultat n’est bon qu’avec une très très bonne probabilité!)

e peut être tiré au hasard dans Zφ(N), mais il doit aussi être relativement premier à φ(N) :

PGCD(φ(N), e)=PGCD((p-1)(q-1), e) = 1

Ceci coûte donc Ceci coûte donc essentiellement deux fois le essentiellement deux fois le prix de tester la primalité de prix de tester la primalité de

nombre de nombre de kk bits. bits.

Ceci coûte donc Ceci coûte donc essentiellement deux fois le essentiellement deux fois le prix de tester la primalité de prix de tester la primalité de

nombre de nombre de kk bits. bits.

Il faut retenir Il faut retenir pp et et qq!!

Il faut retenir Il faut retenir pp et et qq!!

Par l’algo d’EuclidePar l’algo d’EuclidePar l’algo d’EuclidePar l’algo d’Euclide

Page 11: Confidentialité II Systèmes à clé publique

Complexité de générer les clés secrètes pour RSAMaintenant, nous voulons déterminer SK=d à partir de PK=(N,e).

Nous allons avoir besoin de p et q tels que N=pq.

Calculer φ(N)=(p-1)(q-1),

Trouver d tel que ed=1 mod φ(N), c.-à-d. d=e-

1.

Trouver d peut donc être fait efficacement puisque trouver e-1 est une problème «facile».

Nous avons vu que Nous avons vu que ceci est possible par ceci est possible par

l’algo d’Euclide l’algo d’Euclide étendu. étendu.

Page 12: Confidentialité II Systèmes à clé publique

Complexité du chiffrement et du déchiffrement RSA

Le message M ∈ Z*N est chiffré comme :

C = Me mod N

Nous avons vu que ceci peut être calculé efficacement par l’algo d’exponentiation rapide.

Supposons PK=(N,e) et SK=d.

Le cryptogramme C ∈ Z*N est déchiffré comme :

Cd mod N Essentiellement, le même travail que pour le chiffrement, sauf que d est habituellement plus grand que e.

Page 13: Confidentialité II Systèmes à clé publique

Quelle taille de clé pour RSA?

La seule menace connue contre RSA est la factorisation de N.

En particulier, factoriser N implique la connaissance de φ(N) et vice-versa.

Le meilleur algorithme pour factoriser N est plus efficace que l’approche naïve qui essaie les facteurs possibles l’un après l’autre.

En tenant compte du meilleur algorithme connu, la valeur de N devrait avoir au moins 1000 bits.

Cette taille n’est pas bonne pour toujours. En 1978 (RSA), 500 bits étaient suffisants.

Pour certaines applications, 2000 bits sont aujourd’hui recommandés.

Page 14: Confidentialité II Systèmes à clé publique

La sécurité de RSARSA peut être utilisé, semble-t-il, avec l’exposant e=3. La sécurité ne devrait pas en souffrir. Cependant, d ne peut évidemment pas être trop petit!!!!!

RSA a quelques problèmes de sécurité de la façon dont nous l’avons défini :

Le chiffrement du même message plus d’une fois produit toujours le même cryptogramme.

Si l’adversaire sait que le message clair M correspondant au cryptogramme C est «petit» (c.-à-d. M<7 par exemple) alors M peut être déterminé en vérifiant les chiffrements de courts messages.

La théorie donne des garanties de sécurité (pour autant que trouver d soit difficile à partir de N et e) seulement lorsque le message M est aléatoire dans 1...N-1.

Page 15: Confidentialité II Systèmes à clé publique

Chiffrements de clés secrètes

Les chiffrements et déchiffrements RSA (ou d’autres systèmes à clé publique) sont beaucoup moins efficaces que ceux des systèmes à clé secrète, rendant ainsi le chiffrement de masse impossible.

Les systèmes à clé publique sont cependant plus versatiles puisqu’ils ne nécessitent pas le partage de clés secrètes.

Nous pouvons obtenir le meilleur des deux mondes en utilisant un système à clés publiques pour partager une clé secrète de session pour votre système à clé secrète préféré :

Obélix tire une clé K au hasard pour AES, il détermine la clé publique RSA d’Astérix (N,e), Transmet C=Ke mod N à Astérix,

Astérix déchiffre K=Cd mod N.

K est utilisée par Astérix et Obélix pour chiffrer les données avec AES...

Astérix et Obélix partagent une clé Astérix et Obélix partagent une clé secrète AES secrète AES KK??

«key enveloping»«key enveloping»

Page 16: Confidentialité II Systèmes à clé publique

Problèmes avec le chiffrement RSA de clésRappelons ce que nous disions précédemment : RSA est un système qui peut être considéré sûr si le message à chiffrer est aléatoire dans l’intervalle 1...N-1.

Ceci n’est certainement pas le cas lorsque le message consiste en une clé pour AES de 128 bits ou, pire, une clé DES de 64 bits.

La méthode qui consiste à ajouter des «0» au bout de la clé n’est pas sûre!

Nous devons donc trouver une méthode de remplissage pour allonger les messages et les rendre aussi aléatoires que possible...

Page 17: Confidentialité II Systèmes à clé publique

OAEP: Remplissage optimal pour chiffrement

asymétrique OAEP est un standard qui permet de chiffrer des messages beaucoup plus courts que ce que la taille de N (dans RSA) permet. Supposons que N a n bits de

long.

Supposons les messages à envoyer ont m bits de long t.q. m=n-k0-k1.

aléatoire

G:{0,1}k0 -> {0,1}n-k0

H:{0,1}n-k0 -> {0,1}k0

fonction de hachagecryptographique (p.ex.

SHA256)

Est une fonction d’expansion

cryptographique :Un générateur pseudo-

aléatoire

Page 18: Confidentialité II Systèmes à clé publique

OAEP (II)Soient :

G:{0,1}k0 -> {0,1}n-k0 un générateur pseudo-aléatoire

H:{0,1}n-k0 -> {0,1}k0 une fonction de hachage cryptographique comme SHA256.

Alors, le message m∈{0,1}n-k0-k1 sera codé pour r aléatoire de longueur k0 par :

OAEP(m) = (m || 0k1)⊕G(r) || H((m || 0k1)⊕G(r))⊕r

Sur réception de OAEP(m) le destinataire sépare le bourrage en deux parties O1||O2= OAEP(m).

Calculer H(O1)⊕O2 = r, et

G(r)⊕O1 = m || 0k1.

Page 19: Confidentialité II Systèmes à clé publique

Génération de clés secrètes

La cryptographie à clé publique est née (officiellement) du problème de génération de clés secrètes à partir d’information publique, tandis que RSA permet de chiffrer.

Le protocole de Diffie-Hellman (1976) permet à deux parties de s’échanger une clé secrète à partir d’une discussion publique. Il est utilisé dans SSH pour la création d’un canal sécurisé.

L’hypothèse de calcul est différente de RSA (factorisation), elle repose sur la difficulté d’extraire des logarithmes discrets.

Page 20: Confidentialité II Systèmes à clé publique

Mise en placeConsidérons le groupe multiplicatif Zp*={1,...,p-1} l’ensemble des entiers modulo un nombre premier p.

Le groupe Zp* possède des générateurs (aussi appelé éléments primitifs). Un générateur g pour Zp* est tel que :

Zp* ={g0,g1,g2,...,gp-2}.

Il est possible de produire un nombre premier p de taille donnée et un générateur g pour Zp* par un algorithme efficace.

De plus, il est conjecturé que pour y=gx mod p, il est difficile de trouver x à partir de y, p, g. Autrement dit, calculer le logarithme dans Zp* est difficile.

Page 21: Confidentialité II Systèmes à clé publique

Échange de clé Diffie-Hellman Soit p un nombre premier et g∈Zp* un élément

primitif.

Le problème de Diffie-Hellman : étant donnés g et p premier, gx mod p, gy mod p trouver gxy mod p.

Le problème de Diffie-Hellman est supposé difficile.

x∈Zp-

1

y∈Zp

-1

O=gx mod p

A=gy mod p

K=Ax mod p

Oy mod p=K

(gx)y mod p=

gxy mod p=

=(gy)x mod p=

Page 22: Confidentialité II Systèmes à clé publique

Attention à l’homme du milieu!

O=gx mod p

C=gc mod p

C’=gc’ mod p

A=gy mod p

K’=gc’x mod p

K=gcy mod p

K=gcy mod pK’=gc’x mod p

Le protocole d’échange de clé de Diffie-Hellman n’est sûr que si le canal entre Obélix et Astérix est authentifié. Autrement, César peut partager une clé avec Obélix et une avec Astérix tandis qu’ils croient partager une clé entre eux.

Nous verrons plus loin comment ce problème peut être résolu!

Page 23: Confidentialité II Systèmes à clé publique

ConclusionLe chiffrement à clé publique offre des avantages indéniables par rapport au chiffrement à clé secrète.

Cependant, ces systèmes nécessitent plus de puissance de calcul et de longues clés.

Le chiffrement de clés symétriques par des méthodes asymétriques devient intéressant.

Le chiffrement à clé publique doit être utilisé avec une bonne méthode de remplissage sûre.

Même si les systèmes à clé publique permettent la distribution de clés, il faut absolument que l’expéditeur soit persuadé de l’intégrité de la clé publique utilisée pour le chiffrement.

Nous reviendrons à ce problème un peu plus tard.

Page 24: Confidentialité II Systèmes à clé publique

Conclusion (II)Nous avons vu comment un système à clé publique peut être utilisé pour l’échange de clés secrètes. Il s’agit du protocole de Diffie-Hellman.

Celui-ci est utilisé en pratique par SSH.

Il y a beaucoup d’autres systèmes à clé publique mais ceux-ci sont très peu utilisés dans la pratique :

El-Gamal et courbes elliptiques,

Paillier,

Rabin.

Page 25: Confidentialité II Systèmes à clé publique

Les limites de la sécurité

Page 26: Confidentialité II Systèmes à clé publique

Séance de pratique(authentification)

Plusieurs pays ont des restrictions sur l’exportation de logiciels et matériels cryptographiques.

Il semble que le chiffrement est davantage réglementé que l’authenticité. Le premier est considéré plus dangereux que le second.

Rivest (R dans RSA) prétend que cette distinction est tout à fait arbitraire :

Ces règles supposent que les systèmes autorisés ne peuvent être utilisés pour offrir la confidentialité.

Ce que Rivest défend, c’est que les modifications nécessaires sont très faciles à mettre en place sans nécessiter de cryptographie additionnelle.

Page 27: Confidentialité II Systèmes à clé publique

Confidentialité à partir de l’intégrité

CAMCAM(soft ou hard)(soft ou hard)

CAMCAM(soft ou hard)(soft ou hard)

K

M

t

(M,t)oui/non

Pouvez-vous utiliser une telle boîte pour obtenir de la confidentialité?

Boîte inviolableBoîte inviolableBoîte inviolableBoîte inviolable

Supposons que tous Supposons que tous les (les (MM,,tt) sont ) sont

valides pour une clé valides pour une clé KK..

Supposons que tous Supposons que tous les (les (MM,,tt) sont ) sont

valides pour une clé valides pour une clé KK..

Page 28: Confidentialité II Systèmes à clé publique

Solution

ti∈{0,1}l

CAMCAM(soft ou hard)(soft ou hard)

CAMCAM(soft ou hard)(soft ou hard)

K

CAMCAM(soft ou hard)(soft ou hard)

CAMCAM(soft ou hard)(soft ou hard)

K

M=M1,M2,...,Mk où Mi∈{0,1}

Si Mi=1 alors Ri

Si Mi=0 alors ti∈{0,1}l aléatoire

R=R1,R2,...,Rk où Ri∈{0,1}n sont aléatoires

((RR11,,tt11),(),(RR22,,tt22),...(),...(RRkk,,ttkk))

Si oui alors Mi=1Sinon Mi=0

Page 29: Confidentialité II Systèmes à clé publique

Les reditesSupposons qu’Astérix et Obélix soient connectés par un canal qui transmet toujours le message envoyé au destinataire, mais avec un délai possible arbitrairement long.

Ils utilisent un système sûr pour l’intégrité.

Obélix ne transmet jamais deux fois le même message. Ceci est garanti par un numéro de séquence.

Astérix peut ranger au plus N messages reçus acceptés par Obélix.

L’adversaire a le contrôle du canal (il peut tenter des redites).

Lorsqu’Astérix reçoit un nouveau message avec un CAM valide, il doit déterminer si celui-ci est nouveau ou s’il s’agit d’une redite.

Montrons que si Obélix transmet au plus N+1 messages, alors Astérix peut y parvenir tandis que si N+2 messages ou plus sont transmis, alors Astérix ne peut résoudre le problème.

Page 30: Confidentialité II Systèmes à clé publique

Puisque 4 Puisque 4 messages ont messages ont

été reçusété reçus

Reje

t!

Solution

memessagessage

iindicendice

CCAMAM

M1

1t

1

M2

2t

2

M3

3t

3

M4

4t

4

InIndicedice

CCAMAM

CANACANALL

(M3,3,t3

) 3 ✔(M4,4,t4

)

4 ✔(M2,2,t2

)

2 ✔

★Les redites sont impossibles si le message est toujours dans la table.

★Lorsque Astérix a rempli son tableau, il peut espérer un seul message supplémentaire avant de fermer la session.

(M1,1,t1)

(M1,1,t1)

Liste des Liste des messages messages

transmis dans transmis dans l’ordre transmis...l’ordre transmis...

Liste des Liste des messages messages

transmis dans transmis dans l’ordre transmis...l’ordre transmis...

Page 31: Confidentialité II Systèmes à clé publique

Impossibilité pour N+2 messages

memessagessage

iindicendice

CCAMAM

M1

1t

1

M2

2t

2

M3

3t

3

M4

4t

4

InIndicedice

CCAMAM

CANACANALL

(M3,3,t3

)(M4,4,t4

)

(M2,2,t2

)

César tire au hasard un indice i* parmi les N+1 messages transmis.César redit Mi*

★César attend que N+1 messages aient été transmis.★La table d’Astérix ne contient alors de l’information que sur N messages.

(Mi*,i*,ti*

)

★César réussira son attaque si i* n’est pas dans la tableau. Le message sera accepté par Astérix puisqu’il peut recevoir jusqu’à N+2 messages.

★La probabilité que i* ne soit pas dans la table est 2/(N+2), auquel cas Mi* sera une redite

i ✔

j ✔

Page 32: Confidentialité II Systèmes à clé publique

Fonctions de compression et de hachage

Soit h une fonction de hachage cryptographique qui prend 256 bits et produit une empreinte de 128 bits.

Peut-on construire une fonction H qui accepte des entrées de 512 bits, produit des empreintes de 128 bits et H est une fonction de hachage cryptographique comme h?

soit X une chaîne de 512 bits. Nous écrivons X=(X0,X1) où X0 et X1 sont chacun de 256 bits.

X0

X1

h

h

h

H(X)=H(X0,X1)=h(h(X0),h(X1))

Supposons qu’une collision x≠x’ sur H est trouvée : H(x)=H(x’) avec x≠x’Nous avons donc que : h(h(x0),h(x1))=h(h(x’0),h(x’1))

1) Si 1) Si ((hh((xx00),),hh((xx11))≠())≠(hh((x’x’00),),hh((x’x’11)) ))

alors nous avons une alors nous avons une collision sur ces deux collision sur ces deux

entrées!entrées!

1) Si 1) Si ((hh((xx00),),hh((xx11))≠())≠(hh((x’x’00),),hh((x’x’11)) ))

alors nous avons une alors nous avons une collision sur ces deux collision sur ces deux

entrées!entrées!

2) Si 2) Si ((hh((xx00),),hh((xx11))=())=(hh((x’x’00),),hh((x’x’11)) )) alors ou bien alors ou bien xx00≠≠x’x’00 ou bien ou bien xx11≠≠x’x’11. Ceci donne aussi une . Ceci donne aussi une collision pour collision pour hh. Ex. : Si . Ex. : Si xx00≠≠x’x’00 alors alors hh((xx00)=)=hh((x’x’00) est ) est une collision.une collision.

2) Si 2) Si ((hh((xx00),),hh((xx11))=())=(hh((x’x’00),),hh((x’x’11)) )) alors ou bien alors ou bien xx00≠≠x’x’00 ou bien ou bien xx11≠≠x’x’11. Ceci donne aussi une . Ceci donne aussi une collision pour collision pour hh. Ex. : Si . Ex. : Si xx00≠≠x’x’00 alors alors hh((xx00)=)=hh((x’x’00) est ) est une collision.une collision.

Page 33: Confidentialité II Systèmes à clé publique

RSASupposons qu’une clé publique pour RSA est N=33 et e=13.

Z33*={1,2,4,5,7,8,10,13,14,16,17,19,20,23,25,26,28,29,31,32}

33=3*11 (p=3,q=11) et |Z33*|= φ(33)=20.

Nous avons donc que d satisfait e*d = 1 mod φ(33) -> 13*d = 1 mod 20. L’algorithme d’Euclide étendu fait ce travail...

Nous trouvons d=17 car 13*17=221 = 1 mod 20.

Le message M=5 est chiffré par

C=513 mod 33= 5*((53)2)2 mod 33 =

5*((125 mod 33)2)2 mod 33= 5*(262)2=5*(676 mod 33)2 mod 33

5*162 mod 33 = 5*256 mod 33 = 5*25 mod 33 =

125 mod 33 = 26!!!!!

Déchiffrons maintenant:Déchiffrons maintenant:

26261717 mod 33 = 26*(((26 mod 33 = 26*(((2622))22))22))22 mod 33 = 26*(((676 mod 33) mod 33 = 26*(((676 mod 33)22))22))22 mod 33mod 33 = 26*((16= 26*((1622))22))22 mod 33 mod 33 = 26*(25= 26*(2522))22 mod 33 mod 33 = 26*(625 mod 33)= 26*(625 mod 33)22 mod 33 mod 33 = 26*31= 26*3122 mod 33 mod 33 = 26* (961 mod 33) mod 33= 26* (961 mod 33) mod 33 = 26*4 mod 33= 26*4 mod 33 = 104 mod 33 = 5!!!!!= 104 mod 33 = 5!!!!!