Sokea allekirjoitus ( englanniksi blind signature ) on digitaalisen allekirjoituksen tyyppi , jonka erityispiirre on, että allekirjoittaja ei voi tietää tarkasti allekirjoitetun asiakirjan sisältöä. David Chaum [1] keksi sokean allekirjoituksen käsitteen vuonna 1982, ja hän ehdotti myös ensimmäistä toteutusta RSA-algoritmin kautta . Sokean allekirjoitusjärjestelmän turvallisuus perustui suurten yhdistelmälukujen huomioon ottamisen vaikeuteen . Sen jälkeen on ehdotettu monia muita järjestelmiä [2] [3] .
Sokeiden allekirjoitusten perusidea on seuraava:
Tämän protokollan lopussa osapuoli B ei tiedä mitään viestistä t eikä tämän viestin alla olevasta allekirjoituksesta.
Tätä mallia voidaan verrata kirjekuoreen, johon asiakirja ja kopioarkki asetetaan. Jos allekirjoitat kirjekuoren, allekirjoitus painetaan asiakirjaan, ja kun kirjekuori avataan, asiakirja on jo allekirjoitettu.
Sokean allekirjoituksen tarkoituksena on estää allekirjoittajaa B näkemästä A:n viestiä, jonka hän allekirjoittaa, ja vastaavaa allekirjoitusta viestin alla. Tästä syystä allekirjoitettua viestiä ei voi yhdistää osapuolelle A.
Suojatun sokean allekirjoitusjärjestelmän on täytettävä kolme ominaisuutta, nimittäin:
Nollatiedon ja jäljittämättömyyden ominaisuuksien vuoksi sokea allekirjoitusjärjestelmä voidaan käyttää laajasti sovelluksissa, joissa luottamuksellisuutta tarvitaan, esimerkiksi sähköisissä äänestysjärjestelmissä [4] [5] [6] [7] .
Tilanne huomioon ottaen: Bob on notaari . Alice tarvitsee hänen allekirjoittamaan asiakirjan ilman aavistustakaan sen sisällöstä. Bob vain vahvistaa, että asiakirja on notaarin vahvistama määritettynä ajankohtana. Sitten he toimivat seuraavan algoritmin mukaan:
Tässä järjestelmässä Alice haluaa Bobin allekirjoittavan sokeasti viestin . Tätä varten:
Tämä protokolla toimii vain, jos allekirjoitus- ja salaustoiminnot ovat kommutatiivisia .
Chaum toteutti ensimmäisen sokean allekirjoituksen käyttämällä RSA-salausjärjestelmää:
Oletetaan, että Bobilla on aluksi julkinen avain , jossa on moduuli ja avaimen julkinen eksponentti.
Chaum keksi koko perheen monimutkaisempia sokea allekirjoitusalgoritmeja, joita kutsutaan yhteisesti odottamattomiksi sokeiksi allekirjoituksiksi . Niiden suunnitelmat ovat vielä monimutkaisempia, mutta ne antavat enemmän mahdollisuuksia [1] .
Sokea allekirjoitus perustuu Schnorr EDS :äänHaluaako Liisa allekirjoittaa Bobin viestin siten, että ensinnäkin Bob ei voinut tutustua viestiin allekirjoituksen aikana, ja toiseksi, jotta Bob ei voi myöhemmin, vastaanotettuaan viestin ja vastaavan allekirjoituksen, tunnistaa käyttäjä, joka aloitti sokean allekirjoitusprotokollan tälle viestille (Alice). Tämä protokolla toteutetaan seuraavasti:
Allekirjoituksen aitous todistetaan seuraavasti. Se seuraa ja . Tässä tapauksessa anonymiteettiongelma on ratkaistu, koska mitä tahansa Bobin muodostamien kolmosten joukosta voidaan verrata tämän asiakirjan allekirjoitukseen . Meillä on todellakin: ja ts. yhtäläisellä satunnaisella termivalinnalla ja allekirjoitus luotiin yhtä suurella todennäköisyydellä mistä tahansa allekirjoittajan muodostamaan kolmiosuuteen sisältyvästä kolmiosta. Huomioimme myös, että Bobilla ei ole edes mahdollisuutta todistaa, ettei hän tuntenut sitä tämän asiakirjan allekirjoitushetkellä.
Sokea allekirjoitus perustuu GOST R 34.10-94 Vaihtoehdot
p on alkuluku , 510 ≤ | p | ≤ 512 (tai 1022 ≤ | p | ≤ 1024), jossa |p| on luvun p binääriesityksen kapasiteetti .
q on p-1:n suuri alkujakaja, 255 ≤ | q | ≤ 256 (tai 511 ≤ | q | ≤ 512)
α ≠ 1, α < p , mod p = 1.
LaskentaValko - Venäjän standardi tarjoaa seuraavan protokollan sokean allekirjoituksen luomiseksi asiakirjalle M :
Tässä kuvauksessa käytetään seuraavia parametreja: q on laskelmissa käytetty moduuli, yksinkertainen; a on emoelementti; x - yksityinen avain; y on julkinen avain [9] .
Olkoon käyttäjien omistamia julkisia avaimia . Olkoon viesti M , jonka m heistä haluaa allekirjoittaa. Tässä tapauksessa kaikki allekirjoitukset voidaan yhdistää yhdeksi, jonka pituus on yhtä suuri kuin yhden käyttäjän allekirjoituksen pituus eikä riipu m :stä . Tämä toteutetaan seuraavan 1 protokollan sääntöjen mukaisesti:
mod p on jaettu julkinen avain. Sen perusteella kollektiivinen sokea allekirjoitus varmistetaan seuraavan algoritmin mukaisesti:
Sokean allekirjoituksen protokolla on löytänyt laajimman sovelluksen digitaalisen rahan alalla . Esimerkiksi, jotta tallettaja ei petä pankkia, voidaan käyttää seuraavaa protokollaa: tallettaja kirjoittaa saman arvon seteleitä sataan eri numeroituun asiakirjaan ja tallettaa sen salatussa muodossa pankkiin. Pankki valitsee satunnaisesti ja vaatii avaamaan 99 (tai n-1) kirjekuorta, varmistaa, että kaikkialle on kirjoitettu 10 dollaria, ei 1000 dollaria, ja sitten allekirjoittaa jäljellä olevan kirjekuoren sokeasti, näkemättä laskun numeroa.
Yksinkertaisempi vaihtoehto voidaan tarjota: pankilla on oma julkisten avainten pari, joka on määritetty kullekin setelin arvolle. Tällöin allekirjoituksen alle lähetetään vain setelin numero, eikä nimellisarvoa tarvitse tarkistaa ennen allekirjoitusta [1] .
Sokeita allekirjoituksia käytetään salaisessa äänestyksessä . Fujiokan , Okamoton ja Otan pöytäkirjassa äänestäjä valmistelee valinnallaan äänestyslipun, salaa sen salaisella avaimella ja peittää sen. Seuraavaksi äänestäjä allekirjoittaa äänestyslipun ja lähettää sen valitsijalle. Validaattori varmistaa, että allekirjoitus kuuluu rekisteröidylle äänestäjälle, joka ei ole vielä äänestänyt.
Jos äänestyslippu on kelvollinen, validoija allekirjoittaa äänestyksen ja palauttaa sen äänestäjälle. Äänestäjä poistaa valepuvun ja paljastaa siten validoijan allekirjoittaman salatun äänestyslipun. Seuraavaksi äänestäjä lähettää näin saadun allekirjoitetun ja salatun äänestyslipun laskuriin, joka tarkistaa salatun äänestyslipun allekirjoituksen.
Jos äänestyslippu on kelvollinen, ääntenlaskija asettaa sen listalle, joka julkaistaan koko äänestyksen jälkeen. Listan julkaisemisen jälkeen äänestäjät tarkistavat, että heidän äänestysliput ovat listalla, ja lähettävät ääntenlaskijalle äänestyslippujen avaamiseen tarvittavat salauksenpurkuavaimet. Ääntenlaskija käyttää näitä näppäimiä äänestyslippujen tulkitsemiseen ja lisää äänten kokonaismäärään. Vaalien jälkeen ääntenlaskija antaa salauksen purkuavaimet sekä salatut äänestysliput, jotta äänestäjät voivat itsenäisesti todentaa vaalin [10] .
RSA-algoritmi voi olla hyökkäyksen kohteena, minkä ansiosta on mahdollista purkaa aiemmin sokeasti allekirjoitetun viestin salaus ja välittää se viestiksi, jota ei ole vielä allekirjoitettu. Koska allekirjoitusprosessi vastaa allekirjoittajan suorittamaa salauksen purkamista (käyttäen sen yksityistä avainta), hyökkääjä voi allekirjoittaa viestin jo sokeasti allekirjoitetun version, joka on salattu allekirjoittajan julkisella avaimella, eli allekirjoittaa viestin .
missä on viestin salattu versio. Kun viesti on allekirjoitettu, selväteksti on helppo hakea:
missä on Euler-funktio . Nyt viesti on helppo vastaanottaa.
Hyökkäys toimii, koska tässä järjestelmässä allekirjoittaja allekirjoittaa itse viestin. Sitä vastoin perinteisissä allekirjoitusmenetelmissä allekirjoittaja tyypillisesti allekirjoittaa esimerkiksi kryptografisen hajautusfunktion . Tästä syystä RSA :n multiplikatiivisen ominaisuuden vuoksi samaa avainta ei tulisi koskaan käyttää sekä salaukseen että sokkoallekirjoitukseen [8] .