[Muokattu: 1.3.2004]

Puolisokea allekirjoitus (3-B) [ < Erikoisia proto... < Kryptoprotoko... ]

Sokean allekirjoituksen perusmuoto on sellainen, ettei allekirjoittaja tiedä lainkaan, mitä bittejä tulee allekirjoittaneeksi. Monissa tilanteissa on hyödyksi, jos osa näistä biteistä voisi olla näkyvissä ja vain osa sokeutettuina.

Esimerkiksi anonyymin bittikäteisen tapauksessa pankki joutuu ylläpitämään käytettyjen setelien luetteloa periaatteessa loputtomiin, jotta kaksoiskäyttö voitaisiin estää. Tietokanta voi kasvaa hankalan kokoiseksi. Setelin numeron yhteyteen voisi tietenkin kytkeä (katenoida) viimeisen voimassaolopäivän, jolloin pankki voisi hävittää vanhentuneet käytetyt setelit. Tämä päivämäärä on kuitenkin maksajan määrättävissä, eikä pankki näe sitä allekirjoitusvaiheessa. Kenenkään intressinä ei liene hankkia itselleen kovin nopeasti "pilaantuvia" seteleitä, joten ongelma tuskin helpottuu. Paremmin toimiva "parasta-ennen-päiväys" saadaan aikaan seuraavalla mekanismilla (Abe & Fujisaki, 1996).

Oletetaan, että pankilla on julkisena RSA-moduulina n ja eksponenttina e, sekä allekirjoituseksponenttina d. Olkoon maksajan keksimänä setelin sarjanumerona m ja sille tarkoitettuna päiväyksenä bittijono v, joka sekin on jotain määrättyä muotoa kuten myös m (Erityisesti v on pariton, jotta sillä ei olisi yhteisiä tekijöitä p-1:n eikä q-1:n kanssa). Maksaja lähettää pankille lukuparin (v, m· rev mod n). Pankki näkee nyt siis v:n. Se laskee tätä v:tä vastaavan allekirjoitusavaimen d'=(ev)-1 mod (p-1)(q-1). Alkuperäinenhän oli d = e-1 mod (p-1)(q-1). Pankki allekirjoittaa d':lla, jolloin maksaja pääsee jakamaan pois sokeutustekijänsä r ja saa tulokseksi md' mod n. Tätä seteliä käytettäessä siihen liitetään päiväys v, joten todentaja voi tarkistaa, että (md')ev mod n on sellainen kuin m:n pitääkin olla.

Päiväyksen lisäksi tällaista sokaisun ulkopuolella allekirjoitettavaa oheistietoa voisi olla setelin arvo, jolloin ei tarvita eri allekirjoitusavaimia kaikille eri kokoisille seteleille.