Slepi potpis

S Vikipedije, slobodne enciklopedije

Slepi potpis u kriptografiji, kako ga je uveo Dejvid Čom[1], predstavlja oblik digitalnog potpisa u kojem je sadržaj poruke prikriven (zaslepljen) pre nego što je potpisan. Rezultirajući slepi potpis može se javno verifikovati u odnosu na originalnu, nezaslepljenu poruku na način koji je uobičajen za regularni digitalni potpis. Slepi potpisi obično se koriste u protokolima koji se odnose na privatnost gde su potpisnik i autor poruke različite strane. Primeri uključuju kriptografske sisteme za izbore i šeme digitalnog novca.

Često korišćena analogija za kriptografski slepi potpis je fizičko postavljanje anonimnog glasačkog listića u posebnu kovertu obloženu karbonskim papirom na kojoj su prethodno odštampane akreditacije glasača. Službenik proverava akreditacije i potpisuje kovertu, čime prenosi svoj potpis na glasački listić unutar koverte pomoću karbonskog papira. Kada se jednom potpiše, paket se vraća glasaču, koji prenosi sada potpisan glasački listić u novu neobeleženu običnu kovertu. Na taj način, potpisnik ne vidi sadržaj poruke, ali treća strana kasnije može verifikovati potpis i znati da je potpis važeći u okviru ograničenja osnovne šeme potpisa.

Slepi potpisi takođe mogu biti korišćeni radi obezbeđivanja nepovezanosti, što sprečava potpisnika da poveže zaslepljenu poruku koju potpisuje sa kasnijom nezaslepljenom verzijom koju može biti pozvan da verifikuje. U ovom slučaju, odgovor potpisnika prvo se "razmazuje" pre verifikacije na način koji čini potpis važećim za nezaslepljenu poruku. Ovo može biti korisno u šemama gde je anonimnost potrebna.

Šema slepog potpisa može se implementirati korišćenjem nekoliko uobičajenih šema potpisa s javnim ključem, na primer RSA i DSA. Da bi se izveo takav potpis, poruka se prvo "zaslepljuje", obično kombinovanjem sa nekim nasumičnim "zaslepljujućim faktorom". Zaslepljena poruka se šalje potpisniku, koji je potom potpisuje koristeći standardni algoritam potpisa. Rezultirajuća poruka, zajedno sa faktorom zaslepljivanja, može se kasnije verifikovati u odnosu na javni ključ potpisnika. U nekim šemama slepog potpisa, poput RSA, čak je moguće ukloniti faktor zaslepljivanja iz potpisa pre nego što se verifikuje. U ovim šemama, konačni izlaz (poruka/potpis) šeme slepog potpisa identičan je onom u normalnom protokolu potpisa.

Upotreba[uredi | uredi izvor]

Šeme slepog potpisa nalaze široku primenu u aplikacijama gde je privatnost pošiljaoca važna. To uključuje različite "digitalne novčane" šeme i protokole glasanja.

Na primer, integritet nekog elektronskog sistema za glasanje može zahtevati da svaki glasački listić bude overen od strane izborne vlasti pre nego što može biti prihvaćen za brojanje; to omogućava vlastima da provere akreditacije glasača kako bi se osiguralo da imaju pravo glasa, i da ne podnose više od jednog glasa. Istovremeno, važno je da ova vlast ne sazna izbore glasača. Slep potpis koji se ne može povezati pruža ovu garanciju, jer vlast neće videti sadržaj bilo kog glasačkog listića koji potpisuje, i neće moći povezati zaslepljene glasačke listiće koje potpisuje sa nezaslepljenim listićima koje prima radi brojanja.

Šeme slepog potpisa[uredi | uredi izvor]

Šeme slepog potpisa postoje za mnoge protokole potpisa javnog ključa. Formalnije, šema slepog potpisa je kriptografski protokol koji uključuje dve strane - korisnika Alis, koja želi da dobije potpise na svojim porukama, i potpisnika Boba, koji poseduje svoj tajni ključ za potpisivanje. Na kraju protokola, Alis dobija Bobov potpis na poruci m, a da Bob ništa ne sazna o poruci. Ova intuicija da se ništa ne sazna je teško precizno izraziti matematičkim jezikom. Uobičajeni pristup je pokazati da za svakog (napadajućeg) potpisnika postoji simulator koji može izbaciti iste informacije kao potpisnik. Ovo je slično načinu na koji se definiše nula-znanje u sistemima nula-znanja dokaza.

Slepi RSA potpisi[uredi | uredi izvor]

[2]

Jedan od najjednostavnijih šema slepih potpisa baziran je na RSA potpisivanju. Tradicionalni RSA potpis se računa podizanjem poruke m na tajni eksponent d modula javnog modula N. Slepa verzija koristi slučajnu vrednost r, tako da je r relativno prosto sa N. r se podiže na javni eksponent e modula N i rezultujuća vrednost remodN se koristi kao faktor slepenja. Autor poruke računa proizvod poruke i faktora slepenja, tj.:

m′ ≡ mre (mod N)

i šalje dobijenu vrednost m′ autoritetu za potpisivanje. Pošto je r slučajna vrednost i preslikavanje r ↦ r e modN je permutacija, sledi da je mod remodN takođe slučajno. Ovo implicira da m′ ne otkriva nikakve informacije o m. Autoritet za potpisivanje zatim računa slepi potpis s′ kao:

s′ ≡(m′)d (mod N)

s′ se zatim šalje autoru poruke, koji zatim može ukloniti faktor slepenja da otkrije s, važni RSA potpis poruke m:

s≡s⋅ r−1 (mod N)

Ovo funkcioniše zato što RSA klučevi zadovoljavaju jednačinu redr (mod N), a zatim

s≡s⋅ r−1≡(m′)dr−1≡mdredr−1≡mdr r−1≡md (mod N)

Dakle s je zaista potpis za m.

U praksi, obično je željeno da potpisivanje jedne slepe poruke proizvede najviše jednu važeću potpisanu poruku. Ovo znači jedan glas po potpisanom glasačkom spisku na izborima, na primer. Ova osobina se ne zadovoljava jednostavnom šemom opisanom gore: originalna poruka i odslepljeni potpis su važeći, ali i slepa poruka i slep potpis, i verovatno druge kombinacije date pametnim napadačem. Rešenje za ovo je slepo potpisivanje kriptografskog heša poruke, a ne same poruke.[3]

Reference[uredi | uredi izvor]

  1. ^ Chaum, David (1983). "Blind Signatures for Untraceable Payments" (PDF). Advances in Cryptology. Vol. 82. pp. 199–203
  2. ^ Goldwasser, S. and Bellare, M. "Lecture Notes on Cryptography" Archived 2012-04-21 at the Wayback Machine. Summer course on cryptography, MIT, 1996–2001
  3. ^ The One-More-RSA-Inversion Problems and the Security of Chaum’s Blind Signature Scheme