Kryptoprotokollat, luento 7 (A), 23.3.2009

Unohtava tiedonsiirto

Tiedostamaton eli unohtava tiedonsiirto, oblivious transfer, "OT", on esitelty TTJ:n B-osassa (id=291). Siellä sitä sovellettiin salaisuuksien salattuun myyntiin ja esitettiin ANDOS-protokolla (jonka idea sopii tässä vaiheessa kerrata). Yleensä unohtava tiedonsiirto ei sellaisenaan ole kiinnostava, mutta sitä voidaan käyttää osana monenlaisia muita tehtäviä. Tässä mielessä vastaavanlainen, joskin paljon yksinkertaisempi protokolla on bittiin sitoutuminen.

Ensimmäinen OT-systeemi on Rabinilta vuodelta 1981, ja sitä esitellään Matemaattisen kryptologian kurssilla (vrt. myös em. TTJ-sivu). Seuraavassa esitellään yleisempi OT-toteutus. Todetaan ensin, että sittemmin on kehitetty myös luonnollinen yhdistelmä OT:stä ja bittiin sitoutumisesta: committed (tai: verifiable) oblivious transfer (Crépeau 1990). Siinä lähettäjä A sitoutuu aluksi kahteen bittiin a0 ja a1 ja B bittiin b. Protokollan jälkeen B on sitoutunut bittiin ab eikä tiedä mitään A:n toisesta bitistä. Toisaalta A ei lopussa tiedä mitään bitistä b. Sitoutumisvaiheesta on hyötyä osapuolille siinä, että kumpikin voi olla varma, että toinen on noudattanut OT-protokollaa oikein niille syötteille, jotka tämä ilmoittaa. Tavallisessa OT:ssä tähän tarvitaan jokin erillinen kryptopalikka tai ylemmän tason protokolla.

Tavanomaisella OT:llä on kaksi muotoa, jotka voidaan muuntaa toisikseen. Edellä tuli jo näkyviin se muoto, jossa B valitsee ja saa toisen A:n biteistä tietämättä sitä etukäteen eikä A tiedä kumman B valitsi. Toinen muoto on sellainen, jossa A lähettää bitin ja B saa sen todennäköisyydellä 0,5 ilman, että A tietää kuinka kävi. Yleistyksiä on monenlaisia. Ilmeistä on, että yhden bitin sijalla voi olla bittijono, ja kahden bittijonon tilalla useita, joista B valitsee ja saa yhden (1-out-of-n OT).

Tarkastellaan tapausta "yksi-kahdesta". Olkoon A:lla kaksi viestiä m1 ja m2, ja B haluaa niistä toisen. Protokolla voidaan muodostaa RSA:n avulla pimittäen valintoja ja viestejä salauksen avulla toiselta osapuolelta vähän samaan tapaan kuin tehtiin rahanheitossa 6. luennolla. Oleellinen ero on siinä, että julkisen moduulin n tekijät ovat ja pysyvät vain A:n hallussa. Lisäksi A:lla on avainpari eli salaus- ja purkueksponentti kumpaakin viestiä varten: ei ja di, i=1,2.

Aluksi A lähettää moduulin n ja salauseksponentit e1 ja e2 B:lle, joka tekee valintansa "b" salaamalla generoimansa satunnaisen AES-avaimen k eksponentilla eb. Tuloksen B lähettää A:lle, joka ei tiedä kumpaa eksponenttia B käytti, sillä kummallakin purkueksponentilla tulee yhtä satunnaisen näköinen bittijono, joka kelpaa AES-avaimeksi. Nämä purkamiset A tekeekin ja käyttää di:llä purettua bittijonoa AES-avaimena salaamaan viestin mi, i=1,2. Kun B sitten saa näin salatut viestit, hän voi purkaa tarkalleen toisen, mb:n, eikä A tiedä kumman.

Jos protokolla lopetetaan tähän, A:lla on mahdollisuus huijata salaamalla viestit väärässä järjestyksessä tai molemmilla avaimilla saman viestin. Tämä voidaan torjua, jos jossain myöhemmässä vaiheessa A kertoo purkueksponenttinsa. Tällöin B saa selville molemmat viestit. Tietysti silloinkin on mahdollista, että kumpikaan viesti ei ollut B:n kannalta kiinnostava.

Kuten esim. Helger Lipmaan linkkisivulta näkyy, OT-tutkimus on edelleen vilkasta. Joitakin suuntia siinä ovat -- kuten muissakin protokollissa -- uudentyyppiset modifikaatiot, tehokkuuden kasvattaminen, turvallisuustodistusten vaatimien oletusten heikentäminen. Tavallinen 1-out-of-n OT voidaan esimerkiksi tehdä siten, että tarvitaan vain (keskimäärin) yksi modulaarinen potenssilasku siirtoa kohti. Edellähän tarvittiin kolme. [M.Naor, B.Pinkas: Efficient Oblivious Transfer Protocols. Proc. of SODA 2001]

Monen osapuolen laskenta

Yleistä

"Secure multiparty computation" on monipuolinen sovelluksiakin tuottanut tutkimusalue, jonka yleisenä lähtökohtana on n osapuolta ja n:n muuttujan funktio (esim. n:n bitin konjunktio). Funktion arvo halutaan laskea siten, että jokainen osapuoli antaa arvon "omalle" muuttujalleen, mutta kukaan ei saa tietää muiden arvoista muuta kuin sen, mitä tuloksesta voisi muutenkin päätellä. (Jos esim. konjunktio = 1, silloin kaikkien muuttujien arvo on ollut 1.)

Lisäksi halutaan tietenkin, että funktion arvo on oikein, mutta tämä voi olla suhteessa vain siihen, minkä arvon kukin syöttää. Jos esim. osapuolet haluavat laskea keskimääräisen ikänsä tai palkkansa, mikään ei estä(ne) ketään valehtelemasta.

Funktio toimii vähän niinkuin "automaattinen vaaliuurna": syötteenä ovat vaaliliput, ja uurna laskee vaalituloksen näyttämättä lippuja kenellekään. Tarkoituksena siis on, että laskenta voitaisiin suorittaa ilman luotettua osapuolta. Siis senkään vertaa tietoa muuttujista ei saa paljastua, kuin ääntenlaskija saa tietoa vaalilipuista. (Jos siis esim. konjunktio = 0, tiedetään vain, että ainakin yksi muuttuja on 0, ei sitä, kuinka moni.)

Ilmeisiä sovelluksia ovat huutokauppa ja salainen äänestys. Tavanomaisen äänestyksen lisäksi äänillä voi olla muitakin painokertoimia kuin 1 ja joillakin äänestäjillä eritasoisia veto- ja "vasta"-veto-oikeuksia (siis esim. niin että veto ja vasta-veto kumoavat toisensa). Tällaisessa sovelluksessa ei tarvitse huolestua valehtelemisesta, mutta tuloksen oikeellisuus voi olla hyvinkin kriittinen. Joissain äänestyksissä voi olla tärkeää tietää vain tulos (esim. enemmistön mielipide), ei sitä, kuinka suuri osa oli mitäkin mieltä. Esimerkki tällaisesta on uuden työntekijän vaali: kun valinta on tehty, muiden ehdokkaiden saamalla kannatuksella ei ole myönteistä merkitystä.

Protokollan täytyy sietää huijareita. Tyypillinen teoreettinen tulos on sellainen, että laskenta voidaan suorittaa turvallisesti, jos enintään kolmasosa "pelaajista on hyökkääjiä" (eli ovat esim. jonkin ulkopuolisen tahon korruptoimia). Voidaan myös erotella aktiiviset ja passiiviset hyökkääjät. Edelliset sotkevat protokollaa, jälkimmäiset voivat vain vahingoittaa salaisuuden säilymistä.

Seuraavassa mainitaan ensin muutama sovellus. Sitten esitellään yksi klassinen esimerkki vuodelta 1982 artikkelista, jossa koko laskentamalli ensi kertaa keksittiin.

Lisätietoja aihepiiristä löytyy Helger Lipmaan linkkisivulta tai Ueli Maurerin tutkimusryhmän sivulta. Siellä todettiin mm. näin: "MPC protocols tend to be very complicated and weird. It is difficult to understand (and teach) these protocols, and even more difficult to verify and prove their correctness. Simplifying protocols and splitting them up into primitives is hence an important step towards deeper understanding and verifiable security proofs." Toteamusta ei enää (2009) löydy tässä muodossa, joten ehkä tavoitteeseen ei ole kunnolla päästy. Yksi keskeinen ongelma on protokollien yhdistäminen ja siitä on eri taholla tehty laaja tutkimus: Yehuda Lindell: Composition of Secure Multi-Party Protocols. A Comprehensive Study. LNCS 2815. 2003.

Sovelluksia

Salatun laskennan tutkimus on ollut varsin teoreettista ja yksi syy on siinä, että yleiset protokollat ovat hyvin mutkikkaita. Tehokkailla protokollilla olisi kuitenkin runsaasti käyttöä. Seuraavan sovellusten jaottelun taustalla on artikkeli W.Du, M.J.Atallah: Secure Multi-Party Computation Problems and their Applications: A Review and Open Problems (2001).

Vertailuongelma

Tässä ratkaistaan ns. "miljonäärien probleema": Kumpi on rikkaampi, kun kumpikaan ei halua kertoa montako miljoonaa tarkkaan ottaen omistaa? Tällainen vertailuongelma on sen verran erityinen, että sille on yleisiä protokollia yksinkertaisempi ratkaisu. Se on peräisin artikkelista Yao: "Protocols for Secure Computations", 1982, [Schn:551]. Esitetään se aluksi hieman pelkistettynä.

Oletetaan että A:n syöte on i ja B:n on j, ja kumpikin on väliltä 1..100. Funktiona on vertailu: onko i suurempi kuin j ?

  1. A --> B:   E(x,i)
    x on satunnaisluku ja E on tietty funktio, joka sisältää salausta B:n julkisella avaimella. B ei silti saa selville x:ää eikä i:tä.
  2. B pystyy E(x,i):n perusteella valitsemaan alkuluvun p ja muodostamaan lukujonon z1, ..., z100 siten, että zi on kongruentti x:n kanssa modulo p. Tehtyään näin B lähettää:
    B --> A:   z1,...,zj, zj+1+1,..., z100+1,   p
  3. Harjoitus: Miten A saa selville vertailun tuloksen? Kertooko A sen B:lle?
Vastaus: A tarkistaa onko i:s hänen saamansa luku kongruentti x:n kanssa modulo p: jos näin on, i on enintään j, muuten i on j:tä suurempi.

Tarkennukset:

Tätä vertailuongelmaa käsitellään hieman lisää B-osassa. Sama ongelma on lähtökohtana Ivan Damgårdin esseessä, jossa yleistajuisella tavalla pohdiskellaan laskennan käytännön soveltuvuutta mm. äänestykseen. Uutena asiana kurssin kannalta artikkelin lopussa luonnostellaan hajautettu varmenneviranomainen. CA. Ensin todetaan, että salaisuuden jakamistekniikka (TTJ id=330) on vain passiivinen eikä muutenkaan optimaalinen tapa turvata CA:n yksityistä avain. Sen sijaan ehdotetaan, että CA:n osat, siis hajautetut palvelimet, yhdessä muodostavat kulloinkin pyydetyn varmenteen -- käyttäen siis monen osapuolen laskentaa. Lisäominaisuutena tässä käytetään salaisuuden jakamisesta tuttua kynnysrakennetta, eli että tulos voidaan laskea kunhan tietty osuus palvelimista on mukana.

Huutokauppa

Huutokauppaa eli tarjouskilpailua on monia erilaisia malleja, erityisesti englantilainen (tavallisin), Vickrey (loppuhinta=toiseksi korkein tarjous), hollantilainen (laskeva tarjous), ks. esim. WikiPediasta. Tarjouskilpailun periaate on sovellettavissa myös erilaisiin automaattisiin toimintoihin, esim. verkkoliikenteen palvelunlaatuun.

Päivän artikkelissa Design Issues for Electronic Auctions (2005) esitellään huutokaupan perusmallit ja arvioidaan erilaisia rakenteita niiden elektronisoimiseksi. Jotkin kirjallisuudessa esiintyneet rakenteet todetaan tehottomiksi, jotkin turvattomiksi. Vain yhteen protokollaan viitataan kaavojen tarkkuudella (Boyd ym., 2000). Siitä kaivetaan esiin impersonointihyökkäys, jolla viaton osapuoli saadaan näyttämään tarjouksensa kiistäjältä. Muista turvaongelmista artikkeli käsittelee tarkimmin eräänlaista DoS-hyökkäystä, kahdessakin yhteydessä: Huutokaupan voi joissakin protokollissa vesittää joko liian monilla tarjouksilla tai sellaisilla samansuuruisilla tarjouksilla, jotka aiheuttavat uusinnan, koska ovat jäljittämättömiä.

Artikkelin suositukset keskittyvät ryhmäallekirjoituksen käyttämiseen (vrt. id=328), joskin esitys on vain yleisellä tasolla. Artikkelin mukaan turvatavoitteina pidetään yleisesti, että tarjouksia ei voi

Artikkelin erittelemät rakenteet ja näkökulmat ovat tiivistettyinä seuraavat. Artikkeli liittyy tutkimushankkeeseen James Cook -yliopistossa Australiassa, ja siellä oli tarkoitusta varten myös huutokaupan tutkimuspalvelin.