Kryptoprotokollat, luento 12 (A), 4.5.2009

Täydennys protokollien suunnitteluperiaatteisiin

Kirjassa Network Security [KaPS02] on tarkistuslista, jota sopii käyttää kun on suunnittelemassa tai arvioimassa autentikointiprotokollaa. Luettelo jäsentyy 7 pääkohtaan (jotka tässä on tiivistetty 5:een) sen mukaan, mitä hyökkääjä voi (yrittää) tehdä osapuolten A ja B käymässä protokollassa. Näistä A edustaa yksilöä ja B voi olla myös palvelin. Vaikka hyökkääjä jossain määrin onnistuisi pääkohdan mukaisessa toiminnassa, alakohdat esittävät, mitä uhkaa protokollan silti pitäisi pystyä torjumaan.
  1. Salakuuntelu
  2. Esiintyminen A:na, keskustelun aloittajan roolissa
  3. Esiintyminen B:n sijalla, yhteydenoton vastaanottajan roolissa
  4. A:lla [ B:llä ] tallessa olevien salaisuuksien murtaminen (paljon pahaa voi tapahtua mutta seuraavat pitää estää protokollatasolla)
  5. Viestinnän välittäminen A:n ja B:n välillä
Kirjassa todetaan, että on lukemattomia yhdistelmiä edellisistä. Kirjan mainitsemat kaksi on tässä yhdistetty salaisuuksien murtumiskohtaan (joka itsekin on yhdistelmä kahdesta kohdasta). Jotta tarkistuslista olisi varmasti hyödyllinen, siihen pitäisi tietysti kirjoittaa auki kaikki vähänkään mahdolliset tapaukset. Toisaalta jo tässä listassa on sellaisia kohtia, joihin ei kaikissa tapauksissa tarvitse varautua. Erityisesti useassa kohdassa esiintyvä "OFAH" on sellainen, jos yhteiset salaisuudet ovat riittävän vahvoja (toisin kuin salasanat yleensä).

Harjoitus: Miten nämä periaatteet suhtautuvat kurssin alkupuolella esitettyihin suunnitteluperiaatteisiin?

Kryptografinen hierarkia kokonaisuudessaan

Niels Ferguson ja Bruce Schneier ovat esittäneet kirjassaan Practical Cryptography (2003) monipuolisen katsauksen asioihin, jotka täytyy ottaa huomioon, jotta kryptologiaa voisi käyttää tietoturvatarpeiden toteuttamiseen. Seuraava luettelo pohjautuu pääosin tähän kirjaan ja pyrkii esittämään kryptoprotokollien kokonaiskontekstia alkaen ylimmältä ihmistä lähinnä olevalta tasolta ja edeten enemmän tai vähemmän monotonisesti alaspäin kohti bittejä tai alkulukuja. Useissa kohdissa on mainittu erityisiä yhteyksiä, joissa asiaa sivutaan tällä kurssilla (linkit) tai TTJ:ssä, TTP:ssä tai ei lainkaan. Hakasuluissa on asioita, joita kirja puolestaan ei käsittele.
  1. Kryptoasiantuntijuus [, yhteiskunnalliset kysymykset] [, "liiketaloudelliset" tekijät ( Mikromaksujen uhkamallit)]
  2. PKI, luottamuskysymykset (TTJ)
  3. patenttien aiheuttamat ongelmat. IBE
  4. ohjelmoinnin turvallisuus; jäännöstietojen pyyhkiminen (TTJ)
  5. salaisuuksien tallentaminen ( salasanaprotokollat)
  6. avainten hallinta, avainpalvelimet (TTJ: Kerberos)
  7. protokollien toteutuksen taso. Vanhojen versioiden ylläpito, neuvottelun laajuus (IKE), nimeämiset (protokolla, ajokerta, viesti), ajastimet.
  8. tarkan ajan määritys ja merkitys ( off-line vedonlyönti; Verkon tietoturva -kurssi; Tietoliikenteen tietoturvan seminaari 2007)
  9. protokollien kompleksisuus
  10. standardit (jäljempänä EAP ym.)
  11. protokollat: konkreetti matemaattinen taso ( PK-protokollien periaatteisto)
  12. protokollat: abstrakti taso (tämä kurssi yleisesti) [, formaali verifiointi, kryptotodistusten premissit kuten 'random oracle']
  13. suurten lukujen aritmetiikka: tehostusta ja tarkistuksia
  14. lohkoalgoritmit, moodit (joiden kautta vuosalaus pelkästään tulee esille kirjassa), tiiviste- ja MAC-funktiot. (TTJ)
  15. satunnaisuuden generointi (TTJ)
  16. alkuluvut: luonti (mahd. niin että (p-1)/q >> 2), testaus, generaattorin löytäminen (mahd. vain kertalukua q olevan). (Matemaattisen kryptologian kurssi)
Harjoitus

Langattoman pääsyn autentikointi

Langattoman tietoverkon tekniikoita on monenlaisia, mm. GPRS ja Bluetooth, mutta tässä käsitellään vain WLAN-tekniikkaa eli langattomia lähiverkkoja, joita koskee IEEE:n standardisarja 802.11. Päätavoitteena on tarkastella verkkoon autentikoitumista ja erityisesti protokollan EAP johdannaisia. Niiden mutkikkuus ja moninaisuus tarjoaa esimerkin edellä käsitellyille yleisille periaatteille. Esitietona on TTJ-kurssin teksti AAA (id=214), jossa on esitelty yleisesti EAP ja Radius. Protokolla EAP määriteltiin RFC2284:ssä vuonna 1998 otsikolla PPP Extensible Authentication Protocol (EAP). Uudempi RFC 3748 vuodelta 2004 ei enää kanna nimessään PPP:tä.

Pääsyrakenteita yleisesti

Käyttäjän pääsyssä turvattuun verkkoon voidaan soveltaa protokollia, joissa on käyttäjän (tai hänen ohjelmansa) ja kyseisen verkon varsinaisten palvelujen lisäksi kaksi osapuolta. Nämä ovat tutut myös GSM-verkkoon autentikoitumisesta: Pääsyn tarjoaminen perustuu tietenkin oikeuksiin ja sen toteutukseen on monenlaisia mahdollisuuksia: esim. VLAN-reitityksen käyttö ja palomuurin dynaaminen puhkominen (jotka ovat V-TT-kurssin asiaa).

EAP-pohjaista autentikointia käsittelee 802.11X, toiselta nimeltään EAPOL eli EAP over LANs (joskin oikeasti Port-Based Network Access Control). Siinä pääsypalvelimella on nimenä authenticator. Käyttäjä (client-ohjelma) on puolestaan supplicant, sillä se tuottaa (supplies) valtuustiedon, jonka kelvollisuuden authentication server sitten välittää pääsypalvelimelle, joka monessa yhteydessä kantaa nimeä AP, access point, tai tukiasema. Luotetuin näistä osapuolista on autentikointipalvelin, mutta sen ja pääsypalvelimen on myös autentikoitava toisensa, jotta väärä tukiasema ei pääsisi käyttäjän ja verkon väliin. Olisi myös hyvä, jos tukiasema ei saisi sellaista tietoa, jonka perusteella se voisi tekeytyä käyttäjäksi (ja vielä vähemmän tietenkään autentikointipalvelimeksi). Tyypillinen autentikointipalvelin lähiverkoissa on RADIUS. Käytännössä tämän takana on vielä jokin tietokanta kuten Active Directory, LDAP, tai jokin toinen RADIUS-palvelin, myös jossain toisessa toimialueessa ...

Tietokannan turvallisuutta ei saa jättää huomiotta, mutta varsinaisen protokollan idea on siis sellainen, että käyttäjän ja verkon välillä käydään EAP-neuvottelua ja verkon komponenttien välillä tapahtuu käyttäjän toimittaman valtuustiedon validointi. Jos autentikoinnin pitää olla molemminpuolinen, toimitetaan käyttäjälle verkon valtuustiedot. Tämä tapahtuu esim. UMTS:ssä niin, että puhelin (sen USIM) saa verkolta haasteen ohella yhteisellä avaimella salatun (48 bittisen) sarjanumeron. Autentikoinnin lisäksi on syytä toteuttaa salausavainten jakelu.

Protokollapinoon muodostuu siis tällainen osa:

  1. EAP-menettely, esim. haaste-vaste tai TLS (kohta lisää näistä). Kannattaa huomata, että TLS tässä tapauksessa poikkeuksellisesti asettuu EAP:n eikä TCP:n päälle.
  2. EAP, joka sellaisenaan on lähinnä yksinkertainen ja yleinen kääreprotokolla, jonka päällä voidaan tehdä kättelyitä, jotka vaativat vaihtelevan määrän viestejä.
  3. EAPOL, joka vastaavasti käärii EAP-paketteja MAC-paketeiksi
  4. Langallinen tai langaton lähiverkko (Wifi- tai Ethernet-linkkikerros, ks. jäljempänä)
Protokollapinosta puhuminen ei saa jättää varjoonsa yleisemmän tason tärkeitä kysymyksiä, jotka ovat sukua myös suunnitteluperiaatteille: Katso luennolla 11 käsitellystä IKEv2-standardista, miten se ottaa huomioon EAP:n (ko. jakso on mukana luennolla jaetussa otteessa). Yksi tuoreimmista EAP-standardeista on "EAP-IKEv2 Method" eli RFC 5106 tammikuulta 2008.

EAP-menettelyt yleisesti ja yhteys matkaviestintään

EAP-standardi määrittelee seuraavat EAP-menettelyt: Identity -- Notification -- Legacy Nak -- MD5-Challenge -- One-Time Password (OTP) -- Generic Token Card (GTC). Näistä kolme ensimmäistä ovat yleisiä tyyppejä Request ja Response -viesteille ja MD5-haaste on ainoa standardissa vaadittu autentikointimenettely. On monia muitakin EAP-menettelyjä, ks. IANAn lista. Luennolla 5 esillä olleita salasanaprotokollia soveltavat EAP-SPEKE, SRP-SHA1. Useat menettelyt soveltavat jotain Token Card -järjestelmää, kuten EAP-SIM ja EAP-AKA, jotka ovat yksi Henry Haverisen väitöskirjassa esitettäviä tuloksia (luku 6, "Interworking between Wireless LAN and GSM/UMTS Cellular Networks: Network Access Control, Mobility Management and Security Considerations". Väitös TTY:llä 3.12.2004). Niissä käytetään SIM- ja USIM-korteilla tallessa olevaa avainta. Edellinen tekee GSM-tyylisesti vain yksipuolisen autentikoinnin ja jälkimmäinen UMTS-tyyliin molemminpuolisen.

Langattoman lähiverkon ja matkapuhelinverkon yhteiskäyttöä on tutkittu ja siltä alueelta löytyy mielenkiintoisia mahdollisuuksia ja haasteita kryptoprotokollille. Tähän aiheeseen pääsee sisälle vaikkapa em. väitöskirjan kautta. Muita laajoja lähteitä on 3GPP:n spesifikaatio 3G security; Wireless Local Area Network (WLAN) interworking security (tuorein versio 8.1.0, 20.3.2008). Standardien numerointisivulta näkyy, mitä kaikkea UMTSiin kuuluu ja voi todeta, että 33-sarja koskee turvallisuuden 'aspekteja' ja 35 turva-algoritmeja.

Katsauksen standardeihin on kirjoittanut Valtteri Niemi: Trends in mobile security standards (Information Security Technical Report, Vol.9:4, Dec 2004, 32-38.)

EAP-menettelyjen vertailuja

Jos tarkastellaan langattomia verkkoja ilman yhteistoimintaa matkapuhelinverkkojen kanssa, tiivis iLabs-artikkeli toteaa yleisimmiksi EAP-menettelyiksi seuraavat.
EAP-MD5
Vastaa langallisen PPP:n CHAP-protokollaa (Challenge handshake auth.prot): haaste-vaste, jossa vaste lasketaan MD5:llä tunnisteesta, haasteesta ja salasanasta; yksisuuntainen eikä sen vuoksi turvallinen -- toki parempi kuin PPP:n alkuperäinen PAP (Password auth. prot.), jossa salasana oli selkokielinen. Lisäongelmana on tietysti se, ettei tässä muodostu salausavainta.

EAP-TLS (RFC 2716)
Samanlainen kuin TLS (eli SSL), nyt vain EAP-pakettien sisällä ja varmenne aina molemmilla osapuolilla. Tuloksena luonnollisesti myös istuntoavain. Tämä on 802.11i-standardin mukainen de facto -menettely (vaikkei siihen siis kuulukaan).

TTLS= tunneled TLS
PEAP = protected EAP
Palvelin autentikoidaan varmenteen perusteella tavallisen TLS:n tapaan. Näin syntyneessä tunnelissa (kryptatussa ja toisesta päästään autentikoidussa yhteydessä) autentikoidaan asiakas jollain muulla menetelmällä, kuten salasanalla. Erona (pienenä) PEAP:n ja TTLS:n välillä on, että edellisessä sisempi menetelmä rajataan johonkin EAP-menettelyyn, jälkimmäisessä ei. Näissä protokollissa torjutaan liikenneanalyysia asiakkaan osalta toisin kuin edellisissä --esim. varmenteet EAP-TLS:ssä ovat selkokielisiä. Tosin nämäkin protokollat sallivat sen, että asiakas voi tunnelia muodostettaessa jo ilmoittaa myös identiteettinsä.

LEAP = Lightweight EAP
EAP-FAST = EAP - Flexible Authentication via Secure Tunneling
Ciscon menettelyjä, käyttäjätunnus ja salasana tiivistetään; molemminpuolinen mutta LEAPissa sanakirjahyökkäys on mahdollinen off-line (kuten MD-5:ssäkin), joten tarvitaan vahvoja salasanoja. EAP-FAST korjaa tämän puutteen PEAP:n tapaisesti, vrt. yleiskatsaus Ciscon sivulla. LEAP ei esiinny IANAn listalla ja joku on sitäkin mieltä, että se on jäämässä PEAP:n tieltä.
Tässä referoitu iLabs-vertailu ja sen viimeisessä kohdassa mainittu Cisco-katsaus tarjoavat esimerkkejä siitä, millaisiin asioihin kryptoprotokollien käytännön soveltamisessa joudutaan ottamaan kantaa. Niissä on luonnollisesti samoja "isoja kysymyksiä" kuin edellä käsitellyissä kattavissa tarkistuslistoissa, mutta jotkin kohdat ovat hyvin spesifejä ja vaatii pientä pohdintaa havaita mitä yleistä kategoriaa ne edustavat. Ciscon vertailussa käsitellyt attribuutit ovat tällaiset: EAP-standardeissa itsessään luonnehditaan eri EAP-menettelyjä tällaisen attribuuttilistan avulla. Mallina on turvaväitteet EAP-IKEv2 -menettelylle:
  Ciphersuite negotiation:   Yes
  Mutual authentication:     Yes
  Integrity protection:      Yes
  Replay protection:         Yes
  Confidentiality:           Yes
  Key derivation:            Yes
  Key strength:              Variable
  Dictionary attack prot.:   Yes
  Fast reconnect:            Yes
  Crypt. binding:            N/A
  Session independence:      Yes
  Fragmentation:             Yes
  Channel binding:           No

Täydentävä ja kertaava maininta: WEP ja WPA

Alkuperäinen WLAN-salausjärjestelmä WEP on todettu puutteelliseksi (vrt. id=294). Siihen liittyvä parannus 802.11i-standardin kehittelyvaiheessa on ollut avaimia ja alustusvektoreita sekoittava TKIP (Temporal Key Integrity Protocol) ja sitä tuoreempi ja vahvempi RSN (Robust Secure Network), joka johdattelee AES-128:n käyttöön RC4:n sijasta (joka on WEP:n algoritmi). Tämä tapahtuu laskurimoodissa käyttäen CBC-MACia ja siitä nimi CCMP, Counter Mode with Cipher Block Chaining Message Authentication Code Protocol (tai ilman P-kirjainta kuten TTJ:ssä: id=380). Alustusvektorin pituus on 48 bittiä.

Wi-Fi eli wireless fidelity on 802.11-standardien (erityisesti yleisimmän eli .11b:n) lempinimi samaan tapaan kuin ethernet on IEEE 802.3:lle. Oikeastaan kyseessä on eri laitteiden yhteensopivuutta edistävä hanke: Wi-Fi Alliance on teollisuusyhteenliittymä, joka myöntää sertifikaatteja IEEE:n 802.11-standardien mukaisuudesta. Sillä on myös ollut 802.11i:n valmistumista odotellessa oma väliaikainen standardi WPA eli Wi-Fi Protected Access. Siinä on kaksi moodia, enterprise mode, joka perustuu RADIUSiin, ja PSmode, joka perustuu ennaltasovittuihin salaisuuksiin. Edellä mainittu RSN on toiselta nimeltään WPA2, ja se edustaa vuonna 2004 valmistuneen 802.11i-standardin täyttä noudattamista.