• Aucun résultat trouvé

Chapitre 1 : Notations et Rappels G´ en´ eraux

1.3 Rappels sur la Cryptographie

1.3.3 Authentification et Signature

Protocoles de reconnaissance

En 1987, Fiat et Shamir [47] ont classifi´e les diff´erentes cat´egories de protocoles de

reconnaissance selon trois diff´erents niveaux; En supposant, qu’Alice d´esire prouver son

identit´e `a Bob, nous avons :

1. Authentification. Alice peut prouver `a Bob qu’elle est Alice mais une tierce entit´e

ne pourra pas prouver `a Bob qu’elle est Alice ;

2. Identification. Alice peut prouver `a Bob qu’elle est Alice, et Bob ne pourra pas

faire croire `a quelqu’un d’autre qu’il est Alice ;

3. Signature. Ce protocole a les mˆemes propri´et´es que le pr´ec´edent et en plus, Alice

ne peut pas dire qu’elle n’a pas prouv´e son identit´e `a Bob ou que le message qu’elle

a sign´e ´etait diff´erent que celui re¸cu par Bob (i.e. elle ne peut pas r´epudier sa

signature). Autrement dit, Bob ne peut pas faire croire qu’Alice lui a prouv´e son

identit´e alors qu’elle ne l’a pas fait.

En fait le protocole d’authentification au sens de [47] ne sera utilis´e que lorsqu’Alice

et Bob ont des int´erˆets communs. Dans le cas contraire, les deux autres protocoles

doivent ˆetre utilis´es. En effet, dans le premier cas, Bob serait capable de prouver `a

une tierce entit´e qu’il est Alice alors que cela lui est impossible dans le cas d’un sch´ema

d’identification. La nuance entre identification et signature est plus subtile : dans le cas

du sch´ema d’identification, Bob est potentiellement capable de simuler des ´echanges entre

Alice et lui-mˆeme pour faire croire qu’il a re¸cu un message d’Alice (comme s’il imitait sa

signature), tandis qu’un protocole de signature l’empˆeche.

Dans la suite de cette th`ese, comme dans de nombreux travaux actuels, nous

confondons sch´emas d’authentification et d’identification. En effet, un protocole

d’authentification au sens de [47] suppose d’une part qu’Alice et Bob ont des int´erˆets

communs et que d’autre part, personne ne peut ´ecouter leurs ´echanges (sinon ce dernier

se retrouve dans les mˆemes conditions que Bob et pourra donc se faire passer pour Alice)

: cette confidentialit´e physique n’est pas assur´ee en g´en´eral.

Sch´emas de Signature

En introduisant la cryptographie `a cl´e publique [40], Diffie et Hellman ont aussi propos´e le

principe de la signature num´erique. Par analogie avec la signature manuscrite, la signature

num´erique permet d’authentifier l’auteur d’un document. Ainsi, on requiert g´en´eralement

qu’une signature soit :

Authentique. L’identit´e du signataire doit ˆetre retrouv´ee.

Infalsifiable. Personne ne peut se faire passer pour un autre.

Non-r´eutilisable. La signature fait partie du document sign´e et ne peut ˆetre utilis´ee

sur un autre document.

Inalt´erable. Une fois qu’un document est sign´e, il ne peut plus ˆetre modifi´e.

Non r´epudiable. Le signataire ne peut pas nier avoir sign´e.

Pour r´esumer, un sch´ema de signature ´electronique permet donc `a un signataire de

produire une preuve qu’il a effectivement ´emis un message. En s’appuyant sur [48], nous

rappelons la d´efinition suivante.

efinition 29. Un sch´ema de signature peut se d´ecrire selon quatre algorithmes

(SetupS,KeyGenS,SignS,VerifS):

SetupS(1λ), g´en`ere les param`etres globaux au syst`emeparam. Il est parfois confondu

avec l’algorithme KeyGenS.

Sign(sk, m;µ), retourne une signature σ du message m, sous la cl´e secr`ete sk et

l’al´ea µ.

Verif(vk, m, σ), v´erifie la validit´e de la signature σ par rapport au message m et `a la

cl´e de v´erification vk.

Signature de groupe Chaum et van Heyst ont propos´e le concept de signature de

groupe en 1991 [49]. L’id´ee d’un tel protocole est de permettre `a un groupe d’utilisateurs

de signer des messages au nom du groupe. Plus pr´ecis´ement, au lieu de signer en son nom

propre, chaque membre du groupe devient anonyme au sein dudit groupe et engage une

responsabilit´e collective lorsqu’il signe des messages. Quiconque v´erifiant la validit´e d’une

signature sera convaincu que le signataire ´etait effectivement un membre du groupe associ´e

`a une cl´e publique commune. Dans le cadre du projet TA, nous nous sommes int´eress´es

aux sch´emas de signature de groupe pour r´epondre `a une probl´ematique de respect de la

vie priv´ee des utilisateurs dans le contexte de l’Internet des Objets. Les r´esultats de ces

travaux seront expos´es aux chapitres 5 et 6. D´efinitions formelles et mod`ele de s´ecurit´e

adapt´es y seront propos´es.

Sch´ema d’engagement

Un sch´ema d’engagement (formalis´e dans [50]) permet `a un utilisateur d’engager une

valeur sans la r´ev´eler mais sans qu’il n’ait la possibilit´e de modifier cette valeur par la

suite. Informellement, un tel sch´ema fonctionne comme suit :

• Setup(1λ) g´en`ere les param`etres du syst`eme `a partir du param`etre de s´ecurit´e ;

• Commit(m;r) produit un engagementc`a partir du messagem en utilisant l’al´ea r;

• Decommit(c, m;r) d´ebloque l’engagementcet r´ev`ele le messagemainsi qu’un t´emoin

ω qui prouve l’ouverture correcte du message.

Un tel sch´ema doit v´erifier deux notions de s´ecurit´e dite d’indistinguabilit´e et

d’engagement (respectivementhidingetbinding, en anglais). Ces deux propri´et´es assurent

qu’un engagement c ne r´ev`ele pas d’information sur le message m (hiding) et que

l’utilisateur ne pourra plus changer la valeur dem une fois l’engagement r´ealis´e (binding).

Preuves de connaissances et preuves d’appartenance

Un protocole interactif peut se mod´eliser par un couple de machines de Turing (P,V)

actives `a tour de rˆole qui communiquent `a travers leurs rubans. On parlera de preuves

interactives lorsqu’un un prouveur P essaie de convaincre un v´erifieur V d’un certain

th´eor`eme. Suivant la nature du th´eor`eme, on distingue deux types de preuves interactives:

preuves d’appartenance `a un langage. Le prouveur d´emontre qu’une donn´ee publique

v´erifie une certaine condition, autrement dit qu’elle appartient `a un certain langage

formel.

preuve de connaissance. Le prouveur d´emontre sa connaissance d’un secret, non

accessible au v´erifieur.

Abord´e en 1978 par Rabin dans [51], le concept de preuve de connaissance

(proof of knowledge) a ´et´e ensuite repris par plusieurs travaux concurrents et/ou

compl´ementaires [47, 52, 50, 53, 54]. `A la fin d’un tel protocole, le v´erifieur obtient une

preuve que le prouveur connaˆıt bien le secret sans que ce dernier ne soit jamais r´ev´el´e.

Cependant, ce sont Goldwasser, Micali et Rackoff [55] qui, en 1985, ont ´et´e les

premiers `a quantifier l’information transmise lors d’un protocole interactif en introduisant

le concept de divulgation nulle de connaissance (zero-knowledge). Intuitivement, l’id´ee est

de montrer que toute quantit´e d’information calculable par le v´erifieur apr`es ex´ecution du

protocole est calculable en temps polynomial `a partir de la connaissance seule des donn´ees

initiales; autrement dit, la connaissance de la preuve n’apporte aucune information.

N´eanmoins, dans leur travaux, il est question de preuves d’appartenance `a un langage

plutˆot que de preuve de connaissance. En pratique, la principale diff´erence entre ces deux

concepts est que dans le second cas, le prouveur est une machine de Turing (probabiliste)

de puissance polynomiale et non infinie ; le v´erifieur, quant `a lui, est toujours une machine

de Turing polynomiale. Ainsi, dans le cas des preuves de connaissance, en consid´erant

que le prouveur connaˆıt le t´emoin (i.e. son secret) d’une instance publique d’un probl`eme

difficile (D´efinition 19) alors l’acceptation du protocole assure au v´erifieur que le prouveur,

puisque polynomial connaˆıt effectivement le secret.

Feige, Fiat et Shamir proposent alors de formaliser le concept de preuves de

connaissance zero-knowledge [52] pendant que Brassard, Chaum et Cr´epeau proposent

le concept voisin de preuves `a divulgation minimum (minimum disclosure proof) [50].

Nous nous appuyons sur le manuscrit de E. Bresson [31] pour d´efinir preuve de

connaissance et propri´et´e de divulgation nulle (dans toute la suite, on utilisera la

terminologie anglaise zero-knowlegde).

Preuve de connaissance Lors d’une preuve de connaissance, le prouveur cherche `a

convaincre le v´erifieur qu’il connaˆıt une solution `a un certain probl`eme difficile. Cette

solution, i.e. le secret du prouveur, n’est connue que de ce dernier. Une preuve

d’appartenance `a un langage peut donc se voir comme un preuve de connaissance au

cours de laquelle P prouve sa connaissance d’un t´emoin ω pour le pr´edicat x ∈ L.

La principale diff´erence entre preuve d’appartenance `a un langage [55] et preuve de

est donc capable de calculer son secret (ω) alors que dans le second cas, P, de puissance

polynomiale connaˆıt son secret d`es le d´ebut du protocole. Ainsi, lorsque le calcul d’un

t´emoin est un probl`eme difficile, le prouveur polynomial convainc donc le v´erifieur qu’il

connaˆıt effectivement le secret.

Extracteur de connaissance ou knowledge extractor Une preuve de connaissance

convainc un v´erifieur que le prouveur P connaˆıt effectivement un secret. ”Connaˆıtre un

secret” est alors formalis´e par la notion d’extracteur (ou knowledge extractor). C’est une

machine de Turing polynomiale disposant ayant le contrˆole deP : il pourra alors lui faire

ex´ecuter le protocole consid´er´e un nombre polynomial de fois tout en contrˆolant son ruban

al´eatoire. Not´e E, un tel extracteur est effectif si pour tout prouveur P accept´e par le

v´erifieur V avec probabilit´e non-n´egligeable, E pourra calculer le secret `a la suite de son

interaction avec P.

efinition Soit T un pr´edicat `a deux variables T(., .) D et ω. On dit que ω est un

t´emoin associ´e `a D si T(ω,D) = 1. On consid`ere une interaction entre P et V, o`u D est

une donn´ee initiale commune, au cours de laquelleP prouve la connaissance d’un t´emoin

ω associ´e `a D.

efinition 30 (Preuve de connaissance). Un protocole interactif, (P,V), est une preuve

de connaissance pour un t´emoin associ´e `a D si les conditions suivantes sont respect´ees:

Efficacit´e. P et V sont des machines de Turing polynomiales;

Consistance (correctness). Un prouveur honnˆete est accept´e par un v´erifieur

honnˆete avec une probabilit´e ´ecrasante :

D,ω, T(ω, D) = 1→Pr(P(ω),V)(x) = Accept]>1−negl(|D|).

Significativit´e (soundness). Il existe un extracteur de connaissance :

∃EP,D,Pr(P(∗),V)(x) = Accept] > 1−negl(|D|) =⇒ Pr(T(EP(D),D) = 1] >

1−negl’(|D|).

On dit alors que le pr´edicat T admet un syst`eme de preuve interactive de connaissance.

Preuves `a divulgation nulle de connaissance ou zero-knowledge

La propri´et´e de consistance assure le bon fonctionnement du syst`eme dans le cas

d’intervenants P et V honnˆetes alors que la significativit´e assure la s´ecurit´e du v´erifieur

face `a un prouveur malhonnˆete. Un tel prouveur a une chance n´egligeable d’ˆetre accept´e

de sorte que V pourra faire confiance au protocole.

Il reste d´esormais `a ´etudier le cas d’un v´erifieur malhonnˆete face `a un prouveur honnˆete.

La question est de d´efinir la s´ecurit´e du prouveur : pour qu’un tel protocole fonctionne,

le prouveur doit convaincre le v´erifieur. Pour conserver cette capacit´e, il doit laisser

transparaˆıtre le moins d’information possible au sujet de son secret lors de l’ex´ecution

d’une preuve. C’est pr´ecis´ement pour r´epondre `a cette probl´ematique que la notion de

zero-knowledge a ´et´e introduite dans [55]. L’objectif est d’assurer une ex´ecution au cours

de laquelle le v´erifieur n’apprendra rien de plus que les donn´ees communes D.

Pour formaliser cette propri´et´e en s’appuyant sur [55], on introduit un simulateur S

qui est une machine de Turing probabiliste et polynomiale communicant avecV. On dira

queSest bon si sa sortie al´eatoire form´ee par les ´echanges avecV et d’´eventuelles donn´ees

initiales est proche de la sortie al´eatoire obtenue lors d’une interaction r´eelle entre P et

V. `A partir de la donn´ee initiale D, on consid`ere une interaction entre P etV au cours de

laquelle P veut prouver qu’il connaˆıt le secret ω associ´e `a D. On appelle Vue(P(ω))(D)

la vue du v´erifieur, c’est-`a-direla distribution de variables al´eatoires d´ecrivant de tels

´echanges (les probabilit´es associ´ees sont dues aux machines probabilistesP et V).

efinition 31 (Zero-Knowledge). Le protocole interactif (P,V) est `a divulgation nulle

(zero-knowledge ou ZK) si pour tout v´erifieur (possiblement malhonnˆete) V˜, il existe un

simulateur proSV˜ tel que :

Vue(P(ω))(D)∼SV˜(D),

o`u le symbolepeut signifier ´egalit´e parfaite, statistique ou calculatoire. On parle

alors de protocole respectivement parfaitement, statistiquement ou calculatoirement

zero-knowlegde.

Preuves `a t´emoin indistinguable Les protocoles `a divulgation nulle sont souvent

coˆuteux en terme de communication [56]. Feige et Shamir proposent le concept –moins

fort– de preuves `a t´emoin indistinguable (witness indistinguishability) en 1990 [54]. Ces

preuves cachent le t´emoin utilis´e pour prouver une assertion. Intuitivement, dans le cas

d’une assertion pour laquelle il existe plusieurs t´emoins valides ωis, un protocole est `a

t´emoins indistinguables si un v´erifieur malhonnˆete ne peut pas d´ecider quel t´emoin a ´et´e

utilis´e lors d’une ex´ecution r´eussie.

Preuve de connaissance zero-knowledge non-interactives Une variantes des

preuves ZK consiste `a supprimer l’interaction entre le prouveur et le v´erifieur ; dans

ce cas, on parle de preuves `a divulgation nulle de connaissance non interactive, abr´eg´ee en

NIZK, pournon-interactive zero-knowledge en anglais. En 1987, Fiat et Shamir proposent

un paradigme pour rendre non-interactive n’importe quelle preuve interactive [47]. De

nombreux sch´emas de signature dont celles que nous pr´esentons aux Chapitres 5 et 6 en

tirent parti.