Oppikerta 9, 16.3.1999
Tällä kerralla:
- erityistyyppisiä allekirjoituksia; lähinnä tilanteita, ei
niinkään itse algoritmeja.
- sokean allekirjoituksen sovelluksena anonyymi sähköraha. Samalla
hieman yleistä pohdintaa yhtäältä sähköisestä maksamisesta ja toisaalta
anonymiteetistä.
Lisää allekirjoituksesta (jatkoa oppikerralta 6)
Redundanssifunktioita [HAC 442-445 #PKCS1]
Ensimmäinen digitaalisen allekirjoituksen standardi ISO/IEC 9796 vuodelta
1991 ei määrittele varsinaista allekirjoitusalgoritmia, mutta
tarjoaa esimerkin viestin esikäsittelystä (formatoinnista), jolla pyritään
välttämään kaikenlaisia väärennyskeinoja:
viesti (jonka oletetaan olevan rajoitetun mittainen)
--> täydennys (alkunollilla 8:n monikerran pituiseksi)
--> jatkaminen (viestin lopputavuja kopioidaan alkuun kunnes
riittävä pituus t on saavutettu)
--> redundanssin lisääminen (joka tavun väliin jälkimmäisestä
ns. varjofunktiolla laskettu tavu)
--> katkaisu ja pakottaminen (eivät aivan nimensä veroisia: MSB
pois ja tilalle 1, bitit 1-4 oikealta bittien 5-8 tilalle, niiden itsensä
tilalle 0110 !)
--> allekirjoitus (joka säilyttää bittien määrän ja mahdollistaa
viestin palauttamisen)
Viestin pituus voi kasvaa esim 150:stä 1024 bittiin.
Allekirjoituksen todentaminen kulkee vastakkaiseen suuntaan ja
sisältää kolme vaihetta, joissa voi tapahtua hylkääminen.
Tämä on siis esimerkki siitä, mitä mutkia periaatteessa yksinkertaistenkin
kryptoprimitiivien implementointi voi edellyttää. Redundanssin käsite
sinänsä tulee esille myös jäljempänä sähkörahan yhteydessä (Chaumin
algoritmin "erityisluku").
Erityistilanteisiin soveltuvia allekirjoituksia
"Undeniaabeli", kieltämätön allekirjoitus, on jotain muuta kuin
kiistämätön: sillä tarkoitetaan allekirjoitusta, jonka todentamiseen
tarvitaan allekirjoittajan apua. Ideana on se, että todennuksessa
allekirjoittaja saa satunnaislukuhaasteen ja pystyy vastaamaan siihen vain,
jos (hänen aiemmin laatimansa) allekirjoitus on ollut oikea.
Menetelmä perustuu diskreetin logaritmin vaikeuteen.
Nimityksen taustalla on lisäprotokolla, jolla saadaan aikaan se, että
allekirjoittaja, vaikka häntä todennukseen tarvitaankin, ei
voi kieltää laatimaansa allekirjoitusta. Lisäprotokolla tavallaan ajaa
perusprotokollan kahdesti ja varmistaa vielä, että allekirjoittaja on
suorittanut sen oikein.
Käyttötarkoituksia voisivat olla esimerkiksi [HAC:476]:
- A pääsee johonkin palveluun (esim. pankin tallelokeroille) vain
allekirjoittamalla B:lle päiväyksen (tms.). B ei kuitenkaan saa myöhemmin
ilman A:n apua pystyä todentamaan tätä allekirjoitusta jollekulle
kolmannelle osapuolelle. Jotta allekirjoituksella olisi B:lle merkitystä
tarvitaan lisäprotokolla.
- Softatalo A allekirjoittaa tuotteensa. Ostaja B voi todentaa
allekirjoituksen A:n avulla, mutta ei voi tehdä samaa myydessään tuotteen
luvattomasti edelleen C:lle. Perusprotokolla riittää, jos B vain haluaa
varmistua siitä, että tuote on A:n tekemä. Jos A:lle halutaan sälyttää
jonkinlaista muodollistakin vastuuta virheistä (tai ainakin viruksista),
tarvitaan lisäprotokollaa.
Allekirjoitusvaltuutus (Proxy signature): [Schn:83]
Osapuoli A haluaa antaa B:lle valtuuden muodostaa allekirjoituksia A:n
puolesta. Tämä voidaan toteuttaa siten, että
- ne pystyy erottamaan A:n omista allekirjoituksista;
- vain A ja B voivat muodostaa niitä (yleinen väärentämättömyys);
- B ei voi muodostaa allekirjoitusta, jota ei voisi tunnistaa
tyypiltään valtuutetun allekirjoitukseksi;
- A pystyy tunnistamaan, mikä useasta valtuutetusta on laatinut tietyn
allekirjoituksen;
- valtuutettu ei pysty kiistämään laatimaansa allekirjoitusta.
Tämän luettelon ominaisuudet voisi tietysti toteuttaa niin, että B:lle
annetaan oma allekirjoitusavain. Oleellista tässä olikin se, että B:n
allekirjoitus tosiaan ilmentää valtuutusta eli A:n sitoutumista B:n
allekirjoittamaan dokumenttiin.
Ryhmäallekirjoituksen perusominaisuudet [Schn:84]:
- Vain ennalta määrätyn ryhmän jäsenet voivat allekirjoittaa viestejä.
- Kuka tahansa pystyy verfioimaan allekirjoituksen, mutta ei sitä kuka
ryhmän jäsenistä sen laati.
- Kiistanalainen allekirjoitus voidaan avata siten, että allekirjoittaja
paljastuu (eri menetelmissä tähän joko tarvitaan tai ei tarvita ryhmän
jäsenten yhteistyötä).
Sopimuksen allekirjoittaminen [Schn:118].
Miten osapuolten A ja B välinen sopimus saadaan allekirjoitetuksi, kun
kumpikaan ei suostu siihen ennen toista?
Luotetun välittäjän avulla tämä on melko helppoa.
Ilman välittäjää joudutaan käyttämään jonkinlaista pienten askelten
menetelmää, jossa kumpikin vuorollaan osoittaa lisää sitoutumista
sopimukseen (esim. todennäköisyydellä ilmaistua). Lisän täytyy olla niin
pieni, ettei sen suuruinen ero häiritse kumpaakaan osapuolta. Sitoutumisen
asteen käytännön merkitys ei ole kovin "digitaalinen", vaan riidan
sattuessa tulkinta jää riippumaan tuomarista, jollaista muutenkin tarvitaan
ratkaisemaan kiistanalaisia allekirjoitusasioita.
Bittiin sitoutuminen (bit commitment) [Schn:86-]. Jos A:lta
pyydetään ennustusta jostain 0-1-ilmiöstä, johon ennustuksen julkaiseminen
voi vaikuttaa, A:n on voitava pitää ennustus aluksi omana tietonaan. Mutta
silloin hän voi tietenkin muuttaa sitä haluamaansa suuntaan ilmiön
tapahduttua. Jotta tällaisella ennustuksella (ja A:n kyvyllä tehdä
sellainen) olisi jotain merkitystä, A:n pitää voida sitoutua siihen
vakuuttavalla tavalla.
Vastaavasta asiasta oli esimerkki nollatietoyksilöinnin yhteydessä: siinä
osapuoli A sitoutui johonkin, jota toinen osapuoli B ei siinä vaiheessa
"ymmärtänyt", sai B:ltä haasteen ja pystyi vastaamalla siihen vakuuttamaan
B:n, että sitoutuminen oli ollut asianmukainen (vastasi A:n salaista
avainta). Nyt "asianmukaisuus" on sitä, että A ei muuta valintaansa.
Harjoitus: Miten seuraavat sitoutumiset tarkastetaan ja mikä estää
A:ta huijaamasta? Mitä etua jälkimmäisessä on ensimmäiseen verrattuna?
1. Symmetriseen salaukseen perustuva sitoutuminen:
- B lähettää A:lle satunnaisen luvun R (eräänlaisen nonce-luvun)
- A valitsee satunnaisen avaimen K ja palauttaa B:lle arvon
EK(R,s), missä s on A:n ennustusbitti (tai yhtä hyvin
bittijono).
2. Yksisuuntaiseen funktioon H perustuva sitoutuminen:
A lähettää B:lle viestin H(R1,R2,s),R1, missä
R1 ja R2 ovat satunnaislukuja ja s on A:n ennustusbitti (tai yhtä hyvin
bittijono).
Vastausta: (1) A lähettää B:lle avaimen K. (2) A lähettää B:lle viestin
R1, R2, s. (jne)
Sokea allekirjoitus: A saa viestilleen M allekirjoituksen B:ltä
ilman, että B näkee viestiä M tai edes allekirjoitusta
{M}KB ! Tämä tapahtuu siten että B saa
allekirjoittavakseen A:lta jonkin M:stä muunnetun viestin M' ja A pystyy
sitten muuntamaan allekirjoituksen {M'}KB muotoon
{M}KB. Yhtenä sovelluksena on anonyymi elektroninen
käteinen, johon siirrytään tuotapikaa (luennolla nimittäin).
Harjoitus: Soveltamalla potenssin laskusääntöjä keksi, miten
tällainen järjestelmä voitaisiin toteuttaa RSA-allekirjoituksen yhteyteen.
Käytä jonkinmoista "sokeutustekijää", jolla muunnat M:n M':ksi. (Vastaus:
vrt. Chaumin protokolla jäljempänä.)
Sähköraha
Luokitusta ja vaatimuksia
Elektroniseen kaupankäyntiin kuuluu maksamisen lisäksi paljon muutakin,
kuten kaupankäyntiin yleensäkin: markkinointia, tilauksia, peruutuksia,
neuvotteluja, sopimisia, toimituksia ja "jälkihoitoa". Kaikki nämä vaativat
tietoturvaa, mutta sitä ei käsitellä nyt tässä, vaan keskitytään
sähkörahaan, ja nimenomaan sähköiseen käteiseen ja sen käyttöön
maksamiseen; miten rahaa voidaan siirtää bitteinä - ilman paperia tai
metallia (yms.).
Sähköinen käteinen on vain yksi mahdollisuus toteuttaa maksu. Muita
sähköisesti käytettäviä maksuvälineitä ovat mm. luottokortit ja
pankkikortit (credit card ja debit card). Samalla tavoin kuin nämä
edustavat tilivelkaa ja tilirahaa, sähkörahaa voi olla molemmissa muodoissa
ja myös yhdistelmänä (luotollisen pankkikortin tapaan).
Yleisiä (ja ilmeisiä) vaatimuksia maksuvälineelle:
- kuljetettavuus, talletettavuus, käyttöönotettavuus ja
(tekninen) käytettävyys: markka merkitsee markkaa maksutapahtuman
molemmilla osapuolilla, myös virheiden sattuessa (erityisesti raha ei voi
hävitä).
- jaettavuus, joka käteisen tapauksessa toteutuu vaihtorahan avulla.
Maksutapahtumassa kuitenkin edellytetään jakamattomuutta (atomisuutta) ja
erillisyyttä: maksuväline voidaan liittää jakamattomana tiettyyn maksun
kohteeseen ja toisaalta eri maksutapahtumat voidaan erottaa toisistaan.
- homogeenisuus: jokainen markka on yhtä arvokas. Poikkeavat
voidaan havaita väärennöksiksi.
- arvon vakaus, sisältää yleisen luottamuksen arvoon, myös siihen,
että välinettä ei ole väärennetty.
- tietty määrä jäljittämättömyyttä: tavoite on ristiriitainen
yksityisyyden suojan ja rikollisuuden estämisen välillä.
Viimeksi mainittu tavoite on ehkä vähemmän ilmeinen mutta varsin tärkeä.
Onhan seteliraha perinteisesti anonyymia. Yleisesti, jos kyseessä on laskun
maksu, vastaanottaja toki tietää keneltä maksu tulee. Mutta silloinkaan
hänen ei pitäisi voida kerätä maksajaa koskevaa dataa edelleen myytäväksi
muihin tarkoituksiin (esim. siviilisäätyä, asumismuotoa, luottotietoja).
Yksityisyydellä on kuitenkin poliittiset rajoitteet. Erityisesti
anonymiteetti pitäisi voida purkaa joissain erityistilanteissa, esimerkiksi
kun on syytä epäillä kiristystä, rahanpesua tms. rikollista. Tällaisten
tapausten varalta on ehdotettu samantapaisia järjestelmiä kuin on
key-escrow. Yksi sellainen on "Digital payment systems with passive
anonymity-revoking trustees" (J. Camenisch, U. Maurer, M. Stadler, 1997,
[22
PS-sivua]). Siinä luotetut osapuolet eivät ole tekemisissä
tilinavauksen eivätkä maksutapahtuman kanssa (joka voi olla on- tai
off-line). He astuvat kuvaan vasta, jos perusteltu epäilys herää.
Tämäkin järjestelmä perustuu diskreetin logaritmin vaikeuteen.
Harjoitus: Kootaan ja jäsennetään ajatuksia erityyppisistä
sähköisen maksamisen muodoista ja niihin liittyvistä tietoturvatavoitteista.
Pohjaksi tälle olkoot seuraavat karkeat luokittelut:
on-line --- off-line (onko rahalaitos mukana vai ei)
suora --- epäsuora (onko maksun saaja mukana vai ei)
käteinen --- tiliraha --- luotto (missä raha sijaitsee matkallaan asiakkaan
rahalaitoksesta maksun saajan rahalaitokseen)
kolikot --- setelit --- shekit (liittyy paitsi edelliseen, myös rahasumman
suuruuteen ja määrämittaisuuteen)
Yksi digitaalisen käteisen tavoiteluettelo on seuraava [Schn:146]:
- Riippumattomuus (sijainnista; erityisesti siis kuljetettavuus verkossa)
- Turvallisuus (ei voi väärentää)
- Yksityisyys (jäljittämättömyys, nimettömyys)
- Off-line-maksu
- Siirrettävyys (käyttäjältä toiselle)
- Jaettavuus
Protokollia
Okamoton ja Ohtan järjestelmä toteuttaa kaikki eo. luettelon kohdat, mutta
ne ovatkin heidän artikkelistaan, vuodelta 1992. Seuraavaksi esiteltävä
yksinkertainen maksuprotokolla toteuttaa vaatimukset 1-4. Se on peräisin
80-luvulta David Chaumin julkaisuista. Tarvitaan kolme osapuolta: pankki B,
maksaja P ja maksun vastaanottaja V, sekä neljä protokollaa:
- tilin muodostaminen: P avaa tilin B:hen (ja tallettaa sinne rahaa;
tätä ei seuraavassa käsitellä)
- nosto: P nostaa rahamäärän M tililtään B:stä
- maksu: P siirtää M:n V:n haltuun
- talletus: V muuttaa B:n avulla M:n itselleen käypään muotoon
(tyypillisesti talletus V:n tilille joko B:ssä tai jossain
muussa pankissa)
Pankilla on RSA-avainpari: n = B:n julkinen moduli ja e = julkinen
eksponentti, d = salainen eksponentti, vain B:n tiedossa.
Laskut tapahtuvat modulo n, vaikkei tätä merkitä.
Erityisluku voi olla esim. sellainen, jonka binääriesitys on palindromi.
- maksaja P:
u := satunnainen erityisluku (setelin numeroksi)
r := satunnaisluku (sokkotekijäksi)
P --> B: u· re =: [1]
- pankki B:
nosto P:n tililtä
[2] := [1]d
(Allekirjoitus, tulos = ud·r)
B --> P: [2]
- maksaja P:
[3] := [2]·r-1 (Sokkotekijän poisto)
Jos [3]e on erisuuri kuin u, lopeta protokolla.
(Allekirjoituksen verifiointi)
Odotusta
P --> V: [3] (= ud)
(Maksu B:n allekirjoittamalla setelillä numero u)
- vastaanottaja V:
Jos [3]e ei ole muodoltaan erityisluku, lopeta.
(Setelin aitouden verifiointi)
[4]:=[3]
V --> B: [4] (=ud)
(Setelin toimitus pankkiin)
- pankki B:
Jos [4]e ei ole muodoltaan erityisluku, lopeta.
(Setelin aitouden verifiointi)
Jos [4]e on käytettyjen listalla, lopeta.
Merkitse [4]e käytettyjen listalle.
Talleta V:n tilille.
Tämän järjestelmän tärkein ominaisuus on maksajan anonyymiteetti: B ei saa
sitovasti selville keneltä maksu oli peräisin, eikä tähän auta se tieto,
joka V:llä on. Tietenkin jos kyseessä olisi ainoa tietynsuuruinen nosto
B:stä, B saisi P:n selville. Toisaalta V pystyy paljastamaan, ketkä ovat
sen kanssa käyneet kauppaa, mutta tämän tiedon V voisi myös väärentää, eli
tieto ei ole sitovaa.
Toisenlainen tavoite on maksun saajan anonymiteetti. Se olisi perusteltu
tilanteissa, jossa maksun saaja on yksityinen taho, joka esim. saa
sosiaaliavustusta tai yritykseltä palautusta. Harjoitus: Kirjoita
seuraava kuvaus auki eo. kaltaiseksi algoritmiksi: Maksun vastaanottaja V
muodostaa sokaistun setelin ja lähettää sen maksajalle P, joka toimittaa
sen edelleen pankkiin. Pankki tekee noston P:n tililtä, allekirjoittaa
setelin ja palauttaa sen P:lle, joka tarkastaa allekirjoituksen ja
palauttaa setelin V:lle. Tämä poistaa sokaisun, varmistaa että seteli on
oikein allekirjoitettu ja toimittaa sen talletettavaksi pankkiin. Pankki
tarkastaa allekirjoituksensa ja sen ettei seteliä ole aiemmin talletettu.
Jos asia on kunnossa, pankki tallettaa setelin ja varmistaa ettei sitä voi
tehdä uudestaan.
Seuraavassa protokollassa (niinikään Chaumilta) saavutetaan lisäksi
huijaavan tahon paljastuminen. [Schn:142-]
- P valmistaa n kpl nimettömiä maksumääräyksiä tietylle
kiinteälle summalle (n on luokkaa 100). Jokainen määräys sisältää myös
- satunnaisen yksikäsitteisyysluvun X ja
- n paria yksilöintilukuja (Y1,Z1), ...(Yn,Zn). Kukin pari (Y,Z)
on muodostettu seuraavasti P:n yksilöintiin tarvittavasta bittijonosta I:
- P valitsee I:n mittaisen satunnaisen bittijonon Y' ja laskee Z' = I
XOR Y'. Tämä toimitus on ns. salaisuuden halkaiseminen (secret splitting):
kumpikin osa, Y' ja Z' yksin on hyödytön, mutta Y' XOR Z' = I.
- P sitoutuu bittijonoihin Y' ja Z' eli muodostaa
niistä bit-commitment-viestit Y ja Z esim. yksisuuntaisella funktiolla.
- P sokaisee maksumääräykset sokeilla allekirjoituksilla ja antaa ne
pankille.
- Pankki pyytää P:tä purkamaan sokaisun (n-1):stä pankin satunnaisesti
valitsemasta määräyksestä ja avaamaan myös niiden yksilöintitiedot. Pankki
todentaa, että ne on muodostettu oikein: rahamäärä on kaikissa sama,
yksikäsitteisyysluku eri ja yksilöintitieto kaikissa sellainen, kuin pankki
on edellyttänyt.
- Jos pankki päätyi uskomaan, että P ei huijaa, pankki allekirjoittaa
jäljelle jääneen määräyksen, palauttaa sen P:lle ja vähentää vastaavan
summan tämän tililtä.
- P purkaa sokaisun ja lähettää määräyksen maksuksi myyjälle.
- Myyjä tarkastaa, että määräyksessä on pankin allekirjoitus.
- Myyjä lähettää P:lle n:n mittaisen satunnaisen bittijonon.
- P lähettää myyjälle maksumääräyksen kunkin yksilöintiparin
vasemman tai oikean puolen avattuna, siis Y':n tai Z':n - sen mukaan onko
bittijonossa 0 vai 1.
- Myyjä toimittaa maksumääräyksen pankkiin, mukaanlukien vaiheessa 8
saamansa tiedot.
- Pankki tarkastaa allekirjoituksensa ja sen, ettei tietokannassa
ole yksikäsitteisyyslukua. Jos maksumääräys läpäisee nämä tarkastukset,
pankki hyvittää myyjän tiliä asianmukaisella summalla ja tallettaa
yksikäsitteisyysluvun ja yksilöintitiedon puolikkaat tietokantaan.
- Mikäli yksikäsitteisyysluku löytyy tietokannasta, pankki ei hyväksy
maksumääräystä, vaan vertaa saamiaan yksilöintitiedon puolikkaita niihin,
jotka ovat tietokannassa:
- Jos ne ovat samat, pankki tietää, että myyjä on tallettanut
saman maksumääräyksen aiemminkin.
- Jos ne ovat erilaiset, pankki tietää, että P on maksanut uudestaan
samalla maksumääräyksellä. Erityisesti vaihe 7-8 on tapahtunut kaksi
kertaa ja bittijonot ovat olleet jossain kohden erilaiset. Siinä kohdassa
pankilla on sekä Y' että Z', joten pankki tietää, kuka P oli.
Chaumilta on lähtöisin muutakin anonymiteettiin tähtäävää. Äänestyksestä
puhutaan ensi kerralla. Tähän yhteyteen sopii paremmin hänen artikkelinsa
Scientific American-lehdessä: Achieving electronic
privacy (August 1992, p. 96-101)
Todistukset tutkinnosta, ajokortti tms. pitäisi voida esittää
viranomaiselle, tulevalle työnantajalle tms. ilman, että tämä saa muuta
tietoa kuin sen, mitä asiayhteys vaatii. Esimerkiksi mitä
tietoja poliisi oikeastaan tarvitsee liikenneratsiassa?
Erityisesti tarvitaanko tietoa autoa ajavan henkilöllisyydestä?
(Keskustellaan luennolla siitä, mitä väliä tällä on.)
Chaumin esittämän ratkaisun taustalla ovat sokean allekirjoituksen
tekniikat yhdessä valenimien kanssa. Yksilöinti perustuu aina vain
tällaiseen nimeen ja asiointien linkittämättömyys toteutuu, koska yksilö
itse vaikuttaa nimen valintaan ja se on erilainen jokaisen tahon kanssa.
Samalla tulee estetyksi se, että muut pääsisivät käyttämään kyseistä
valenimeä. Asiointitaho voi olla mukana nimen muodostamisessa, jolloin
saavutetaan se, ettei sama yksilö pääse esiintymään (saman asiakassuhteen
puitteissa) eri nimillä.
Näitä tekniikoita on sovellettu Chaumin yhtiön DigiCashin tuotteissa,
joista tunnetuin on eCash. Yhtiöstä väitetään: "eCash™, as it has been
developed by DigiCash, is an important and inevitable payment solution in
the world of global electronic commerce." Yhtiön sivuilta löytyy useita
HTML-muotoisia selkeitä artikkeleita näistä aiheista (muitakin kuin siis
mainoksia).
Nimettömyysasiaa löytyy myös mm. artikkelista:
M. Reiter, A. Rubin: Crowds: Anonymous web transactions. DIMACS
technical report 97-15, April 1997. [
PS]
Luettavaksi: L.F.Cranor, R.K.Cytron:
Sensus: A Security-Conscious Electronic Polling System for the
Internet (Proc. of the Hawai`i International Conference on System
Sciences, Jan 7-10, 1997).
Sama löytyy myös
PS-muodossa (10 sivua).
Hieman tiiviimpi esitys aiheesta (ilman protokollan yksityiskohtia, 1996)
on: Computerized
polls may save money, protect privacy.