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