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.
D´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.
D´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.
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).
D´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 symbole ∼ peut 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.
Dans le document
Protocoles cryptographiques pour l’authentification numérique et le respect de la vie privée
(Page 41-47)