TTKK / J.Koskinen / Tietoturvallisuuden perusteet, 2002

Tietoturvaprotokollia

Sisältö
Avaintenvaihdon ongelma
[1] Salasanojen käytöstä
[2] Muuta salasanoihin liittyvää
[1] Autentikointia vahvemmin kuin salasanoilla
[2] Haaste-vaste-menettely nollatiedolla
[1] Sokea allekirjoitus ja ANDOS-protokolla
[2] Erityiskysymys: Piilokanavat
Äänestys

Avaintenvaihdon ongelma

Motivointia

Eri yhteyksissä tällä kurssilla tulee esille, millaisia hyökkäyksiä voi olla tietojärjestelmiä vastaan. Avaintenvaihdon ongelma tarjoaa konkreettisen esimerkin, joka osoittaa teoreettisestikin, miten hankalan aihepiirin kanssa olemme tekemisissä.

Avaintenvaihto on niin keskeinen osa kaikkea luottamuksellista tietoliikennettä, että yhden perusmekanismin tunteminen on suotavaa. Samalla on valaisevaa ymmärtää, miten heikko sekin on, ellei autentikoinnista pidetä huolta.

Sisältöä ja tavoitetta

  • Diffie-Hellmanin menetelmässä osapuolet A ja B sopivat kantaluvusta g. Kumpikin valitsee sitten satunnaisen salaisen luvun, sanokaamme luvut a ja b. A lähettää B:lle luvun ga ja B lähettää A:lle luvun gb. Yhteisenä avaimena A:lla ja B:llä on nyt luku gab. Mikä tässä kertomatta jäänyt "pieni yksityiskohta" tekee ulkopuoliselle suunnattoman vaikeaksi saada selville tätä lukua?

Avaintenvaihdon ongelma, Diffie-Hellman-protokolla

Salakirjoituksen keskeinen periaate on, että siihen tarvitaan jokin osapuolten tuntema yhteinen salaisuus, avain, jota ei kukaan muu tiedä. Avain on tyypillisesti bittijono, jolla voi olla pituutta esim. 64 tai 128, ja sen voi yhtä hyvin tulkita kokonaisluvuksi. Avaimesta sopiminen on hankalaa: sitä ei voi lähettää suojattomassa tietoliikennekanavassa eikä sitä toisaalta voi salata, koska ei ole vielä salausavainta.

Nerokas ratkaisu tarjoutuu potenssiin korottamisen laskusäännöistä ja siitä, että logaritmin laskeminen modulaarisessa eli kokonaislukuaritmetiikassa on erittäin vaikeaa, kun luvut ovat suuria. Unohdetaan tässä vaiheessa aritmetiikan modulaarisuus ja keskitytään vain perusideaan:

Kun osapuolet A ja B haluavat generoida yhteisen avaimen, he sopivat kantaluvusta g, jonka ei tarvitse olla salainen. Kumpikin valitsee sitten satunnaisen luvun; olkoon A:n luku x ja B:n luku y. Kumpikin pitää oman lukunsa salassa, mutta A lähettää B:lle luvun gx ja B lähettää A:lle luvun gy. Yhteisenä avaimena A:lla ja B:llä on nyt luku (gy)x = (gx)y.

Jotta joku muu saisi selville saman luvun, hänen pitäisi siis luvuista gx ja gy laskea luku gxy. Tätä varten hyökkääjäkin tarvitsisi jomman kumman luvuista x ja y, eli hän joutuisi laskemaan logaritmin luvusta gx tai gy. Koska kyseessä on todellisuudessa diskreetti logaritmi kokonaislukuaritmetiikassa (moduulina eli jakajana yhteisesti sovittu suuri eli monisatabittinen alkuluku), ei tämä käy päinsä missään kohtuullisessa ajassa. Diskreetti eksponenttifunktio on yksi kryptografiassa hyödyllisistä yksisuuntaisista funktioista (ks. muitakin).

Oletetaan, että hyökkääjä C kaappaa A:n ja B:n toisilleen lähettämät viestit (esim. tietoverkon reitittimessä) ja vaihtaa kummankin tilalle luvun gz, missä z on C:n keksimä luku. Nyt A laskee itselleen avaimen gxz ja B avaimen gyz eivätkä ne ole samat. Tämäpä ei haittaa C:tä, sillä C tuntee molemmat nämä avaimet ja pystyy A:n ja B:n "välimiehenä" jatkossa purkamaan A:n viestistä salauksen avaimella gxz ja lähettämään sen edelleen B:lle avaimella gyz salattuna - ja vastaavasti B:ltä A:n suuntaan. Tämän "palvelun" avulla C saa siis selville kaikki luottamukselliseksi tarkoitetut viestit A:n ja B:n välillä ja voi halutessaan tietysti muuttaakin niitä, eivätkä A ja B osaa epäillä mitään.

Tällainen välimies- eli "man-in-the-middle"-hyökkäys pitää ottaa huomioon kaikessa tietoliikenteen turvaamisessa. Yleisesti siinä on kyse tilanteesta, jossa osapuoli C näyttäytyy A:lle B:nä ja B:lle A:na eivätkä nämä pysty edes periaatteessa havaitsemaan asiaa.

Tässä luonnosteltu Diffie-Hellmanin avaintenvaihtoprotokolla (vuodelta 1976) tarvitsee siis lisäksi osapuolten autentikoinnin, jotta C ei pääse väliin. Kun se on hoidossa, järjestelmä onkin erittäin hyvä ja se on ollut yksi yleisimmistä rakennuspalikoista tietoturvaprotokollissa, ja tulee esille esim. IPSec:n yhteydessä.

Autentikointi salasanoilla

Motivointia

Salasanojen huolellisella valinnalla on helppo ottaa ensimmäinen iso askel kohti parempaa turvallisuutta. Salasana-autentikoinnin periaatteiden tunteminen auttaa ymmärtämään miten ja miksi.

Sisältöä ja tavoitetta

  • Esitä salasana-autentikoinnin käyttäjälle ohjeita hyvän salasanan valitsemiseksi ja hyväksi salasanojen käyttötavaksi. Perustele ohjeet (ts. kerro erityisesti mitä salasanojen haavoittuvuuksia niillä vältetään).
  • Sovelletaan hash-funktiota h tuhat kertaa peräkkäin satunnaislukuun r ja kerrotaan tulos turvallisesti palvelimelle. Vastaa kohtiin a ja b, tai a ja c.
    a) Miten tästä saadaan autentikointimenetelmä ja miksi se on turvallinen?
    b) Miten menettelyä voi (alustuksen jälkeen) nopeuttaa, jos autentikoituminen voi tapahtua myös sellaiselta asiakaslaitteelta, jossa h:ta ei voi laskea kovin nopeasti?
    c) Missä suhteessa a-kohtaa heikompi on OPIE-menettely, jossa r kerrotaan palvelimelle?
  • Mainitse kolme turvallisuusongelmaa, jotka liittyvät salasanapohjaiseen autentikointiin. Minkä ongelman ratkaisuyritys on seuraavanlainen? Autentikoituja lähettää todentajalle tiedot:
        id, r, t, h(id, r, t, pw),
    missä id=käyttäjätunnus, r=satunnaisluku, t=aika, h=hash-funktio, pw=salasana.

Autentikointi salasanoilla

Kaikille tuttu turvamekanismi on käyttäjätunnuksen ja salasanan vaatiminen ennen kuin pääsee kirjautumaan sisään eli käyttämään tietokonetta. Käyttäjä on siis toimija, jonka pääsyä käsiksi resursseihin valvotaan tietyllä mekanismilla. Tätä käytännössä kutsutaan kyllä pääsynvalvonnaksi, mutta kuten sen rakenteita esiteltäessä todetaan, tässä on yhdistettynä autentikointi ja pääsynvalvonta. Itse asiassa, (1) käyttäjätunnuksen tehtävänä on identifioida, (2) salasanan tehtävänä autentikoida, ja (3) käytössä olevat pääsynvalvonnan rakenteet (4) erottelumekanismien avulla hoitavat sitten sen, että kokonaisuus noudattaa jonkin (-1) mallin mukaista (0) politiikkaa.

Salasanamekanismia voi soveltaa pienempiinkin kohteisiin, kuten vaikkapa ohjelmiin, tiedostoihin tai tietokannan tietueisiin. Autentikointi voitaisiin tehdä jollain "haastavammallakin" ja turvallisemmalla menettelyllä. Näitä käsitellään erikseen. Tässä yhteydessä katsotaan tavallisia kiinteitä sekä kertakäyttöisiä salasanoja.

Kiinteät salasanat

Kiinteiden salasanojen käyttöä kutsutaan myös heikoksi, tai yksinkertaiseksi autentikoinniksi, mikä muistuttaa turvallisuuden tasosta.

Käyttäjän syöttämästä (unixin login-)salasanasta lasketaan yksisuuntaisella funktiolla arvo, jota verrataan koneeseen talletettuun arvoon, joka esim. Unixissa on perinteisesti tiedostossa /etc/passwd. Näin koneeseen ei tarvitse tallettaa itse salasanaa. Yksisuuntaisen funktion arvoa ei periaatteessa tarvitsisi suojata, koska siitä ei pysty päättelemään salasanaa. Tämä olisi käytännössäkin totta, jos vain se avaruus, josta käyttäjät salasanansa valitsevat, olisi niin suuri kuin kaikki mahdolliset (tietyn mittaiset) merkkijonot. Todellinen valikoima on niin paljon pienempi että kokeilemalla esim. sanakirjan verran sanoja - pienten muunnostenkin kera - voi löytää merkkijonon, josta laskettu funktion arvo on oikea (tämä on salasanan murtoalgoritmien eli crackereiden perusidea: "dictionary attack"). Sen vuoksi koneeseen talletettua arvoa ei pidetä nykyään kaikkien luettavana. Lisäksi salasana "suolataan" ennen funktion laskua liittämällä siihen satunnainen bittijono. Unixissa tämä on yleensä 12 bittiä, mikä merkitsee 4096-kertaista vaivaa jokaisen arvattavan sanan lisäksi. Suola-arvot talletetaan yksisuuntaisen funktion arvojen kanssa käyttäjiltä piilossa olevaan paikkaan.

Kiinteät salasanat ovat kyllä kelvollisia, kunhan ne on valittu riittävän hankalasti arvattavalla tavalla, jotta crack-algoritmit eivät pysty löytämään niitä. Yksi 10 miljoonasta ei ole vielä tarpeeksi hankalaa. Verkosta löytyy lukuisia ohjeita (LUE yksi lyhyt), millaista salasanaa ei saa valita ja unixin salasananvaihto-ohjelmakaan ei hyväksy kaikkia. Parempi varmuus salasanaehdokkaan hyvyydestä saadaan ajamalla se jonkin crack-algoritmin läpi. Yksi mahdollisuus on myös käyttää koneen valitsemaa satunnaista salasanaa, mutta niistä tulee tietenkin kovin harvoin mitään helposti muistettavaa. Muuan välimuoto on, että kone antaa joitakin merkkejä ja käyttäjä täydentää niiden väliin jotain, joka tekee kokonaisuudesta muistettava(mma)n.

Yksi uudenlainen mahdollisuus olisi luoda graafisia salasanoja, jollaisia voisi syöttää erityisesti PDA-laitteisiin (Personal Digital Assistants). Graafisella salasanalla voidaan saavuttaa paljon suurempi helposti muistettavien salasanojen avaruus kuin tekstuaalisilla salasanoilla. (Aihetta koskeva artikkeli)

Harjoitus: www-palvelimet mahdollistavat seuraavanlaisen salasanamekanismin (ns. Basic Authentication). Asiattomilta suojattavaksi tarkoitettuun hakemistoon tehdään tiedosto nimeltä .htaccess, johon talletetaan oleellisesti, minkä nimiset käyttäjät ovat lukuoikeutettuja ja mikä on salasanatiedosto. (Sen luomista voit kokeilla Lintulassa komennolla htpasswd.) Kun viite tähän hakemistoon tulee selaimelta, palvelin kysyy vastauksessaan käyttäjätunnusta ja salasanaa. Palvelin kryptaa saamansa salasanan ja vertaa tulosta salasanatiedoston sisältöön käyttäjätunnuksen kohdalla. Jos tulos on myönteinen selaimelle lähetään pyydetty tiedosto ja mikä tahansa muu kyseisen hakemiston tiedosto (johon palvelimella on lukuoikeus). Mitä aukkoja tämän järjestelmän turvallisuudessa on?

Vastaus: Salasana kulkee selväkielisenä. Hakemiston tiedostoilla pitää olla lukuoikeudet kaikille, joten saman koneen käyttäjät pääsevät tiedostoihin käsiksi "keittiön" kautta.

Kertakäyttöiset salasanat, OPIE

Pankkien puhelin- ja seittipalveluissa palvelin kertoo, monesko luku käyttäjän pitää kulloinkin tietää painetulta avainlukulistaltaan. Oleellinen ominaisuus on, että ulkopuolinen ei pysty ennustamaan seuraavaa lukua.

Valmiin listan sijasta asiakas voisi käyttää yksisuuntaista funktiota f seuraavalla "takaperoisella" tavalla. Oletetaan, että käyttäjä on soveltanut f:ää n kertaa peräkkäin johonkin generoimaansa satunnaislukuun r ja on ilmoittanut lopputuloksen f(f(f...f(r)..)) = fn(r) palvelimelle jollain autentikoidulla tavalla.

Koska asiakas tuntee r:n ja välivaiheet, vain hän pystyy ratkaisemaan x:n yhtälöstä f(x) = fk(r), missä 1<=k<=n. Ratkaisuhan on yksi välivaiheista eli x = fk-1(r). Asiakas voi näitä ratkaisuja kertomalla osoittaa henkilöllisyytensä n kertaa aloittaen k:n arvosta n ja jatkaen siitä takaperin kohti ykköstä. Palvelin sai aluksi tietää fn(r):n ja jatkossa se aina tallettaa edellisen ratkaisun. Kun r vihdoin on tullut kerrotuksi, pitää laskea uusi salasanajono.

Tässä on kyseessä eräänlainen haaste-vaste-menetelmä. Haasteena on nimittäin luku k (eli missä kohdassa jonoa taas oltiinkaan) ja vasteena fk-1(r).

Idea on peräisin Leslie Lamportilta vuodelta 1981 ja sitä on sovellettu Bellcoren S/KEY-ohjelmistossa. Sen kanssa yhteensopiva on free-ware-ohjelmisto OPIE ("One-time Passwords In Everything"), jollainen on mm. Lintulan teleport-koneessa (käyttöohje). Jotta tätä menetelmää voi myöhemmin käyttää autentikoimattomien modeemi- tai telnet-yhteyksien kautta, käyttäjän pitää ensin päästä sisään jollain turvallisella keinolla (esim. ssh:lla) asentamaan oma salasanajononsa (komento opiepasswd). Toisin kuin edellä, koneeseen ei syötetäkään jonon viimeistä jäsentä fn(r), vaan sille annetaan itse lähtötieto r. Tämä ei haittaa, koska koneeseenhan voidaan tietenkin luottaa tässä asiassa.

Lähtötieto "r" koostuu oikeastaan kahdesta asiasta, joista toinen on käyttäjän valitsema merkkijono ja toinen on siemenluku (merkkijono sekin), jonka kone valitsee, mutta jonka voi asettaa myös itse. Kone tallettaa vain siemenluvun, ei käyttäjän valitsemaa merkkijonoa, joka toimii eräänlaisena salauslauseena, joka pitää muistaa, jos haluaa myöhemmin laskea oikeat vastaukset. Siemenluvun ja seuraavana vuorossa olevan kohdan salasanajonossa voi kysyä koneelta (komennolla opieinfo). Yksisuuntaisena funktiona f on hash-funktio MD4 tai MD5. Oikeat vastaukset haasteisiin voi laskea periaatteessa missä (turvallisessa) laitteessa hyvänsä, mutta siihen voi käyttää myös kohdekoneen funktiota opiekey, joka muodostaa (muistiin kirjoitettavaksi) halutun mittaisen listan halutusta kohdasta salasanajonoa. Tämä funktio ei mitenkään riipu aiemmasta alustuksesta, vaan se toimii vain laskukoneena. Kertakäyttöisten salasanojen lista on tämän näköinen:
596: FOND HOLE BUSH KEEN HECK SLUM
597: COST HAAG TILL NEAR HULL FUSE
598: FREY LA RAGE NOR KEEL GALL
599: KIN GAVE MONT WIN SLOG FEW
600: CODA COL RISK EMIL NAIR STUN
Jokainen salasana on todellisuudessa 64 bitin jono, mutta niiden esitysmuoto on muunnettu 6 englanninkieliseksi sanaksi (jotka ovat 2048 sanan luettelosta).

Lisätietoa, mm. em. sanaluettelo: RFC 1760. Katso myös sanaluettelon käyttöä kiinteän salauslauseen valinnassa esim. PGP:tä varten: DiceWare.

Muuta salasanoihin liittyvää

Single sign-on

Yksi salasanoihin liittyvä käytännön ongelma on se, että sama käyttäjä tarvitsee ja joutuu muistamaan useita salasanoja autentikoituakseen eri tahoille. Tätä varten on kehitelty menetelmiä kertaalleen tehtävään autentikointiin, joka on voimassa jonkin istunnon ajan tai tietyn aikamäärän. Menetelmän nimitys on single sign-on eli kertakirjaus. Pyrkimyksenä on välttää se, että käyttäjät kirjoittavat salasanojaan lapuille, ja toisaalta vähentää unohtuneita salasanoja "avaavien" help-desk-toimintojen kuormaa.

Yleisenä periaatteena eri toteutuksissa on se, että käyttäjän autentikoiduttua kertakirjauspalveluun palvelu lähettää eteenpäin häntä koskevaa valtuustietoa, jonka muut palvelut hyväksyvät ikäänkuin käyttäjä itse olisi sen takana. Salasanakin on tällaista valtuustietoa, mutta koska kertakirjautumistoiminta on koneidenvälistä, siinä voidaan käyttää turvallisempiakin menetelmiä. Valtuustieto on suomennos sanasta 'credentials', mutta myös termi 'authentication data' esiintyy tässä yhteydessä.

Kertakirjautumisessa voi olla ongelmana väärä turvallisuuden tunne. Erityisesti monen asian turvallisuus riippuu yhdestä jäljellä olevasta salasanasta. Lisäksi protokollia hankaloittavat lukuisat erilaiset alustat, joihin kerta-autentikoinnilla pitäisi päästä, paitsi yrityksen sisällä myös internetin yli. Selkeänä uhkana on esimerkiksi yhteyden jääminen käyntiin vaikkapa yleiselle koneelle.

Yksi tunnettu kertakirjausjärjestelmä on Microsoftin Passport-järjestelmä. Sen kritiikkiä löytyy artikkelista Risks of the Passport single signon protocol (Jun 2000). Lisätietoja löytyy myös seminaarityöstä: Unified Single Sign-On (TKK, 1998).

Vahvat salasanaprotokollat

Salasanan vahvuudella tarkoitetaan sitä, miten vaikeasti se on arvattavissa. Kymmenen satunnaisen ASCII-merkin mittainen "sana" on varsin vahva salasanaksi. Ymmärrettävästi tällaiset salasanat eivät luonnu ihmisten käytettäviksi. Ihminen muistaa käytännössä vain heikkoja salasanoja. On kehitetty menetelmiä (protokollia), joilla tällaisia salasanojakin käyttäen saadaan aikaan vahva autentikointi. Yksi sellainen on SPEKE (Simple Password-authenticated Exponential Key Exchange), josta löytyy monipuolista esittelyä. Samoilla sivuilla esitetään pääosin asiallista mutta toisaalta hieman yksipuolisen tuomitsevaa kritiikkiä useita perinteisiä salasanamenetelmiä kohtaan.

SPEKEn kaltaisissa protokollissa sovelletaan Diffie-Hellmanin menettelyä. Se kuuluu julkisen avaimen menetelmiin. Julkista avainta käyttäen saadaan aikaan "perinteisempi" vahva autentikointi, nimittäin haaste-vastemenetelmä ja erityisesti sen toteutus nollatietoperiaatteella. Näistä puhutaan erikseen. Itse SPEKE ja sen sukulaiset jätetään tietoturvaprotokollien kurssille.

Autentikointia vahvemmin kuin salasanoilla

Motivointia

Voisi ajatella, että viestinnän salaaminen on kaikkein perustavinta laatua oleva kommunikointiin liittyvä tietoturvatavoite. Sitäkin tärkeämpänä voitaneen kuitenkin pitää sitä, että tiedetään kenen kanssa ollaan tekemisissä. Muutenhan salaisuudesta ei välttämättä ole mitään hyötyä. Vastapuolen identiteetin selvittäminen on autentikointia ja sillä on luonnollisesti yleisempikin merkitys pääsynvalvonnan yhteydessä. Autentikointi voidaan perustaa salasanoihin, mutta on syytä tuntea turvallisempiakin menettelyjä. Tätä varten kannattaa aloittaa pohtimalla mitä autentikointi oikeastaan tarkoittaa.

Sisältöä ja tavoitetta

Tarkastellaan, mistä on kyse olion autentikoinnissa ja miten haaste-vaste-menetelmä toimii. Erityismenetelmänä katsotaan ([2]) nollatietoon perustuvaa haaste-vaste-protokollaa.
  • Kahden osapuolen yhteistä salaisuutta voidaan käyttää molemmin- tai toispuoliseen autentikointiin monin eri tavoin. Mikä on heikoin tuntemasi tapa (joka on käytössä) ja mikä vahvin? Esittele myös jokin kolmas tapa näiden väliltä. (Voit rajoittua toispuoliseen autentikointiin, mutta mainitse aina kumpi osapuoli autentikoidaan kummalle.)

Autentikointia vahvemmin kuin salasanoilla

Autentikointi on kryptoprotokollissa ja tietoturvassa yleisemminkin varsin keskeinen käsite. Kohtuullisen hyvä suomennos on aidonnus. Myös sanaa todennus käytetään, mutta se sopii paremmin tilanteeseen, jossa verifioidaan jotain eli tarkastetaan totuus, vaikkapa aidonnukseen käytettyjen väitteiden tai todisteiden.

Autentikointi on toisaalta varsin monitahoinen käsite ja sen merkitys riippuu yhteydestä. Seuraavassa on mainittu käsitteen tarkennuksia ja minkä aitoudesta kussakin on kysymys:

Kolme viimeksi mainittua ovat eritasoisia tuloksia, joita avaintenvaihdon protokollilla voidaan saavuttaa. Jaottelun voisi yksinkertaistaa myös kolmeen luokkaan: käyttäjän, viestin ja avaimen autentikointi. Viimeistä luokkaa ei käsitellä tarkemmin tällä kurssilla. Viestin ja sen alkuperän autentikointiin palataan www-turvallisuuden ja muiden verkkoasioiden yhteydessä. Nyt käsitellään vain olioita, jotka voivat toki olla muitakin kuin ihmisiä.

Olion autentikointi

Jotta olio voitaisiin autentikoida, eli todennetusti tunnistaa ("verify identification of ..."), sillä täytyy olla jokin tode(nne)ttavissa oleva ominaisuus, jota muilla olioilla ei ole:
  1. Se on jotain. Tämä tulee kyseeseen tietysti vain ihmisen tapauksessa. Erotteleva ominaisuus on siis fyysinen kuten sormenjälki, käden muoto, ääni, silmän verkkokalvo tai iris, kasvojen lämpöjakauma, kallonmuoto. Tällaisten asioiden mittaamista kutsutaan biometriikaksi. Ominaisuus voi perustua myös käyttäytymispiirteisiin, kuten käsialaan, näppäilyyn, tai puheeseen. Biometriikasta ei puhuta enempää tällä kurssilla. Lisätietoja voi lukea vaikkapa Network Magazinen artikkelista (Jun 2000), jossa on asiaa myös seuraavasta:
  2. Sillä on jotain fyysistä omistuksessaan, esim. toimikortti. Omistetun pitää tietysti olla jotain jota ei voi helposti kopioida tai muuten väärentää. Omistava olio voi olla muukin kuin ihminen. Toimikorteista puhutaan lisää kolmessa yhteydessä: HST, GSM:n SIM ja kortin tekniikka.
  3. Se tietää jotain, tyypillisesti salasanan. Tällaisen tiedon pitäisi mieluimmin olla sellaista, ettei sitä tarvitse paljastaa ja silti voidaan vakuuttua sen olemassaolosta. Tämän laatuinen tieto vastaa kykyä tehdä jotain yksilöllistä. Yksityisellä avaimella allekirjoittaminen on tyypillinen esimerkki sellaisesta. Tieto voi luonnollisesti olla myös laitteen hallussa jolloin tunnistetuksi tulee ensi kädessä kyseinen laite eikä sen käyttäjä.
Seuraavassa käsitellään vain kolmatta luokkaa eli johonkin tiedettyyn perustuvaa tunnistamista. Usein kun jo tiedetään, että puheena on todennettava tunnistus, käytetäänkin vain termiä tunnistus (tai yksilöinti, "identification"). Kun siis näkee tällaisen termin, pitää selvittää, onko kyse vain pelkästä tunnistamisesta - eli siitä että erotetaan yksilön väittämä henkilöllisyys muista esim. nimilistan avulla, vai onko mukana todennus.

Todennettaessa yksilöintiä vaaditaan myös ajankohtaisuutta: olio jota varten yksilöinti tapahtuu (eli verifioija) vakuuttuu myös siitä, että tunnistettava yksilö on aktiivinen samanaikaisesti.

Yksilöinnin tärkein sovellus on pääsynvalvonta. Sisäänpääsy tuo sitten tyypillisesti mukanaan oikeutuksen käyttää resursseja sen mukaan, millainen auktorisointi yksilölle on erikseen määritelty. Oikeuksien määrittely on keskeinen tietoturvallisuuteen vaikuttava tekijä ja se mainitaan myös salasanoihin perustuvan autentikoinnin yhteydessä, mutta se ei ole autentikointitekninen vaan tietoturvapoliittinen tehtävä.

Salasana-autentikointia sanotaan heikoksi (tai yksinkertaiseksi). Vahvalla (johonkin tiedettyyn perustuvalla) autentikoinnilla tarkoitetaan sellaista menetelmää, jossa olion esittämä yksilöintitodiste on muodostettu kryptografisin keinoin. Tämä on X.509-standardin antama määritelmä, mutta heikkoudesta ja varsinkaan vahvuudesta ei ole kovin laajaa yksimielisyyttä.

Esimerkiksi SRP-projektin yhdellä sivulla luonnehditaan erilaisia autentikointitapoja suhteessa SRP:hen ("Secure Remote Password") sinänsä hyvin ja tiiviisti mutta yksipuolisen tuomitsevasti (kuten toisaalla mainitun SPEKEn sivuillakin). Useimmat ovat nimittäin joko heikkoja tai ainakin hankalia. Jäljempänä esiteltävä haaste-vaste-menettely on saanut luokituksen heikko, vaikka sitä määritelmän mukaan voi pitää vahvana. "Hankalia" ovat Kerberos (jota ei käsitellä tällä kurssilla) ja Ssh sekä kertakäyttöiset salasanat. [Tämä referaatti perustui sivujen aiempaan versioon; em. linkkien takana olevaa tekstiä on sittemmin hieman muokattu, mutta sävy on sama. Kelvatkoon muistutuksena kriittisyyden tarpeesta käytettäessä Internettiä tietolähteenä.]

Kertakäyttöiset salasanat tavallaan täyttävät vahvan autentikoinnin vaatimuksen, sillä niissä todiste on laskettu yksisuuntaisella funktiolla. Toisaalta niitä ei lueta vahvan autentikoinnin piiriin, vaan puhutaan salasanojen suojaamisesta (protected passwords). Yksinkertaisempi (kiinteän) salasanan suojaustekniikka on seuraavanlainen. Olkoon h yksisuuntainen tiivistefunktio. Tunnistautuja keksii satunnaisluvun r ja lähettää todentajalle tiedot
   id, r, t, h(id, r, t, pw),
missä id=käyttäjätunnus, t=aika ja pw=salasana. Todentajalla on listoissaan id:n kohdalla salasana pw, joten hän voi laskea vastaavan h-arvon ja tehdä vertailun.

Harjoitus: (1) Miksei viimeksi esitellyn kaltaisessa salasanan suojauksessa voida suojata todentajan tallettamaa salasanaa samaan tapaan kuin silloin kun salasana sellaisenaan välitetään todentajalle (eli tallettamalla vain salasanasta laskettu yksisuuntaisen funktion arvo)?

(2) Miksei salasanan suojaamiseen voisi käyttää salausta - eikö (toisaalla esille tuleva) SSH:kin tee niin? Mikä ongelma on symmetrisen salauksen käytössä? Entä mikä ongelma syntyisi (tai säilyisi), jos salasana vain salattaisiin todentajan julkisella avaimella?

Vastausta kohtaan (2): Kyllä salausta voisi käyttää, mutta käyttö pelkästään h:n sijasta ei toisi mitään lisäturvaa. Symmetristä salausta varten tarvittaisiin sitäpaitsi uusi yhteinen salaisuus ja julkisen avaimen järjestelmä vaatisi lisää resursseja. Salausta käytettäessä ei voitaisi luopua ainakaan suureista id ja t, mutta ne voitaisiin kyllä piilottaa salauksen sisälle. Jos tehtäisiin juuri niinkuin viimeisessä kysymyksessä sanotaan, salakuuntelija voisi jatkossa käyttää salattua pelkkää salasanaa samaan tapaan kuin sen oikeakin omistaja.

Julkisen avaimen infrastruktuurin yhteydessä viitataan vielä yhteen autentikointitapaan, jossa käytetään allekirjoitusta ja jota X.509-standardi kutsuu vahvaksi. Nyt kuitenkin haastellaan vastemenetelmästä.

Haaste-vaste-menetelmä

Kuten salasanamenetelmissä oletetaan nytkin, että tunnistautujalla on tiedossaan jokin salaisuus, jonka tietää myös todentaja eli he ovat toisilleen tuttuja, jotka ovat joskus sopineet salaisuudesta. Todentaja vakuuttuu tästä kysymällä epäsuoria kysymyksiä (haasteita), joihin tunnistautuja voi vastata paljastamatta salaisuutta. Toisaalta oikeita vastauksia ei voi tuottaa ilman salaisuutta. Kysymysten pitää olla sellaisia, ettei ulkopuolinen pysty useastakaan vastauksesta päättelemään salaisuutta.

Challenge-response-menettelyssä kysymykset ovat tyypillisesti satunnaislukuja, jotka käyttäjä syöttää hallussaan olevaan laitteeseen, joka laskee vasteen käyttäen toisena syötteenä yhteistä salaisuutta. Lasku voi olla esim. toisen syötteen symmetrinen salaus käyttäen toista avaimena. Suppea määrä haasteita voisi tietenkin olla etukäteen taulukoituna vasteineen. Tällöinhän kyseessä on kertakäyttösalasana ja luontevin tapa listan käyttämiseen on tietysti numerojärjestys - eli haasteita ei taulukoidakaan vaan ainoastaan vasteet siinä järjestyksessä kuin niitä tarvitaan. Näinhän toimivat vaikkapa pankkien salasanalistat.

Haaste-vaste-menetelmä nollatiedolla

Haaste-vastemenetelmän perusmallissa todentaja haastaa tunnistautujaa kysymyksillä, joihin tämä ei voi vastata ilman että tietää yhteisen salaisuuden. Tavoitteena on olla paljastamatta tätä salaisuutta ulkopuolisille. Katsotaan, miten julkisen avaimen systeemeillä voidaan järjestää sellainen tilanne, ettei edes todentaja tiedä salaisuutta, mutta voi silti vakuuttua, että tunnistautuja tietää. Tällaista sanotaan nollatietotodistukseksi, ja esimerkkinä siitä on Feige-Fiat-Shamir-protokolla. Merkitään:
Y = yksilö joka pitää tunnistaa todennetusti
T = todentaja.

Esitellään protokollan idea olettaen vain jokin yksisuuntainen funktio f, jolle pätee ns. morfismiominaisuus f(x*y)=f(x)*f(y).

Protokollan tavoitteena on vakuuttaa T siitä, että Y tietää salaisen lukunsa s, jonka Y on valinnut ja laskenut siitä julkisen avaimensa v = f(s). Jotta ei T eikä salakuuntelija saisi tietää s:ää, Y ei koskaan lähetä T:lle itse s:ää vaan tulon u=r*s, missä r on satunnaisluku, josta Y on protokollan alussa kertonut T:lle arvon f(r). Koska T ei tiedä s:ää eikä r:ää, niiden tulo näyttää T:stä satunnaiselta eikä sellaisenaan riitäkään vielä vakuuttamaan T:tä: Jotta Y ei voisi lähettää "r*s":nä mitä tahansa, T pyytääkin Y:ltä satunnaisesti joko r:n tai r*s:n.

Oletetaan, että T saa vastaukseksi luvun u. Jos pitäisi olla "u=r", T laskee f:n arvolla r ja vertaa. Jos pitäisi olla "u=r*s": T tarkistaa, onko f(u)= f(r)*v.

Todennäköisyys, että Y, joka ei tunne s:ää, läpäisee tarkastuksen on enintään 1/2. Ainoa, mitä Y voi tehdä, on yrittää ennakoida jompaakumpaa pyyntöä ensimmäisessä viestissään. Haastetta "anna r" varten ei tosin tarvitse tehdä mitään erityistä. Jos sen sijaan Y uskoisi etukäteen, että häneltä tullaan kysymään r*s:ää, hän lähettäisikin protokollan alussa f(r):n sijasta arvon f(z)/v, missä z on satunnainen. Haasteeseen "anna r*s" hän vastaisi sitten z, joka olisi verifioijan mielestä oikein.

Toistamalla protokollaa riittävän monta kertaa saadaan onnistuneen huijauksen todennäköisyys riittävän pieneksi vakuuttamaan T siitä, että Y tietää s:n. Tekemällä m kierrosta saadaan huijauksen todennäköisyydeksi 1/2m.

Yksisuuntainen funktio, jolla on tarvittava (morfismi-)ominaisuus on neliöinti modulo n, missä n=p*q ja osapuolet Y ja T eivät tunne (suuria alkuluku)tekijöitä p ja q. Y saisi tuntea ne, jos n olisi Y:n oma, mutta yleisesti tarvitaan luotettu välittäjä, joka valitsee luvut p ja q ja julkaisee niiden tulon n. Osapuoli Y valitsee satunaisluvun s ja rekisteröi julkiseksi avaimekseen luvun v=s2 mod n.

Tästä protokollasta voidaan todistaa, että T ei saa sen kautta mitään sellaista tietoa, mitä sillä ei ole ennestään (esim. käytännössä laskettavissa v:n ja n:n perusteella).

Ideatasolla nollatietotodistusta voi havainnollistaa "itämaisella luolavertauksella".

Muutama "omituinen" protokolla

Motivointia

Kumpaakin tässä esiteltävistä kahdesta protokollasta voidaan soveltaa osana elektronisen äänestyksen protokollaa. Kumpikin tuntuu sinänsä varmasti hyvin omituiselta, mutta varsinkin sokea allekirjoitus on osoittautunut erittäin hyödylliseksi monessa muussakin yhteydessä. Lisäksi otetaan esille piilokanavan käsite. Se ei ole oikeastaan protokolla, mutta liittyy tähän yhteyteen "omituisuutensa" takia ja on tärkeä tiedostaa koska

Sisältöä ja tavoitetta

Tässä luonnostellaan lyhyesti kaksi protokollaa, sekä yksi keino, jolla hyökkääjä voi joskus päästä vuotamaan tietoa protokollien ja algoritmien rakentamista näennäisistä esteistä huolimatta. Tavoitekysymyksiä protokolliin kannattaa katsoa äänestyksen yhteydestä. ja piilokanavaan osalta lakiasioiden yhteydestä.

Kaksi "eksoottista" protokollaa

Sokea allekirjoitus

Olkoon B:llä RSA-avaimet n, e ja d, joista n ja e ovat julkiset ja d yksityinen (ja siis salainen). Miten A voi saada dokumentilleen m allekirjoituksen B:ltä ilman, että B näkee m:ää tai edes omaa RSA-allekirjoitustaan md mod n?

A valitsee satunnaisluvun r ja lähettää B:lle luvun rem mod n. B allekirjoittaa tämän eli laskee luvun (rem)d mod n, ja palauttaa sen A:lle. Koska tämä luku on sama kuin rmd mod n, A saa haluamansa jakamalla tämän r:llä modulo n.

Yhtenä sovelluksena on myös anonyymi elektroninen käteinen, josta hieman lisää sähköisen kaupankäynnin yhteydessä.

Salaisuuksien salattu myynti

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. Seuraava protokolla on peräisin turkulaiselta Ari Renvallilta. Olkoot salaisuudet t-bittisiä lukuja s1,...,sk, joista B haluaa i:nnen eli 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. Siis esim. RSA:ssa modulin n on oltava t-bittinen.).
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. Ostettava salaisuus voi käytännössä olla toki paljon pitempikin kuin t bittiä. Protokollan mukaiset salaisuudet voivat nimittäin olla salausavaimia.

Erityiskysymys: Piilokanavat

Piilokanavalla (covert channel) tarkoitetaan jotain sellaista keinoa, jonka kautta luottamuksellista tietoa voi päätyä asiattomille tyypillisesti sellaisen toimijan lähettämänä, jolla on kyllä oikeus tietoon mutta ei oikeutta sen lähettämiseen mitään normaalia kanavaa pitkin. Tällainen toimija voi olla suoraan ihminenkin, mutta tietoliikennetekninen piilokanava ei useinkaan ole kätevin tapa "vuotaa" luottamuksellista tietoa - paitsi ehkä vakoilutilanteissa, jolloin ei ehkä ole turvallista esim. kuljettaa levykettä tai paperinippua. Todennäköisempi piilokanavan tarvitsija on Troijan hevonen, joka toimii tietoon tarvittavien oikeuksien tasolla, mutta ei pysty lähettämään niitä.

Piilokanavat jaotellaan ajastus- ja tallennekanaviin. Ajastuskanava ('covert timing channel') toteutuu siten, että lähettäjä muuntelee (moduloi) jotain systeemin parametria sinänsä luvallisesti, mutta samalla koodaa luvattoman viestin näihin muutoksiin. Parametri voi olla vaikkapa CPU-kuorma. Vähimmillään vastaanottajan riittää pystyä havaitsemaan, onko prosessori ruuhkainen vai ei.

Tallennekanava ('covert storage channel') voi perustua vaikkapa tiedostojen nimiin tai sallitussa kommunikaatiokanavassa kulkevien datapakettien pituuksiin.

Harjoitus: Keksi muita ajastus- ja tallennekanavia. Mitä voisi tehdä matkaviestimellä? (Aiempia opiskelijoiden ehdotuksia: tietoliikennemäärät, virheelliset/oikeat tarkistussummat, IP-otsikon "time-to-live"-kenttä.)

Viruksiakin on ehdotettu valjastettaviksi kuljettamaan piilokanavan viestejä. Erikoistapauksena piilokanavasta voi pitää ns. alitajuntakanavaa ('subliminal channel'), jossa kaksi osapuolta kommunikoivat eikä kolmas saa selville, mitä he viestivät, vaikka hän pystyy lukemaan kaiken. Viesti kätketään allekirjoitukseen ja perustana on se, että molemmat osapuolet tuntevat allekirjoitusavaimen (joka yleensä on vain allekirjoittajan tiedossa). Tällaisen tilanteen klassinen esimerkki on kaksi vankia, jotka viestivät vartijan välityksellä ja yrittävät silti neuvotella jonkin pakosuunnitelman (eli eri asia kuin peliteoreettinen vangin ongelma). (Termiä subliminal käytetään myös esim. piilomainonnan yhteydessä, kun ärsykekynnyksen alapuolella oleva viesti piilotetaan vaikkapa TV-ohjelmaan.)

Piilokanavat muistuttavat steganografiaa eli piilokirjoitusta, josta on puhetta vesileimauksen yhteydessä. Vaikka viesti, samoinkuin vesileima, voidaan kyllä saada steganografiassa hyvinkin piiloon, ei siitä kuitenkaan yleensä muodostu varsinaista piilokanavaa, silloin kun viestintää vahtiva taho pystyy tarkastamaan viestin merkityksen bitti bitiltä. Yleisesti piilokanavien löytäminen ja sulkeminen on erittäin vaikea tehtävä ja yleensä tyydytään siihen, että systeemistä pystytään eliminoimaan kovin laajakaistaiset piilokanavat. Toisaalla mainitun oranssin kirjan luokan B2 (kolmanneksi ylimmän 7:stä) yhtenä kriteerinä on piilokanavien analyysi, ja luonnollisesti asia tulee esille myös Common Criterian vakuuttavuusvaatimusten jaottelussa.

Kiinnostuneille, lyhyt artikkeli piilokanavien väärinkäytöstä: Establishing Big Brother using covert channels and other covert techniques. Toinen, pitkä artikkeli, jossa piilokanavista haluttaisiin päästä kokonaan eroon: Architectural Implications of Covert Channels(1992). Artikkelin johdannon avulla voi tyytyä myös vain vähän tarkentamaan yllä annettua käsitystä piilokanavista ja saada samalla liittymäkohtia monitasoiseen pääsynvalvontaan, josta on puhetta toisaalla.

Elektroninen äänestys

Motivointia

Yhteiskunnallinen päätöksenteko äänestyksen perusteella tai vaaleilla valittujen edustajien kautta on yksi keskeisiä demokratian periaatteita. Äänestysten elektronisointi tarjoaisi mielenkiintoisia mahdollisuuksia paitsi prosessin yksinkertaistamiseen ja kustannusten säästämiseen myös aivan uudenlaisiin sovelluksiin. Voitaisiin ehkä saada aikaan vaikkapa sellaista suoraa demokratiaa jossa kansalaiset äänestäisivät jatkuvasti kaikenlaisista asioista ja toimeenpanevat elimet joutuisivat ottamaan tulokset huomioon. Vaalien sähköistäminen on erityisen haastavaa tietoturvallisuuden kannalta.

Sisältöä ja tavoitetta

Aluksi katsotaan millaisia yleisiä ja tietoturvaan liittyviä vaatimuksia äänestämiseen liittyy. Sitten luonnostellaan yhdenlainen äänestysprotokolla, jossa käytetään sokeaa allekirjoitusta.

  • Oletetaan, että on olemassa tehokas keino salaisuuksien salattuun myyntiin (sellainen kuin ANDOS, all-or-nothing-disclosure of secrets). Miten tällaista voisi käyttää elektronisen äänestyksen yhteydessä ja mitä sillä silloin saavutettaisiin? Miksi "ostettaviksi" tarjottavien salaisuuksien joukko jouduttaisiin tekemään hyvin suureksi, ehkä suuremmaksi kuin käytännön kannalta on järkevää?

Elektroninen äänestys

Vaaleja on monen muunkinlaisia kuin ensinnä mieleen tulevat valtiolliset tai kunnalliset vaalit. Yritykset järjestävät osakkailleen ja yhdistykset jäsenilleen edustuselinten vaaleja. Myös mielipiteitä kysytään ja erona tilastollisiin kyselyihin verrattuna on se, että äänioikeutettuja ovat kaikki jonkin populaation jäsenet, eikä vain otos. Monet vaaleista suoritetaan postitse, eikä silloinkaan millään valtiollisten vaalien protokollalla tietyissä ennakkoäänestyspaikoissa, vaan yksinkertaisesti palauttamalla kirjeitse saatu vaalilippu.

Käytäntöjä USA:ssa

Äänestystä voidaan elektronisoida ohjelmoimalla tietokone keräämään äänestäjien siihen näppäilemät mielenilmaisut ja laskemaan niistä tulokset. Tässä on kyse vain vaaliuurnan käyttöliittymän uudistamisesta, mutta hanke on hyvinkin järkevä yhdysvaltalaisessa vaalijärjestelmässä, jossa kysytään kaikenlaista, jollaiseen suomalaisessa yhteiskunnassa ei ole totuttu. Esimerkkejä laitteista ja niiden käytöstä löytyy vaikkapa Delawaresta ja New Jerseystä. Näissä ei selitetä ollenkaan, miten mielenilmaisun yksityisyys säilytetään. Syynä lienee se, että amerikkalaiset ovat tottuneet äänestyskoneisiin, joilla paperisen vaalilipun täyttämistä on aiemmin helpotettu. (Muutama amerikkalaisessa äänestyksessä usein esiintyvä termi: Contest = äänestyksen aihe ("kisa"), jossa on valittavana eri vaihtoehtoja. Ballot = vaalilippu, oleellisesti tietorakenne, johon valinnat merkitään. Tallying = äänten (keräys ja) laskenta.)

Miten vaali voitaisiin järjestää tietoverkon avulla? Yhdysvalloissa on käytetty myös tällaista äänestystä, ja erään sellaisen demonstraatiossa (jota ei enää löydy verkosta) sama ohjelma, palvelin, vastaanottaa tiedot sekä äänestäjästä että hänen antamistaan äänistä. Äänestäjälle vakuuteltiin seuraavasti: "Is my vote anonymous? Yes. Once you cast your vote, there is no record kept to tie your vote to your name. Your ballot is submitted anonymously to the tallying machine which records your votes." Mitä perusteita on luottaa tähän?

Election.com organisoi maailman ensimmäisen sitovan julkisen internet-äänestyksen Arizonan demokraattisen puolueen presidenttiehdokkaan vaalissa syksyllä 1999. Tästä on tietoa, mm. käyttöliittymän ohjeet, yrityksen sivuilla.

Äänestyksen alussa tarvitaan PIN-luku, jolla äänestäjä tunnistetaan. Äänestäjä on saanut tämän postitse. Järjestelmä toimii sikäli eri tavoin kuin suomalainen ilmoitus äänioikeudesta, että äänestäjäksi pitää rekisteröityä eli olla itse aktiivinen.

Teoriaa

Äänestyksessä, toisin kuin useissa muissa protokollissa, esim. avaintenhallinnassa, joudutaan rajoittamaan luotetun osapuolen roolia. Tätä ei jouduta tekemään suorituskyky- tai saatavuusvaatimusten vaan tietojenkäsittelyn uskottavuuden takia: mikään osapuoli ei saa edes periaatteessa tietää yksilöiden äänestyskäyttäytymistä. On tosin olemassa (pieneen mittakaavaan sopivia) hajautettujakin äänestysprotokollia, mutta etsitään nyt kuitenkin sellaista protokollaa, jossa on jonkinlainen keskus, vaaliviranomainen, joka kerää äänet laskentaa varten. Samalla joudutaan siis olettamaan, että se ansaitsee äänestäjien tietyntasoisen luottamuksen. Se ei esimerkiksi myy käyttämättä jääneitä vaalilipun elektronisia vastineita.

Äänestys selvästikin vaatii äänestäjän yksilöinnin jossain vaiheessa, mutta sen ei välttämättä tarvitse toteutua vielä ääniä kerättäessä. Riittää, jos se toteutuu äänten laskennassa, kunhan huijareiden takia ei tarvitse uusia koko prosessia. Yksilöinnin lähtökohtana täytyy olla jonkinlainen rekisteröinti, eli liittyminen tai pääseminen äänioikeutettujen joukkoon. Tässä vaiheessa kunkin yksilön pitää saada haltuunsa jotain sellaista "omistettua" tai "tiedettyä", jota kukaan muu ei voi kopioida eikä muuttaa (seurauksitta). "Jotain omistettua" vastaa perinteisesti vaalivirkailijan antama vaalilippu, joka on äänestäjän kädessä. Koska nyt puhutaan sähköisesti välitettävästä tiedosta, mitään omistettua ei voida pudottaa mihinkään vaaliuurnaan, vaan joudutaan jossain vaiheessa siirtymään "johonkin tiedettyyn". (Vai voisitko kuvitella, että lyijykynämerkinnät karistetaan taitetun vaalilipun välistä uurnaan?)

Äänestäjälle annetaan jotain sellaista yksilöllistä tietoa, jolla hän pystyy osoittamaan antamansa äänen tavalla tai toisella oikeaksi, mutta se on tehtävä niin, että ääntä ja yksilöä ei voi kytkeä toisiinsa. Allekirjoitus ei siis tule kysymykseen ainakaan normaalissa merkityksessä, joka on juuri kytkentä. Lisäksi äänestäjän haltuun ei saisi mielellään jäädä mitään sellaista, joka kytkee hänet annettuun ääneen siinä määrin, että hän pystyisi osoittamaan mitä/ketä hän äänesti. Tällä saavutettaisiin se, ettei hän voi (niin helposti) myydä ääntään ja varsinkin se, ettei häntä voida valvoa tai pakottaa. Jotkin ns. kuitittomat protokollat kiinnittävät erityishuomion tähän, ja paperinen vaalilippuhan irtoaa aikanaan kädestä ja sekoittuu muihin. Jatkossa tämä asia jää kuitenkin vähemmälle huomiolle.

Pohdittavaksi tässä vaiheessa: Äänestäjä ei siis voi ääntä antaessaan käyttää salaista tietoaan allekirjoitukseen, mutta voisiko edellä luonnosteltua tavoitetta kuitenkin lähestyä allekirjoituksen keinoin jostain aivan muusta näkökulmasta? Auttaisiko sokea allekirjoitus tässä ja kuka muu voisi olla allekirjoittajana kuin äänestäjä?

Keskusjohtoisen äänestysprotokollan perusvaiheet ovat ilmeisesti:

  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.
Yhtä ilmeiset (ja varsin yleiset) perusvaatimukset protokollalle:
  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.

Äänestysprotokollia

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 '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ä - siis pelkästään merkit, ei (nimi,merkki)-pareja, jotka kelpuuttajalla toki on tiedossaan.
Näissä vaiheissa tarvitaan toki erinäisiä "normaaleja" mekanismeja viestien luottamuksellisuuden, autenttisuuden ja eheyden takaamiseen. Yksi keskeinen mutta ehkä vähemmän ilmeinen vaatimus on kuitenkin, että jälkimmäistä lähetystä ei saa pystyä teknisestikään jäljittämään! Tarvitaan julkisia äänestyspäätteitä (tms.) tai jokin anonymisointipalvelu kotoaan äänestäviä varten. Jälkimmäisistä on puhetta erikseen; postiäänestyksessä menetelmänä ovat kaksoiskirjekuoret. Tästä huolimatta ehdotettu järjestelmä on toivoton: mikään ei estä äänten kerääjää muokkaamasta ääniä. Vaikka häneen/siihen siis luotetaan jonkin verran, niin ei sentään näin paljon (koska parempaankin pystytään).

Tehdään seuraava muunnos: äänestäjät lähettävätkin äänensä salattuna itse valitsemillaan symmetrisillä avaimilla. Kerääjä julkaisee luettelon näistä salatuista äänistä. Hän ei ole voinut tehdä mitään järkeviä muutoksia niihin. Määräajan mentyä umpeen äänestäjät lähettävät avaimensa, kerääjä purkaa salaukset ja julkaisee äänet. Äänestäjät voivat nyt tarkistaa ääntenlaskun ja sen, että oma ääni on mukana listassa (kelpoisuusmerkistä lasketun hash-arvon rinnalla). Oikaisuvaatimus on mahdollista toteuttaa nimettömänä.

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 kelpuuttajalta sellainen kelpoisuusmerkintä, joka osoittaa äänioikeuden, mutta ei yksilöi äänestäjää. Toisin sanoen kelpuuttajalle lähetetään omalla nimellä varustetussa sinetöidyssä kuoressa tyhjä äänestyslippu, johon kelpuuttaja lyö kuoren läpi kelpoisuusleiman ja palauttaa äänestäjälle, joka avaa kuoren, merkitsee äänensä lippuun ja lähettää sen kerääjälle. Digitaalisessa maailmassa kelpuuttajan operaatio voidaan toteuttaa sokealla allekirjoituksella, mutta teknisten yksityiskohtien vuoksi äänestysmerkinnän pitää siinä vaiheessa jo olla tehtynä - ei mikään ongelma. Tällainen on Fujioka-Okamoto-Ohta-tyyppinen vaaliprotokolla (1993).

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 erikseen 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ä).

Kummassakin näistä protokollista 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.

Digitaalinen maailma tarjoaa paitsi uudenlaisia ongelmia myös ennenarvaamattomia mahdollisuuksia: Olkoon f yksisuuntainen 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ä. Äänen vaihtaminen toteutuu yksinkertaisesti lähettämällä vanha ääni, uusi ääni, s ja f(s'), missä s' on uusi satunnainen luku.

Fujioka-Okamoto-Ohtan protokollan läheinen muunnos on toteutettu Sensus-järjestelmässä, joka oli diplomityötä vastaava projekti. Sitä ei enää ylläpidetä, mutta sen voi edelleen ladata vuodelta 1996 peräisin olevilta sivuilta. Tässä järjestelmässä äänestäjän ei tarvitse odottaa kryptattujen äänten julkaisemista, vaan hän saa kuitin, jonka perusteella hän tietää äänensä tulleen "kuuluville" ja voi heti lähettää purkuavaimen. (Kuitti on oleellisesti sama kuin kryptattu ääni, joten ero pieni, mutta tekee järjestelmästä käytännöllisemmän.)

Tarkempaa tietoa, myös muista protokollista, löytyy mm. Cranorin ja Cytronin artikkelista. Lisätietoja löytyy Cranorin ylläpitämältä elektronisen äänestyksen linkkisivulta.