Oppikerta 10, 23.3.1999

Tämän kerran aiheet: Aluksi kertauksena viime kerralta sokea allekirjoitus, bittiin sitoutuminen ja salaisuuden halkaiseminen (joita käytettiin sähkörahaprotokollassa, jota ei ehditty kovin tarkasti käsitellä).

Lisää sähköisestä kaupankäynnistä

Viimeksi oli esillä sähköisen käteisen käyttö maksamisessa. Sähköisen kaupankäynnin todettiin olevan tätä paljon laajempi kokonaisuus. Seuraavassa sähköinen maksaminen asetetaan tällaiseen laajempaan kehykseen EU:n SEMPER-projektin näkökulmasta (Secure Electronic MarketPlace for EuRope). SEMPERissä on jotain samaa kuin OSI-mallissa: SEMPER-arkkitehtuuri on avoin, monitasoinen ja siitä on sanottu, että se on liian monimutkainen sellaisenaan toteutettavaksi (P.Landrock: "It's an advanced security solution which must be tamed and trimmed" ja "too slow, too large"). SEMPER on kuitenkin ensimmäinen sähköisen kaupankäynnin kokonaisuuden turvallisuutta tavoitteleva projekti ja sellaisena mielenkiintoinen.

Ensinnäkin, SEMPER-arkkitehtuurissa maksupalvelujen "service block" muodostaa seuraavan kaksitasoisen rakenteen:

Maksun hallinnointi (generic payment service API, application programming interface)
Primitiiveinä mm. kukkaron asennus, konfigurointi, tuhoaminen; dynaaminen kukkaron neuvottelu ja valinta yhdessä vastinolion kanssa; moduuleista mahd. puuttuvien toimintojen korvaaminen (esim. kuitit, kiistojen käsittely), transaktioiden selaus.
Tämän alla toimivat moduuleina hallinnoitsijan tarvitsemat palvelut (SPI, service programming interface), eli varsinainen maksaminen, joka voi tapahtua kahdella erityyppisellä tavalla:
tilipohjaisesti käteistyyppisesti
Laskun maksaminen SET (luottokorttimaksu) Mandate (shekkimaksu) eCash (nimetön käteinen) Smartcard

Tämä lohko asettuu sitten kahden muun palvelulohkon rinnalle viisitasoisen arkkitehtuurin toiseksi alimmalle tasolle. (Myös muut kaksi lohkoa rakentuvat vastaavasti managerista ja useista moduuleista.)

Liiketoiminnan sovellukset (business applications)
Esim. postimyynti (yksi projektin osallistujista on iso tämän alan yritys). Yksi kokeilusovelluksista oli FIT (Fair Internet Trader) kahden yksilön (pienyrityksen) välisen kaupan toteuttamiseksi. Tämä on arkkitehtuurin dynaamisin osa ja tyypillisesti edellyttää uusien sovellusten latausta. Tämän tason sovellukset eivät ole a priori luotettuja. Luottamus rakentuu seuraavasta tasosta alaspäin:
Kauppapalvelut (commerce services)
Ylläolevien sovellusten turvallinen lataus, sopimusten hallinnointi, mahdollisia liiketoiminnan vakiosovelluksia. Yleisesti tämän tason tehtävänä on niputtaa alemman tason transaktiot yhdeksi kaupaksi (='deal') ja tehdä se siten että tietoturvakin linkittyy.
Siirtojen ja vaihtojen taso (transfer and fair exhange services)
yksisuuntaiset siirrot, kirjattu posti, sopimusten allekirjoittaminen ... . Yleisenä tehtävänä taaskin alemman tason toimien niputtaminen.
Maksut
(payment services)
Valtuutukset
(credential services)
Selvitykset
(statement services)
Tukipalvelut
Normaalit kryptograafiset, tietoliikenteen, pääsynvalvonnan, arkistoinnin palvelut, jotka eivät ole sinänsä kaupankäyntiin erikoistuneita. Lisäksi luotettu käyttöliittymä (prototyypissä "Tinguin"=Trusted INteractive Graphical User INterface: yksi erillinen ikkuna jota kautta kaikki turvallinen käyttö tapahtuu.)

Projektin taustalla on "melko klassiseksi" mainittu näkemys kauppapaikasta:

  1. Ostajien ja myyjien pitää löytää toisensa ja neuvotella liiketoiminnan ehdot ja muut yksityiskohdat.
  2. Heidän pitää täyttää velvoitteensa, mikä tyypillisesti tarkoittaa sitä, että myyjät toimittavat tuotteitaan ja ostajat suorittavat maksuja. Yhdessä nämä toimet muodostavat reilun vaihdon (fair exchange).
  3. Usein tarvitaan tiettyjä varmenteita (certificates) tai valtakirjoja/todistuksia (credentials), jotta voitaisiin päättää, pitääkö jonkin transaktion tapahtua vai ei. Esimerkkinä ovat luotetulta kolmannelta osapuolelta saatavat, myyjää esittelevät suositukset ("diplomit" yms.) ja asiakasta esittelevät todisteet luottokelpoisuudesta.
  4. Ostajat ja myyjät voivat esim. virheen tai vilpin seurauksena olla tyytymättömiä. Tätä varten tarvitaan poikkeusten käsittelyä ja kiistojen ratkaisumalleja, joihin mahdollisesti liittyy tuomari.
Seuraavassa on lueteltu joitakin SEMPER-projektissa havaittuja, keskeisiä, avoimia, turvallisuuteen liittyviä kysymyksiä, jotka haittaavat sähköisen kaupankäynnin kehittymistä ja yleistymistä.
  1. Käyttäjät eivät ole tarpeeksi tietoisia olemassaolevien toteutusten turvallisuusongelmista ja rajoituksista.
  2. Monessa tapauksessa jää epäselväksi, kenellä on ja minkälainen vastuu. Useinkaan vastuu ei jakaudu reilulla tavalla.
  3. Vaikka paljon tuloksia on saavutettu sähköisen kaupankäynnin osaprosesseissa, ei ole selvää miten niistä, ainakaan yleisesti, voidaan muodostaa turvallinen kokonaisuus.
  4. Tiedon salaamisen lisäksi käyttäjän yksityisyyttä ja anonymiteettia ei tueta kovin laajalti. Erityisesti on epäselvää, miten nämä toteutettaisiin yksittäisten askelten lisäksi koko kaupankäyntiprosessin mitassa.
  5. Julkisen avaimen infrastruktuurit ovat useiden järjestelmien ytimenä, mutta näistä on vain vähän kokemusta laajassa mittakaavassa. Lisäksi sertifikaattien semantiikka ymmärretään puutteellisesti.
  6. Monet järjestelmät käyttävät keskitettyä luottamusmallia eivätkä soveliaampaa mallia, joka perustuu monen osapuolen turvallisuuteen. Usein ei ole edes keinoja tasapuoliselle kiistojen selvittämiselle.
  7. Sähköisen kaupan turvallisuuden arviointiin tarvitaan formaaleja menetelmiä. Nykyisellään useimmilla systeemeillä ei ole edes hyviä malleja, puhumattakaan turvallisuuden formaalisista todistuksista.
  8. Ei ole riittävän turvallisia kaupallisia käyttöjärjestelmiä eikä (mobiileja) käyttäjän laitteita. (Tarvittaisiin siis 'trustworthy computing base'.)
  9. Nykyiset tietoturvan käyttöliittymät ovat aivan liian teknologialähtöisiä. Tarvitaan metaforia ja käyttäjäläheisyyttä.
Yksi WWW-pohjaisen kaupankäynnin rakenteita laajasti abstraktilla tasolla pohtiva tuore artikkeli on Jakobsson, Young: On Assurance Structures for WWW Commerce, 1998 21 PS-sivua

Toinen sähköisen kaupan eri osa-alueita avoimella tavalla yhdistävä hanke on ollut OTP (Internet Open Trading Protocol), joka tosin on vain ostoprotokolla eikä siis yhtä laaja-alainen kuin SEMPER.

Unohtava tiedonsiirto ja salattu myynti

Tiedostamaton tiedonsiirto, oblivious transfer on "yksi kryptografian perustusten kulmakivistä" [Cachin: On the Foundations of Oblivious Transfer, 1998 13 PS-sivua, niistä 2 ensimmäistä ]. Oblivious on sanatarkasti muistamatonta, unohtavaa.

Idea esiteltiin 80-luvun alussa (mm. Rabin) ja sitä voidaan käyttää monenlaisten protokollien rakentamiseen: esim. bittiin sitoutuminen (yksinkertainen tapaus viime kerralla), nollatietotodistus (yksilöinnin yhteydessä oppikerralla 4) ja monen osapuolen laskenta (ensi kerralla). Tällä kerralla sitä käytetään salaisuuksien myymiseen (ja sitä puolestaan äänestykseen).

Menetelmä ilmenee kahdessa erinäköisessä muodossa. Ensimmäinen mahdollisuus on, että osapuoli A lähettää B:lle jotain, jonka tämä saa haltuunsa todennäköisyydellä 0.5 (eikä kyse ole kanavan ongelmista). Toinen on, että A lähettää kaksi eri tietoa ja B saa niistä tarkalleen toisen. Unohtavuus on kummassakin tapauksessa sitä, että A ei tiedä, mitä B sai.

Salaisuuksien salattu myynti (secret selling of secrets) on erikoistapaus. Siinä myyjällä on joukko kysymyksiä, joihin hän tarjoaa vastausta. Ostaja tarvitsee vain yhden vastauksen, mutta ei halua paljastaa minkä. Hän ei kuitenkaan halua maksaa kaikista. Kryptologian kurssimonisteessa on tälle toteutus, jossa salaisuudet on kryptattu eri RSA-avaimilla ja B pystyy ostamaan modulin tekijöihinjaon (ja saa siten salaisuuden auki) käyttäen Jacobin symboleita. (Jacobin symboli on oleellisesti kahden kokonaislukumuuttujan funktio, jonka arvo on -1, 0 tai 1 ja asialla on sukua sille, onko ensimmäisellä luvuista olemassa neliöjuurta modulo jälkimmäinen luku.)

Salomaan kirjassa on seuraava yksinkertaisempi (Ari Renvallilta peräisin oleva) protokolla. Olkoot salaisuudet t-bittisiä lukuja s1,...,sk, joista B haluaa si:n. Merkitään operaatiota XOR pelkällä +:lla.

1. A --> B : f, x1,..., xk
f on A:n tiedossa olevalla salaluukulla varustettu yksisuuntainen funktio (esim. RSA, josta pitää siis kertoa "n" ja "e"), xj:t ovat t-bittisiä satunnaislukuja.
2. B --> A : z
z = xi + f(a), missä a on satunnainen t-bittinen luku (oletus on, että f kuvaa sellaisen aina t-bittiseksi).
3. A --> B : y1,...,yk
yj = sj + f-1(z + xj)
4. B saa selville si = yi + a.
Harjoitus: Tarkista lasku.
Salaisuuksien salaisesta myynnistä käytetään myös termiä ANDOS, All-or-Nothing Disclosure Of Secrets.

Elektroniset vaalit

Harjoitus: Mitä vaaditaan vaaliprotokollalta? Mitä hyötyä olisi vaalien elektronisoinnista? Miten vaalitoimitsijat ja äänestäjät voisivat yrittää huiputtaa perinteisissä vaaleissa ja miten se niissä estetään? Miten elektronisointi muuttaa tätä? Miten kurssilla tähän asti opitulla kryptoteknologialla voisi toteuttaa nämä vaatimukset?

Moniin aiempiin protokolliin verrattuna nyt ei voida hyväksyä sellaista luotettua osapuolta, joka saisi tietää yksilöiden äänestyskäyttäytymisen. Kuitenkin tarvitaan jonkinlainen taho, joka kerää äänet laskentaa varten. On tosin olemassa hajautettujakin äänestysprotokollia: yksi pienen mittakaavan (=muutaman äänestäjän) esimerkki Merrittiltä (1983) on Schneierin kirjassa. Tässä käsittelemme sellaisia protokollia, jotka edellyttävät jonkinlaista luottamusta, esim. siihen ettei vaaliviranomainen anna vaalilipun elektronista vastinetta kenelle tahansa.

Äänestys aivan selvästi vaatii autenttisuuden, mutta sen ei tarvitse toteutua vielä ääniä kerättäessä. Riittää, jos se toteutuu äänten laskennassa, kunhan huijareiden takia ei tarvitse uusia koko prosessia. Autentikoinnin lähtökohtana täytyy olla jonkinlainen rekisteröinti, liittyminen tai pääseminen äänioikeutettujen joukkoon. Tässä vaiheessa kunkin yksilön pitää saada haltuunsa jotain sellaista, jota kukaan muu ei voi kopioida eikä muuttaa. Tämän salaisen tiedon avulla ääni pitää tavalla tai toisella allekirjoittaa, mutta se on tehtävä niin että itse ääntä ja allekirjoittavaa yksilöä ei voi kytkeä toisiinsa. Sokea allekirjoitus on yksi luontevalta tuntuva keino.

Jos äänestäjän hallussa kuitenkin on jotain, joka kytkee hänet äänioikeuteen ja annettuun ääneen, hän pystyy ehkä osoittamaan mitä/ketä hän äänesti. Näin ollen hän voi myydä äänensä tai hänen äänestyskäyttäytymistään voidaan ehkä valvoa jotenkin. Jotkin ns. kuitittomat protokollat kiinnittävät erityishuomion tähän (esim. Benalohin protokolla, jossa vain 0-1-kysymys on mahdollinen -- siis epäkäytännöllinen).

Kehitellään seuraavassa tämän kerran artikkelin pohjalta keskusjohtoista äänestysprotokollaa. Ensinnäkin perusvaiheet ovat:

  1. Rekisteröinti: ketkä saavat äänestää. Mukana voi olla paljon muitakin asioita vaalien julistamisesta, päivämääristä ja säännöistä alkaen mahdolliseen äänestäjien ilmoittautumiseen asti, mutta tämä vaihe voidaan jatkossa jättää vähemmälle huomiolle;
  2. Validointi eli kelpuutus: äänestäjän valtuutuksen tarkastaminen;
  3. Keräys: annettujen äänten koonta;
  4. Laskenta ja tulosten ilmoittaminen.
Perusvaatimukset:
  1. Tarkkuus: (1) annettua ääntä ei voi muuttaa, (2) kelvollinen ääni ei voi tulla hylätyksi (3) eikä kelvoton ääni hyväksytyksi.
  2. Demokraattisuus (Haavoittumattomuus): (1) vain äänioikeutetut voivat antaa kelvollisia ääniä (2) ja kukin heistä enintään yhden.
  3. Yksityisyys: (1) kukaan (muu) ei voi kytkeä ääntä sen antajaan (2) eikä äänestäjä voi todistaa minkä äänen antoi.
  4. Todennettavuus: joka voi toteutua eriasteisena: (i) vaaliviranomaiset pystyvät havaitsemaan karkeat virheet, (ii) muutkin osapuolet pystyvät tähän, (iii) jokainen pystyy todentamaan onko oma ääni tai (iv) ovatko kaikki äänet tulleet oikein lasketuiksi. Toinen ulottuuvuus on sitten, voidaanko korjauksia tehdä ja voiko (kohdassa iii) korjauksen saada menettämättä yksityisyyttään.
Toivottavia ominaisuuksia:
  1. Helppokäyttöisyys;
  2. Joustavuus valittavana olevien vaihtoehtojen tyypin suhteen (sallitaanko jopa vapaamuotoiset vastaukset);
  3. Riippumattomuus äänestäjän sijainnista.
Mahdollinen lisäominaisuus: jokainen saa tietää, kuka äänesti ja kuka ei.

Oletetaan, että voidaan luottaa siihen, että kelpuuttaja (=validoija) ja äänten kerääjä eivät toimi yhdessä. Edellinen voi kyllä samalla olla rekisteröijä ja jälkimmäinen saa hoitaa laskennan. Järjestetään vaali seuraavasti:

  1. Äänestäjä pyytää kelpuuttajalta henkilökohtaisen kelpoisuusmerkin ('eligibility token', tai artikkelissa 'identification tag', joka sellaisenaan ei kuitenkaan riitä yksilöimään äänestäjää).
  2. Äänestäjä lähettää äänensä ja kelpoisuusmerkkinsä äänten kerääjälle, joka on saanut kelpuuttajalta luettelon kaikista myönnetyistä merkeistä.
Harjoitus Millaiset (ilmeiset) luottamuksellisuuden, autenttisuuden ja eheyden vaatimukset näiden vaiheiden pitäisi toteuttaa? Mitä avaimia ja salauksia sitä varten tarvitaan? Mitkä perusvaatimukset toteutuvat

Yksi keskeinen mutta ehkä vähemmän ilmeinen vaatimus on, että jälkimmäistä lähetystä ei pystytä teknisestikään jäljittämään! Tästä huolimatta ehdotettu järjestelmä on toivoton: mikään ei estä äänten kerääjää muokkaamasta ääniä.

Modifikaatio: äänestäjät lähettävätkin äänensä salattuna itse valitsemillaan symmetrisillä avaimilla. Kerääjä julkaisee luettelon näistä salatuista äänistä. Määräajan mentyä umpeen äänestäjät lähettävät avaimensa. Kerääjä purkaa salaukset ja julkaisee äänet. Harjoitus: Mitkä ominaisuudet nyt toteutuvat?

Lähtökohtana ollut oletus kelpuuttajan ja kerääjän riippumattomuudesta ei valitettavasti ole yleensä realistinen. Jätetään se siis tekemättä ja pyydetään kelpuuttaja allekirjoittamaan sokeasti jonkinlainen kelpoisuusmerkintä. Nyt se ei siis voikaan enää olla vastaava tieto, jonka kelpuuttaja luo ja lähettää listana kerääjälle. Harjoitus: Merkintä on äänestäjän itsensä luoma. Mitä se voisi sisältää ja miltä protokolla nyt näyttää?

Tuloksena on Fujioka-Okamoto-Ohta-tyyppinen vaaliprotokolla (1993). Tämän kerran artikkelin SENSUS-protokolla on sen muunnos. Ainoa ero näissä on, että jälkimmäisessä äänestäjän ei tarvitse odottaa kryptattujen äänten julkaisemista, vaan hän saa kuitin, jonka perusteella hän tietää äänensä tullee "kuuluville" ja voi heti lähettää purkuavaimen. (Kuitti on oleellisesti sama kuin kryptattu ääni, joten ero pieni.)

On toinenkin mahdollisuus saada kelpuuttajalta henkilökohtainen äänestykseen oikeuttava merkintä, jota ei silti voi kytkeä henkilöön. Ratkaisu on turkulainen (Nurmi, Salomaa, Santean) ja se perustuu edellä esiteltyyn ANDOS-ideaan, jonka toteutus tosin on melko kompleksinen. Tarvitaan nimittäin hyvin suuri salaisuuksien avaruus, josta kukin äänestäjä ostaa itselleen yhden kelpoisuusmerkin, joka on eri kuin kenelläkään muulla (hyvin suurella todennäköisyydellä).

Kaikissa näissä protokollissa on ongelmana se, että vaaliviranomainen voi äänestää niiden puolesta jotka jättävät äänestämättä. Yksi mahdollisuus vähentää tätä riskiä on edellyttää ilmoittautuminen rekisteröintivaiheessa ja julkaista ilmoittautuneiden lista. Äänestysprosentti suhteessa tähän listaan on todennäköisesti korkea. Jos äänestämättä jättämisen sijasta jokainen antaisi edes tyhjän äänen, ongelmaa ei olisi.

Olkoon yksisuuntaisen funktio ja s äänestäjän valitsema argumentin arvo. Lähettämällä äänen ja kelpoisuusmerkin mukana arvo f(s) saadaan aikaan mahdollisuus vaihtaa ääni toiseksi yksityisyyden kärsimättä. Tämä toteutuu lähettämällä vanha ääni, uusi ääni, s ja f(s').

Äänestysprotokollien kanssa läheisesti tekemisissä ovat tarjouskilpailun protokollat. Niihin ei tällä kurssilla puututa kuin korkeintaan tentissä.


Luettavaksi: M.S.Greenberg, J.C.Byington, D.G.Harper: Mobile Agents and Security, IEEE Communications Magazine, Vol 36, No 7, Jul 1998, 76-85. Liikkuvan koodin turvallisuuden käsittely ensi kerralla on melko suppeaa ja perustuu suoraan tähän artikkeliin.