Cirkelsignatur

Den ring signatur (i engelsk  : Ring Underskrift ), også kaldet ring signatur er en kryptografisk metode, der gør det muligt for en person at underskrive elektronisk anonym besked eller et dokument på vegne af en "cirkel". Medlemmerne af denne cirkel vælges af underskrivelsens forfatter og informeres ikke nødvendigvis om deres engagement i oprettelsen af ​​den elektroniske signatur . Den eneste begrænsning er, at de alle skal have en offentlig kryptografisk nøgle.

Cirkelsignaturen har givet anledning til et derivat: tærskelcirkelsignaturen , hvor signaturen initieres af et foruddefineret antal cirkeldele.

Princip

Som titlen på artiklen, hvor den først er beskrevet, How to Leak a Secret indikerer , er det primære formål med denne signatur at lade information lækkes .

I denne artikel gives et eksempel på et medlem af et ministerkabinet, der ønsker at give en journalist information om premierministeren. Han ønsker åbenbart ikke at afsløre sin identitet, men ønsker at journalisten skal vide, at lækagen kommer fra kabinettet og ikke fra en joker. Cirkelsignaturen giver ham således mulighed for at underskrive som medlem af ministerkabinettet og ikke som individ, uden at hans kolleger er opmærksomme, eller nogen kan spore ham, i modsætning til gruppesignaturen, der pålægger et samarbejde mellem medlemmerne, der er inkluderet underskrift og muligheden for, at en person, der blev bestemt ved initialiseringen, kender identiteten på underskriveren.

En anden anvendelse foreslået i denne artikel er, at det er muligt at generere en signatur, som kun har værdi for modtageren. Kilden sender således et dokument underskrevet ved hjælp af en cirkelsignatur, der omfatter dens nøgle og modtagerens. Sidstnævnte, vel vidende at han ikke producerede det, har derfor bevis for, at budskabet virkelig kommer fra kilden. Men hvis han viser dokumentet til en tredjepart, kan sidstnævnte ikke være sikker på, at meddelelsen ikke er en falsk oprettet af modtageren.

Definition

En ringsignatur er defineret som værende data for fire algoritmer, nogle svarende til dem for en digital signatur : ( Init , Gen , Sign , Verify ). Disse fungerer som følger:

Disse algoritmer går hånd i hånd med tilhørende sikkerhedsopfattelser, som er signaturkorrektion , som specificerer, at hvis en signatur oprigtigt genereres, vil den altid blive accepteret. Den ikke-forfalskningsevne , der kræver uden at have en privat nøgle tilknyttet et af elementerne i sættet R , er det muligt at designe en gyldig signatur og anonymitet , hvilket siger, at det er umuligt at forbinde en signatur med dens underskriver.

Ordningen med Rivest, Shamir og Tauman

I denne del gives en beskrivelse af den ordning, der er foreslået af Rivest, Shamir og Tauman .

I dette diagram genererer brugeren en signatur σ for meddelelsen M, der skal underskrives, en fare v, dens private / offentlige nøglepar og de offentlige nøgler til de andre medlemmer af cirklen R = ( pk i ) i ∈ [1; n] . Derudover afhænger denne ordning af et krypteringsskema ( Enc , Dec ).

Brugere kan således verificere denne signatur ved hjælp af σ, M , v og alle de offentlige nøgler, der er involveret i oprettelsesprocessen.

Underskrift

Underskriveren genererer en hash σ af meddelelsen M og vælger derefter en nonce v 0 . For hver offentlig nøgle pk i ∈ R bortset fra sin egen vælger underskriveren en værdi x i tilfældigt, chifferet med den offentlige nøgle pk i og udfører en eksklusiv disjunktion af resultatet med værdien v, før der anvendes en symmetrisk permutation E σ til resultatet, som giver en ny værdi "  v i  ".

Hvilket giver iterativt: v i  : = E σ ( Enc pk i ( x i ) ⊕ v i-1 )

Manipulationen startes igen med de andre offentlige nøgler.

I sidste ende ender vi med en værdi v = v n . Vi kigger derefter efter værdien y, som, sat i eller eksklusiv med v fundet og permuteret med E σ , gør det muligt at finde v 0 . Med andre ord v 0 = E σ ( y ⊕ v ). Endelig bruger vi den private nøgle til at finde fortilfælde af y ved kryptering, det vil sige x = Dec sk ( y ).

Endelig bliver den returnerede signatur Σ = (v, (x i ) i )

Verifikation

Modtageren foretager genberegningerne v i = E σ (f (x i ) ⊕ v i + 1 ) for alle de offentlige nøgler til signaturen og kontrollerer, at den finder den originale v i slutningen.

Størrelsen på signaturen er lineær i N, hvilket svarer til størrelsen på cirklen, fordi det er nødvendigt at specificere farerne x i , som hver deltager bruger.

Bevis for koncept

Nedenfor er et bevis på koncept implementeret i Python eller Python3 fra det originale papir, der bruger RSA som et asymmetrisk kryptosystem. Cirklen indeholder fire medlemmer.

Kodet import os, hashlib, random, functools, Crypto.PublicKey.RSA class ring: def __init__(self, k, l=2048): self.k, self.l, self.n, self.q = k, l, len(k), 1 << l - 1 def sign(self, m, z): self.permut(m) s, u = [None]*self.n, random.randint(0, self.q) c = v = self.E(u) for i in list(range(z+1, self.n)) + list(range(z)): s[i] = random.randint(0, self.q) v = self.E(v^self.g(s[i], self.k[i].e, self.k[i].n)) if (i+1) % self.n == 0: c = v s[z] = self.g(v^u, self.k[z].d, self.k[z].n) return [c, ] + s def verify(self, m, X): self.permut(m) y = [self.g(X[i+1], self.k[i].e, self.k[i].n) for i in range(len(X)-1)] return functools.reduce(lambda x, i:self.E(x^y[i]), range(self.n), X[0]) == X[0] def permut(self, m): self.p = int(hashlib.sha1(m.encode('utf8')).hexdigest(), 16) def E(self, x): return int(hashlib.sha1(('%s%s'% (x, self.p)).encode('utf8')).hexdigest(), 16) def g(self, x, e, n): q, r = divmod(x, n) return q*n + pow(r, e, n) if (q+1)*n <= (1<<self.l)-1 else x if __name__ == '__main__': size, msg1, msg2 = 4, 'hello', 'world!' r = ring([Crypto.PublicKey.RSA.generate(2048, os.urandom) for x in range(size)]) for i in range(size): s1, s2 = r.sign(msg1, i), r.sign(msg2, i) assert r.verify(msg1, s1) and r.verify(msg2, s2) and not r.verify(msg1, s2)  

Andre ordninger

Derefter blev andre ordninger designet, herunder Dodis, Kiayias, Nicolosi og Shoup, der foreslår en ordning med underskrifter af konstant størrelse i antallet af brugere, der bruger akkumulatorer og Fiat-godkendelsesordningen. -Shamir . En anden version, i standardmodellen , med en størrelse, der øges som kvadratroden af ​​antallet af brugere ( O (√N) ) er blevet foreslået af Chandran, Groth og Sahai.

Kryptovalutaer

Cryptonote- teknologi bruger cirkelsignaturer . Det bruges i krypto-valutaer som Monero eller Bytecoin DarkNote.

Princippet om ringsignering er også bragt til ShadowCash, en kryptokurrency inspireret af Bitcoin .

Noter og referencer

  1. Rivest, Shamir og Tauman 2001 .
  2. Bender, Katz og Morselli 2006 .
  3. Dodis et al. 2004 .
  4. Chandran, Groth og Sahai 2007 .
  5. (da)  Cryptonote
  6. Shadowcash .

Bibliografi

  • [Bender, Katz og Morselli 2006] (da) Adam Bender, Jonathan Katz og Ruggero Morselli, "  Ring signaturer: Stærkere definitioner og konstruktioner uden tilfældige orakler  " , TCC ,2006, s.  60-79
  • [Chandran, Groth og Sahai 2007] (en) Nishanth Chandran, Jens Groth og Amit Sahai  (en) , "  Ringsignaturer af sublinear størrelse uden tilfældige orakler  " , Automata, Sprog, Programmering ,2007
  • [Dodis, Kiayias, Nicolosi og Shoup 2004] (en) Yevgeniy Dodis, Aggelos Kiayias, Antonio Nicolosi og Victor Shoup , ”  Anonym Identifikation i ad hoc-grupper  ” , Eurocrypt , LNC'er, vol.  3027,2004
  • [Rivest, Shamir og Tauman 2001] (da) Ronald Rivest , Adi Shamir og Yael Tauman , "  Hvordan man lækker en hemmelighed  " , Asiacrypt , lNCS,2001, s.  552-565 ( læs online [PDF] )
  • (da) Rynomster og Tecnovert, “  Shadow: Zero-knowledge Anonymous Distribueret Elektronisk Kontant via sporbare ringsignaturer  ” [PDF]

eksterne links

  • Pierre-Louis Cayrel, Optimering af kryptosystemer baseret på fejlkorrektionskoder (ph.d.-afhandling) ( læs online ) , kap.  6 ("cirkelsignatur ved tærskel, præsentation af cirkelsignaturen").