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] .
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:
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] .
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:
Denne protokol virker kun, hvis signerings- og krypteringsfunktionerne er kommutative .
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.
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 EDSLad 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:
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.
BeregningDen hviderussiske standard giver følgende protokol til generering af en blind signatur til dokumentet M :
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] .
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:
mod p er den delte offentlige nøgle. Baseret på det, verificeres den kollektive blindsignatur i henhold til følgende algoritme:
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] .
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] .
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] .