Sokea allekirjoitus

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 14.9.2021 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .

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] .

Kuvaus

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:

  1. Nolla tietämystä . Tämä ominaisuus auttaa käyttäjää saamaan allekirjoituksen tietylle viestille paljastamatta itse viestiä allekirjoittajalle.
  2. Jäljitettävyys . Allekirjoittaja ei voi jäljittää allekirjoitus-viesti-paria sen jälkeen, kun käyttäjä on julkistanut allekirjoituksen viestissään.
  3. mahdottomuus . Vain allekirjoittaja voi luoda kelvollisen allekirjoituksen. Tämä ominaisuus on tärkein ja sen tulee täyttyä kaikissa allekirjoitusjärjestelmissä.

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] .

Sokeat allekirjoitusalgoritmit

Täysin sokea allekirjoitus

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:

  1. Alice salaa viestin toiminnolla ja vastaanottaa salatun viestin .
  2. Alice lähettää salatun viestin Bobille.
  3. Bob sokeasti (koska hän ei tiedä mitä sisällä on) allekirjoittaa viestin funktiolla vastaanottaa .
  4. Bob lähettää takaisin Alicelle.
  5. Alice vastaanottaa ja poistaa salauksensa ja saa: .

Tämä protokolla toimii vain, jos allekirjoitus- ja salaustoiminnot ovat kommutatiivisia .

Sokea allekirjoitus

  1. Bob valmistelee n asiakirjaa, joista jokainen sisältää ainutlaatuisen sanan (mitä enemmän n, sitä pienempi mahdollisuus Bobin on huijata).
  2. Bob peittää jokaisen asiakirjan ainutlaatuisella peittotekijällä ja lähettää ne Alicelle.
  3. Alice vastaanottaa kaikki asiakirjat ja valitsee niistä satunnaisesti n-1.
  4. Alice pyytää Bobia lähettämään peittotekijät valituille asiakirjoille.
  5. Bob tekee sen.
  6. Alice avaa n-1 asiakirjaa ja varmistaa, että ne ovat oikein.
  7. Alice allekirjoittaa jäljellä olevan asiakirjan ja lähettää sen Bobille.
  8. Bobilla on nyt asiakirja, jonka Alice on allekirjoittanut ainutlaatuisella sanalla, jota Alice ei tiedä.
RSA-protokolla

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.

  1. Alice valitsee satunnaisen peittokertoimen, joka on suhteellisesti ensisijainen :lle ja laskee .
  2. Alice lähettää avoimen kanavan Bobille.
  3. Bob laskee yksityisellä avaimellaan .
  4. Bob lähettää takaisin Alicelle.
  5. Alice poistaa alkuperäisen naamionsa ja vastaanottaa Bobin allekirjoittaman alkuperäisen viestin seuraavasti: .

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 :ään

Haluaako 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:

  1. Alice aloittaa vuorovaikutuksen Bobin kanssa.
  2. Bob lähettää arvon Alicelle .
  3. Alice laskee arvot (w ja t ovat satunnaislukuja, jotka eivät ylitä ), ja lähettää sitten arvon Bobille .
  4. Bob laskee arvon , joka on , ja lähettää sen Alicelle.
  5. Alice laskee allekirjoituksen , jossa ja , joka on autenttinen viestin suhteen [8] .
Todiste

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.

Laskenta
  1. Tarve generoida satunnainen k , 1 < k < q ;
  2. R = ( mod p ) mod q  on allekirjoituksen ensimmäinen osa;
  3. H = Hash(m) , jossa Hash  on GOST R 34.11-94 -standardissa kuvattu hash-funktio , m  on allekirjoitettava viesti;
  4. S = kH + zR mod q , missä z  on yksityinen avain .
  5. Jos S=0, toista toimenpiteet 1-4.
Tarkistetaan
  1. 0 < R < q tai 0 < S < q. Jos vähintään yksi kahdesta ehdosta ei täyty, allekirjoitus on virheellinen. Muuten:
  2. R' = ( mod p ) mod q , missä y  on julkinen avain ;
  3. Jos R = R' , niin allekirjoitus on voimassa [9] .
Sokea allekirjoitus perustuu STB 1176.2-99

Valko - Venäjän standardi tarjoaa seuraavan protokollan sokean allekirjoituksen luomiseksi asiakirjalle M :

  1. On tarpeen generoida satunnainen k siten, että 1 < k < q ja laskea . Nämä toiminnot suorittaa allekirjoittaja. Sitten se välittää numeron R käyttäjälle;
  2. Käyttäjä generoi satunnaisluvut ε ja τ siten, että 1 < ε, τ < q ja laskee sitten ja E = E '  - τ mod q ; E  - allekirjoituksen ensimmäinen elementti - lähetetään allekirjoittajalle;
  3. Allekirjoittaja laskee allekirjoituksen toisen elementin S = (k - xE) mod q ja lähettää S :n käyttäjälle;
  4. Käyttäjä laskee S' = S + ε mod q .

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] .

Kollektiivinen sokea allekirjoitus

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:

  1. Jokainen m:stä käyttäjää generoi satunnaisluvun < p , missä j = , p  on suuri alkuluku. Sitten jokainen m käyttäjää laskee mod p ( k  on suuri alkuteho) ja lähettää tämän luvun kaikille muille tämän ryhmän käyttäjille.
  2. Jokainen käyttäjä laskee mod p . Seuraavaksi lasketaan e = f(R,M) = RH mod q , jossa q  on suuri alkuluku, joka eroaa p :stä , H = Hash(M)  on hash-funktio. Numero e on kollektiivisen allekirjoituksen ensimmäinen elementti.
  3. mod p  on käyttäjän osuus. Jokainen käyttäjä laskee tämän osuuden ja toimittaa sen muille.
  4. Jokainen käyttäjä laskee sitten mod p . Tämä on kollektiivisen allekirjoituksen toinen osa.
Kollektiivisen sokean allekirjoituksen todentaminen

mod p  on jaettu julkinen avain. Sen perusteella kollektiivinen sokea allekirjoitus varmistetaan seuraavan algoritmin mukaisesti:

  1. Mod p lasketaan .
  2. Laske e' = f(R,M) = RH mod q
  3. Jos e' = e , niin allekirjoitus on kelvollinen [9] .

Sovellus

Pankkijärjestelmät

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] .

Salainen äänestys

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] .

Sokean allekirjoituksen haavoittuvuudet

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] .

Katso myös

Muistiinpanot

  1. ↑ 1 2 3 Bruce Schneier, Applied Cryptography. 2. painos. Protokollat, algoritmit ja lähdetekstit C-kielellä, Kustantaja Triumph, 2002
  2. Jean Kamenich, Jean-Marc Piveto, Markus Stadler, "Blind Signatures Based on the Discrete Logathm Problem", Eurocrypt, sivut 428-432, Springer-Verlag, 1995.
  3. Qalian Chakrabortu, Jean Mehta, "Leimattu sokea allekirjoitusmalli, joka perustuu elliptisen käyrän diskreettilogaritmiongelmaan", International Journal of Network Security, Issue 14, sivut 316-319, 2012.
  4. Lung-Chang Lin, Ming-Shiang Hang, Chin-Chen Chang "Anonyymin sähköisen äänestämisen turvallisuuden parantaminen verkossa", tietokonestandardit ja liitännät, numero 25, sivut 131-139, 2003.
  5. Tatsuaki Okamoto, "Tehokkaat sokeat ja osittain sokeat allekirjoitukset ilman satunnaisia ​​ennusteita", Paperikokoelma "Kryptografian teoria", sivut 80-99, Springer-Verlag, 2006.
  6. Markus Ruckert, "Sokea allekirjoitus perustuu ristikkoihin", kokoelma Asiacrypt-konferenssin artikkeleita, sivut 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, sivut 471-480, 2007.
  8. ↑ 1 2 Moldovyan N.A. Työpaja julkisen avaimen salausjärjestelmistä. - 2007. - 304 s. — ISBN 5-9775-0024-6 .
  9. ↑ 1 2 3 N.A. Moldovan. Teoreettiset minimi- ja digitaalisen allekirjoituksen algoritmit. - BVH-Pietari, 2010. - 304 s. - ISBN 978-5-9775-0585-7 .
  10. Anisimov V.V. Kahden viraston Fujioka-Okamoto-Ohta ja Sensus pöytäkirjat . Tietojen suojauksen kryptografiset menetelmät .

Kirjallisuus

  • Schneier, B. Applied Cryptography. 2. painos. Protokollat, algoritmit ja lähdetekstit C-kielellä - "Triumph", 2002
  • Klyuzhev A. Sähköinen äänestys, 2003
  • Shangin, V. F. , Sokolov, A. V. Tietoturva hajautetuissa yritysverkoissa ja -järjestelmissä - "DMK", 2002
  • Chaum, D. Sokeat allekirjoitukset jäljittämättömille maksuille - Springer-Verlnag, 1998
  • Moldovyan N. A. Workshop julkisen avaimen salausjärjestelmistä, 2007
  • Moldovyan N. A. Digitaalisen allekirjoituksen teoreettinen minimi ja perusteet, 2010