• Aucun résultat trouvé

2.6 Schémas de signature

2.6.3 Signatures proxy anonymes

Spécification et propriétés de sécurité

Un schéma de signature proxy anonyme est un schéma de signature qui permet à un uti- lisateur de déléguer sa signature à un autre utilisateur en lui conférant un mandat, tout en préservant la vie privée des mandataires. Fuchsbaueur et Pointcheval [FP08] définissent un tel schéma à partir de cinq algorithmes :

— Setup(κ), qui génère les paramètres publics, la clé de l’émetteur ik ainsi que la clé de certificat de l’autorité d’ouverture ock – cette clé permet d’utiliser Open pour apprendre le signataire d’une signature ; pour s’enregistrer, un utilisateur génère une paire de clés (vku,sku) et reçoit un certificat cert sur vku de l’émetteur.

— Delegate, qui prend skx, vkyet éventuellement un mandat conféré à x en argument ; cet

algorithme génère un mandat de x sur y, permettant à y de signer des messages pour x, et éventuellement pour l’utilisateur ayant conféré un mandat à x.

— PSig, qui prend sky, un message M ainsi qu’un mandat conféré à y provenant de x –

ce mandat peut être délégué par de multiples utilisateurs entre x et y –, et renvoie une signature σ.

— PVerif, qui prend vkx, un message M et une signature σ en argument, et renvoie True ou

False.

— Open, qui prend la clé d’ouverture okxassociée à x – générée à partir de la clé de l’autorité

d’ouverture ock –, une signature σ et un message M, et renvoie le signataire final ainsi que la chaîne d’utilisateurs lui ayant délégué le mandat.

Les auteurs définissent également les quatre propriétés de sécurité qu’un schéma de signa- ture proxy anonyme doit garantir ; informellement, ces propriétés sont les suivantes :

Conformité Un signataire honnête ayant reçu une délégation légitime est capable d’émettre des signatures valides.

Anonymat Étant donnés un message, un utilisateur x ayant mandaté deux utilisateurs hon- nêtes y0et y1, les signatures de y0et de y1au nom de x sont indistinguables.

2.6 Schémas de signature

Traçabilité Tout signature valide peut être ouverte par l’autorité d’ouverture.

Fausses accusations Un utilisateur honnête ne peut être faussement accusé d’avoir délégué un mandat ou d’avoir signé un message sous le mandat d’un utilisateur pour lequel il n’a pas reçu de mandat.

Notons qu’en empêchant les fausses accusations, un schéma de signature proxy anonyme garantit également l’inforgeabilité des signatures.

Instanciation

Le schéma de signature proxy anonyme instancié par Abe et coll. [Abe+10] repose sur les signatures automorphes ainsi que sur le système de preuve de Groth et Sahai [GS08] (voir section2.5.2). Sa préparation repose donc sur celle du système de preuve et celle des signatures automorphes. Dans la suite, nous considérons un groupe bilinéaire Λ = (p,G1,G2,GT,e,G1,G2),

les éléments permettant de s’engager dans G1– Y1, Y2et Y3– et dans G2– Z1, Z2et Z3–, ainsi

que ceux nécessaires aux signatures automorphes – F, K et T .

Pour s’enregistrer un utilisateur U génère une paire de clés de signature automorphes skU,

vkU = (VU,WU) et reçoit un mandat de l’émetteur C, c’est-à-dire un certificat certU :

certU = Cert(vkU,skC,_) = (AU,CU,DU,RU,SU)

L’utilisateur U est alors capable de signer des messages au nom de C sans révéler ni son cer- tificat, ni sa clé de vérification. Pour signer un message M, U calcule les éléments suivants :

— une signature automorphe sur M : σ = SPSign(skU,M,_) = (AM,CM,DM,RM,SM) ;

— un engagement sur sa clé de vérification : CvkU = Com(vkU,_) = (CVU,CWU) ;

— un engagement sur son certificat : CcertU = Com(certU,_) = (CAU,CCU,CDU,CRU,CSU) ;

— un engagement sur le seul élément de la signature dépendant de sa clé de signature, AM:

CAM = Com(AM,_) ;5

— une preuve que le certificat engagé dans CcertU est valide pour la clé engagée dans CvkU :

πcertU = nizk n certU,vkU : SPVerif (certU,vkU,vkC) ∧e(VU,G2) = e(G1,WU) o ;

— une preuve que la signature partiellement engagée dans CAMest valide pour la clé enga-

gée dans vkU et le message M :

πσ = nizk

n

AM,WU : e(AM,WU ·DM) = e(K · M,G2) · e(T ,SM)

o

.

5. Le schéma de signature automorphe ne garantit pas l’indistinguabilité des clés, c’est-à-dire qu’il est peut-être possible de savoir si deux signatures ont été émises par le même signataire ; il faut donc masquer l’élément qui dépend de la clé de signature.

Finalement, une signature proxy anonyme de l’utilisateur U sur le message M est le multiplet (CvkU,CcertU,CAM,CM,DM,RM,SM,πcertU,πσ).

Une telle signature est valide si :

— πcertU est valide pour les engagements CcertU et CvkU, et pour les éléments publics vkC,

G1, G2, F, K, T , M ;

— πσ est valide pour les engagements CAM et CWU, et pour les éléments publics DM, SM, K,

T, M, G2;

— les équations (2.13) et (2.14) sont valides pour CM, DM, RM, SM, F, G1et G2.

Un utilisateur peut construire plusieurs signatures proxy anonymes avec les mêmes enga- gements sur sa clé de vérification et sur son certificat, ce qui permet d’associerces signatures. Dans ce cas, il suffit de vérifier la preuve πcertU pour la première signature, et de vérifier unique-

ment les πσdes signatures ultérieures. Dans la suite, nous notons APSign(skU,M) la signature

et la preuve πσ, c’est-à-dire :

ς = APSign(skU,M) = (CAM,CM,DM,RM,SM,πσ),

et nous noterons APVerif(ς,M,CvkU) = True si les éléments contenus dans la signature ς sont

compatibles avec l’engagement CvkU et le message M.

Il est possible de construire une signature proxy anonyme à plusieurs niveaux de délégations en construisant une chaîne de certificats, et de construire des preuvesnizkprouvant qu’une telle chaîne est valide sans la révéler.

Comme ce schéma repose sur le schéma de signature automorphe de Abe et coll. [Abe+10] et sur le système de preuves de Groth et Sahai [GS08], il est également inforgeable face à des attaques par messages choisis, avec un avantage AvAP,eu-cma(κ,`) négligeable, et à divulgation nulle de connaissance avec un avantage AvAP,indist.(κ) qui est nul ou négligeable suivant la crs

employée.6