Blind signatur

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. september 2021; checks kræver 3 redigeringer .

Blind signatur ( engelsk  blind signatur ) er en type digital signatur , hvis ejendommelighed er, at den underskrivende part ikke kan kende nøjagtigt indholdet af det underskrevne dokument. Konceptet med en blind signatur blev opfundet af David Chaum [1] i 1982, han foreslog også den første implementering gennem RSA-algoritmen . Sikkerheden i blindsignaturordningen var baseret på vanskeligheden ved at tage højde for store sammensatte tal . Siden da er en lang række andre ordninger blevet foreslået [2] [3] .

Beskrivelse

Den grundlæggende idé med blinde signaturer er som følger:

I slutningen af ​​denne protokol ved part B intet om besked t, ej heller om signaturen under denne besked.

Denne ordning kan sammenlignes med en konvolut, hvori et dokument og et kopiark er placeret. Hvis du underskriver konvolutten, bliver underskriften påtrykt dokumentet, og når konvolutten åbnes, vil dokumentet allerede være underskrevet.

Formålet med en blind underskrift er at forhindre underskriver B i at se A's besked om, at han underskriver, og den tilsvarende underskrift under den meddelelse. Derfor kan den underskrevne meddelelse ikke yderligere associeres med part A.

En sikker blindsignaturordning skal tilfredsstille 3 egenskaber, nemlig:

  1. Nul viden . Denne egenskab hjælper brugeren med at få en signatur på en given besked uden at udsætte selve beskeden for underskriveren.
  2. Sporbarhed . Underskriveren kan ikke spore signatur-meddelelse-parret, efter at brugeren har offentliggjort signaturen på sin besked.
  3. Umulighed . Kun underskriveren kan generere en gyldig signatur. Denne egenskab er den vigtigste og skal være opfyldt for alle signaturordninger.

På grund af egenskaberne nulviden og ikke-sporbarhed kan blindsignaturordningen bruges i vid udstrækning i applikationer, hvor der er behov for fortrolighed, for eksempel i elektroniske afstemningssystemer [4] [5] [6] [7] .

Blind signatur algoritmer

Fuldstændig blind signatur

I betragtning af situationen: Bob er notar . Alice har brug for ham til at underskrive dokumentet uden at have nogen idé om dets indhold. Bob bekræfter kun, at dokumentet er attesteret på det angivne tidspunkt. Så handler de i henhold til følgende algoritme:

I denne plan vil Alice have Bob til blindt at underskrive beskeden . For det:

  1. Alice krypterer beskeden med funktionen og modtager den krypterede besked .
  2. Alice sender en krypteret besked til Bob.
  3. Bob underskriver blindt (fordi han ikke ved, hvad der er indeni) beskeden med funktionen og modtager .
  4. Bob sender tilbage til Alice.
  5. Alice modtager og fjerner sin kryptering og får: .

Denne protokol virker kun, hvis signerings- og krypteringsfunktionerne er kommutative .

Blind signatur

  1. Bob forbereder n dokumenter, som hver indeholder nogle unikke ord (jo flere n, jo mindre chance har Bob for at snyde).
  2. Bob maskerer hvert dokument med en unik maskeringsfaktor og sender dem til Alice.
  3. Alice modtager alle dokumenter og vælger tilfældigt n-1 af dem.
  4. Alice beder Bob om at sende maskeringsfaktorer til de valgte dokumenter.
  5. Bob gør det.
  6. Alice åbner n-1 dokumenter og sikrer sig, at de er korrekte.
  7. Alice underskriver det resterende dokument og sender det til Bob.
  8. Bob har nu et dokument underskrevet af Alice med et unikt ord, som Alice ikke kender.
RSA-protokol

Den første implementering af blinde signaturer var af Chaum ved hjælp af RSA-kryptosystemet:

Antag, at Bob oprindeligt har en offentlig nøgle , hvor  er modulet og  er den offentlige eksponent for nøglen.

  1. Alice vælger en tilfældig maskeringsfaktor relativt prime til , og beregner .
  2. Alice sender en åben kanal til Bob.
  3. Bob beregner ved hjælp af sin private nøgle .
  4. Bob sender tilbage til Alice.
  5. Alice fjerner sin originale forklædning og modtager den originale besked underskrevet af Bob som følger: .

Chaum kom med en hel familie af mere komplekse blindsignaturalgoritmer, samlet kaldet uventede blindsignaturer . Deres ordninger er endnu mere komplicerede, men de giver flere muligheder [1] .

Blind signatur baseret på Schnorr EDS

Lad Alice ønske at underskrive en besked fra Bob på en sådan måde, at Bob for det første ikke kunne stifte bekendtskab med beskeden i løbet af underskrivelsen, og for det andet, så Bob ikke efterfølgende kunne, efter at have modtaget beskeden og den tilhørende underskrift, identificere den bruger, der startede blindsignaturprotokollen for denne specifikke meddelelse (Alice). Denne protokol implementeres som følger:

  1. Alice indleder interaktion med Bob.
  2. Bob sender værdien til Alice .
  3. Alice beregner værdierne (w og t er tilfældige tal, der ikke overstiger ), og sender derefter værdien til Bob .
  4. Bob beregner en værdi sådan, at , og sender den til Alice.
  5. Alice beregner en signatur , hvor og , som er autentisk med hensyn til beskeden [8] .
Bevis

Signaturens ægthed bevises som følger. Det følger af og . I dette tilfælde er problemet med anonymitet løst, da enhver tripel fra sættet af sådanne tripler, der blev dannet af Bob, kan sammenlignes med signaturen til dette dokument . Faktisk har vi: og , dvs. med et ligesandsynligt tilfældigt valg af termer , og signaturen blev genereret med lige stor sandsynlighed fra enhver tripel inkluderet i sættet af tripler dannet af underskriveren. Vi bemærker også, at Bob ikke engang har mulighed for at bevise, at på det tidspunkt, hvor underskriften af ​​dette dokument blev dannet, var han ikke bekendt med det.

 

Blind signatur baseret på GOST R 34.10-94 Indstillinger

p  er primtal , 510 ≤ | p | ≤ 512 (eller 1022 ≤ | p | ≤ 1024), hvor |p| er kapaciteten af ​​den binære repræsentation af tallet p.

q er en stor primtal divisor af p-1, 255 ≤ | q | ≤ 256 (eller 511 ≤ | q | ≤ 512)

α ≠ 1, α < p , mod p = 1.

Beregning
  1. Behov for at generere tilfældig k , 1 < k < q ;
  2. R = ( mod p ) mod q  er den første del af signaturen;
  3. H = Hash(m) , hvor Hash  er hashfunktionen beskrevet i GOST R 34.11-94 standarden , m  er meddelelsen, der skal underskrives;
  4. S = kH + zR mod q , hvor z  er den private nøgle .
  5. Hvis S=0, gentag derefter operation 1-4.
Kontrollerer
  1. 0 < R < q eller 0 < S < q. Hvis mindst en af ​​de to betingelser ikke er opfyldt, er signaturen ugyldig. Ellers:
  2. R' = ( mod p ) mod q , hvor y  er den offentlige nøgle ;
  3. Hvis R = R' , så er signaturen gyldig [9] .
Blind signatur baseret på STB 1176.2-99

Den hviderussiske standard giver følgende protokol til generering af en blind signatur til dokumentet M :

  1. Det er nødvendigt at generere en tilfældig k sådan at 1 < k < q og beregne . Disse handlinger udføres af underskriveren. Den sender så tallet R til brugeren;
  2. Brugeren genererer tilfældige tal ε og τ således, at 1 < ε, τ < q og beregner derefter , og E = E'  - τ mod q ; E  - det første element i signaturen - sendes til underskriveren;
  3. Underskriveren beregner det andet element af signaturen S = (k - xE) mod q og sender S til brugeren;
  4. Brugeren beregner S' = S + ε mod q .

I denne beskrivelse anvendes følgende parametre: q  er det modul, der anvendes til beregninger, simpelt; a  er det overordnede element; x  - privat nøgle; y  er den offentlige nøgle [9] .

Kollektiv blindsignatur

Lad være  offentlige nøgler ejet af s brugere. Lad der være en besked M , som m af dem ønsker at underskrive. I dette tilfælde kan alle signaturer kombineres til én, hvis længde er lig med længden af ​​én brugers signatur og ikke afhænger af m . Dette implementeres i henhold til reglerne i følgende 1 protokol:

  1. Hver af de m brugere genererer et tilfældigt tal < p , hvor j = , p  er et stort primtal. Derefter beregner hver af de m brugere mod p ( k  er en stor primpotens) og sender dette tal til alle andre brugere fra denne gruppe.
  2. Hver bruger beregner mod p . Dernæst beregnes e = f(R,M) = RH mod q , hvor q  er et stort primtal forskelligt fra p , H = Hash(M)  er en hashfunktion. Tallet e vil være det første element i den kollektive signatur.
  3. mod p  er brugerens andel. Hver bruger beregner denne andel og giver den til de andre.
  4. Hver bruger beregner derefter mod p . Dette er det andet element i den kollektive signatur.
Verifikation af den kollektive blinde signatur

mod p  er den delte offentlige nøgle. Baseret på det, verificeres den kollektive blindsignatur i henhold til følgende algoritme:

  1. Mod p beregnes .
  2. Beregn e' = f(R,M) = RH mod q
  3. Hvis e' = e , så er signaturen gyldig [9] .

Ansøgning

Banksystemer

Protokollen for blinde signaturer har fundet den bredeste anvendelse inden for digitale penge . For at indskyderen ikke skal snyde banken, kan man f.eks. bruge følgende protokol: Indskyderen skriver den samme seddelværdi på hundrede dokumenter med forskellige numre og indsætter dem i krypteret form hos banken. Banken vælger tilfældigt og kræver at åbne 99 (eller n-1) kuverter, sørger for, at der er skrevet $10 overalt, og ikke $1000, og underskriver derefter den resterende konvolut blindt, uden at se regningsnummeret.

En enklere mulighed kan være tilvejebragt: Banken har sit eget par offentlige nøgler tildelt til hver pålydende værdi af vekslen. Så sendes kun seddelnummeret under signaturen, og der er ingen grund til at tjekke pålydende værdi før underskriften [1] .

Hemmelig afstemning

Blinde underskrifter bruges til hemmelig afstemning . I Fujioka, Okamoto og Ota's protokol forbereder vælgeren en stemmeseddel med sit valg, krypterer den med en hemmelig nøgle og maskerer den. Derefter underskriver vælgeren stemmesedlen og sender den til validatoren. Valideren verificerer, at underskriften tilhører en registreret vælger, som endnu ikke har stemt.

Hvis stemmesedlen er gyldig, underskriver validatoren stemmesedlen og returnerer den til vælgeren. Vælgeren fjerner forklædningen og afslører dermed den krypterede stemmeseddel, der er underskrevet af validatoren. Dernæst sender vælgeren den således opnåede underskrevne og krypterede stemmeseddel til skranken, som kontrollerer underskriften på den krypterede stemmeseddel.

Hvis stemmesedlen er gyldig, sætter stemmetælleren den på en liste, der offentliggøres efter hele afstemningen. Efter at listen er offentliggjort, kontrollerer vælgerne, at deres stemmesedler er på listen, og sender tælleren de nødvendige dekrypteringsnøgler for at åbne deres stemmesedler. Tælleren bruger disse nøgler til at tyde stemmesedlerne og tilføjer afstemningen til totalen. Efter valget udsteder kassereren dekrypteringsnøgler sammen med krypterede stemmesedler, så vælgerne selvstændigt kan verificere valget [10] .

Blind signatur sårbarheder

RSA-algoritmen kan være genstand for et angreb, takket være hvilket det bliver muligt at dekryptere en tidligere blindt underskrevet meddelelse, og videregive den som en meddelelse, der endnu ikke er underskrevet. Baseret på det faktum, at underskriftsprocessen svarer til dekryptering af underskriveren (ved hjælp af sin private nøgle), kan en angriber signere en allerede blindt underskrevet version af meddelelsen krypteret med underskriverens offentlige nøgle, det vil sige underskrive meddelelsen .

hvor  er den krypterede version af beskeden. Når beskeden er underskrevet, er klarteksten let hentet:

hvor  er Euler-funktionen . Nu er beskeden nem at modtage.

Angrebet virker, fordi underskriveren i denne ordning underskriver selve beskeden direkte. I modsætning hertil vil underskriveren i konventionelle signaturskemaer typisk underskrive f.eks. en kryptografisk hashfunktion . Derfor, på grund af denne multiplikative egenskab ved RSA , bør den samme nøgle aldrig bruges til både kryptering og blind signering [8] .

Se også

Noter

  1. ↑ 1 2 3 Bruce Schneier, anvendt kryptografi. 2. udgave. Protokoller, algoritmer og kildetekster i C-sprog, Triumph forlag, 2002
  2. Jean Kamenich, Jean-Marc Piveto, Markus Stadler, "Blinde signaturer baseret på det diskrete logaritmeproblem", Eurocrypt, side 428-432, Springer-Verlag, 1995.
  3. Qalian Chakrabortu, Jean Mehta, "Et stemplet blind signaturskema baseret på elliptisk kurve diskret logaritmeproblem", International Journal of Network Security, udgave 14, side 316-319, 2012.
  4. Lung-Chang Lin, Ming-Shiang Hang, Chin-Chen Chang "Improving Security for Anonymous E-Voting Over the Web", Computer Standards and Interfaces, Issue 25, pages 131-139, 2003.
  5. Tatsuaki Okamoto, "Efficient Blind and Partially Blind Signatures Without Random Predictions", Collection of Papers "Theory of Cryptography", side 80-99, Springer-Verlag, 2006.
  6. Markus Ruckert, "Blind signatur baseret på gitter", samling af papirer fra Asiacrypt-konferencen, side 413-430, Springer-Verlag, 2010.
  7. Daniel Ortiz-Arroyo, Claudia Garcia-Zamora, "Another Improvement to the Mu-Varadarajan Electronic Voting Protocol", Computer Standards and Interfaces, Issue 29, pages 471-480, 2007.
  8. ↑ 1 2 Moldovsk N.A. Workshop om offentlige nøglekryptosystemer. - 2007. - 304 s. — ISBN 5-9775-0024-6 .
  9. ↑ 1 2 3 N.A. Moldovisk. Teoretiske minimums- og digitale signaturalgoritmer. - BVH-Petersburg, 2010. - 304 s. - ISBN 978-5-9775-0585-7 .
  10. Anisimov V.V. Protokoller for de to agenturer Fujioka-Okamoto-Ohta og Sensus . Kryptografiske metoder til informationsbeskyttelse .

Litteratur

  • Schneier, B. Anvendt Kryptografi. 2. udgave. Protokoller, algoritmer og kildetekster i C-sprog - "Triumph", 2002
  • Klyuzhev A. Elektronisk afstemning, 2003
  • Shangin, V. F. , Sokolov, A. V. Informationssikkerhed i distribuerede virksomhedsnetværk og -systemer - "DMK", 2002
  • Chaum, D. Blind signaturer for ikke-sporbare betalinger - Springer-Verlnag, 1998
  • Moldovyan N. A. Workshop om offentlige nøglekryptosystemer, 2007
  • Moldovyan N. A. Teoretisk minimum og grundlæggende for digital signatur, 2010