Avaintenvaihdon ongelmaMotivointiaAvaintenvaihto 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
|
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 salasanoillaMotivointia
Sisältöä ja tavoitetta
|
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.
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.
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ää
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).
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 salasanoillaMotivointia
Sisältöä ja tavoitetta
|
Autentikointi on toisaalta varsin monitahoinen käsite ja sen merkitys riippuu yhteydestä. Seuraavassa on mainittu käsitteen tarkennuksia ja minkä aitoudesta kussakin on kysymys:
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" protokollaMotivointia
Sisältöä ja tavoitetta
|
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.
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 äänestysMotivointiaSisältöä ja tavoitetta
|
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.
Ää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:
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.