Kryptoprotokollat, luento 11 (A) 27.4.2009

IKE v2:n kertausta, arviointia, vaihtoehtoja

Tässä vaiheessa lukijan tulee kerrata/opetella IKEv2:n peruspiirteet TTJ-kurssilla jaetun 12-sivuisen RFC-otteen perusteella tai muuten. IKEn vertailukohdista tässä tekstissä eritellään lähemmin vain JFK-protokollaa, jonka arvo on lähinnä juuri vain vertailukohtana osoittamassa, millä tavoin IKEv2 on muodostunut.

Tutkittavina ovat nyt siis protokollat, joita voidaan käyttää luomaan avaimet ja muu turva-assosiaatio, eli SA, kahden IPSec-osapuolen välille. Tällaisia protokollia tai ehdotuksia sellaisiksi ovat:

Arviointiperusteita

Luennon 2 protokollia tarkasteltiin aikoinaan lähinnä off-line -arvaushyökkäyksen kannalta. Pidetään tämäkin mielessä, mutta tarkastellaan IKE:ä ja sen korvaajia erityisesti seuraavista näkökulmista: Autentikointiprotokollia on tällä kurssilla käsitelty moneen otteeseen eri näkökulmista (ja osin samoistakin). Ensi kerrallakin vielä hieman jatketaan. Yksi laaja luettelo kryptoprotokollien tavoitteista löytyy AVISPA-hankkeen sivulta (2003). Tämän luettelon mukaisesti toisella saman dokumentin sivulla mainitaan IKEv2:n tavoitteiksi numerot 1-3, 7, 9-11 ja 15 ("Entity authentication, Message authentication, Replay protection Fresh key agreement, Key authentication, PFS, Secure capabilities negotiation, Limited DoS resistance"). IKEv1:n tavoitteina on näiden lisäksi numerot 12 ja 13 ("Confidentiality", joka tarkoittaa muunkin kuin avaimen salassapysymistä, sekä "ID protection against Eavesdropper").

Minimalistinen autentikointiprotokollien luokittelu

Tarkastellaan erittäin tiivistettyä autentikointiprotokollien luokittelua lähteestä Sen sisältö löytyy laajemmin käsiteltynä D.Parkin väitöskirjasta Cryptographic Protocols for Third Generation Mobile Communications, 2001.

Luokittelu muistuttaa hieman luennolla 2 tehtyä protokollatyyppien kartoitusta, mutta on abstraktimpi ja käsittelee vain julkisen avaimen protokollia. Esittelyn jälkeen arvioidaan tällaisen luokittelun hyödyllisyyttä.

Allaolevassa taulukossa ovat kaikki järkevät mahdollisuudet, joilla osapuolen A väitetty identiteetti voi tulla osoitetuksi todentajalle B. Kuten välittömästi näkyy, useat esimerkit eivät edusta kokonaisia protokollia. Esimerkkien tarkoituksena on karsia jostain protokollasta pois kaikki, mikä ei liity ko. autentikointityypin olemukseen. Useissa tapauksissa B ei esimerkeissä saa mitään tietoa A:sta. Silti B tietää, ettei väärä A pysty toimimaan, koska vain oikealla A:lla on julkista avainta APubKey vastaava yksityinen avain APriKey. Erityisesti implisiittisen autentikoinnin tapauksessa A:n toimet vain edellyttävät häneltä yksityisen avaimen tietämistä ilman että avaimiin liittyviä viestejä esiintyisi. Kohteen autentikointi muistuttaa tätä, mutta siinä esiintyy kyseisenlaisia viestejä. Lähteen autentikointi edustaa sitä, mitä yleensä nähdään kokonaisissa protokollissa, mutta sekä implisiittistä että kohteen autentikointia esiintyy julkaistuissa protokollissa. Artikkeli mainitsee esimerkkejä liitteessään, jossa tarkastellaan autentikointia molempiin suuntiin.

Autentikoinnin tyyppi Esimerkki
Implisiittinen a. (IA) IA_{} A vain laskee: APriKey{ B }
IA_F A <-- B: rB
A vain laskee: APriKey{ B, rB }
Lähteen a. (OA) OA_{} A --> B: APriKey{ B }
OA_S A --> B: TSA, APriKey{ B, TSA }
OA_F A <-- B: rB
A --> B: APriKey{ B, rB }
Kohteen a. (DA) DA_{} A <-- B: APubKey{ B }
DA_F,NoAck A <-- B: APubKey{ B, rB }
DA_F,Ack A <-- B: APubKey{ B, rB }
A --> B: rB

Merkinnät {}, S ja F autentikointityypeissä viittaavat haasteiden käyttöön viestien tuoreuden osoittamisessa. Merkintä {} tarkoittaa, ettei mitään tuoreuden takeita esitetä. Tämä tietysti vähentää näiden protokollien järkevyyttä toistohyökkäysten kannalta. Merkintä S tarkoittaa, että A on itse luonut "haasteen" ja se on tällöin tietenkin TS, time stamp. Merkintä F ('forced') osoittaa, että haasteen (rB)on keksinyt todentaja. Kuten voinee arvata, merkinnät NoAck ja Ack viittaavat siihen kuittaako A haasteen vai ei.

N.L.Foster arvioi väitöskirjassaan (2002) edellä luonnosteltua ja toista, yksinkertaisempaa, protokollakehikkoa suunnittelijan kannalta seuraavasti:

The aim of the pair of frameworks is to allow designers to consider the items which need to be included in the protocol. It allows the designers to determine which properties are important for particular types of protocols. The framework developers [29, 112] suggest that the frameworks could be used in protocol analysis, to point to weak protocols and find methods to fix them, by comparing the protocols with other protocols within the same class in order to learn from their development. Being able to classify the protocols also allows the re-use of existing protocols or protocol components, as well as design and analysis knowledge.

Whilst research into frameworks has only dealt with key-establishment and authentication protocols, this technique could be applied to other types of protocols, to provide a comprehensive framework for designing protocols in general.

One problem with this method is that the protocols are only being classified based upon confidentiality or authentication properties, other security properties may be considered to be equally as important to different protocol designers. However, should more properties need to be considered, the framework will rapidly become very complex.

Another concern about this method is that the abstract protocols have not been proven to be secure, indeed some of the example protocols in the authentication framework are not secure.

Furthermore, no reasoning or proof has been given to show that all possible instantiations of the abstract protocols are secure: the security of the refinement of the abstract protocol to its concrete representation has also not been addressed. Whilst the frameworks can provide potential approaches to the design of protocols, they only address the issue of ensuring that the protocol under development is actually secure through its comparison with other protocols in the same class.

Avainten hallinnasta ryhmäviestinnässä

Miten multicast-viestintä saadaan rajatuksi vain ryhmälle, jolle se on tarkoitettu? Salataan se ryhmäavaimella. Kun ryhmän kokoonpano muuttuu, vaihdetaan avainta, jotta uudet jäsenet eivät pääse lukemaan aiempaa ja poistuvat jäsenet tulevaa viestintää. Avaintenvaihtoa varten käytetään tietysti jonkinlaista KEK-avainta eli avaimensalausavainta (key encryption key). Tämä avain ei voi olla ryhmäavaimen (eli datansalausavaimen) tapaan yhteinen koko ryhmälle, sillä muuten ei voitaisi erotella uusia ja poistuvia jäseniä muista. Jokaisella on siis oltava oma KEK-avaimensa, ja avaintenjakokeskus, KDC, joutuu pitämään kirjaa niistä. Tavoitteena on, että avaimia vaihdettaessa KDC:n ei kuitenkaan tarvitse lähettää jäsenkohtaisia viestejä. Toisaalta KDC ei saa joutua lähettämään multicast-viestinä kaikille kaikkien (paitsi poistuvien) uusia kryptattuja avaimia. Tällaisen ongelma ratkaisuja esittelee koosteartikkeli Otetaan tästä tarkasteltavaksi kaksi binääripuuhun perustuvaa menetelmää, LKH ja OFT, luvut 4.2 ja 4.3 (riittää lukea sivut 312-314). Ideana on, että ryhmän jäsenet ovat lehtisolmuina mahdollisimman tasapainoisessa binääripuussa ja jokaiselle on liittymisvaiheessa sovittu oma KEK. Jokainen tietää myös puussa yläpuolellaan olevia avaimia juureen asti. Normaalisti viestin purkamiseen tarvitaan vain juuriavainta. Itse asiassa sillä vasta puretaan kulloinenkin datansalausavain, jota voi olla tarpeen vaihtaa säännöllisesti eikä vain jäsenmuutosten yhteydessä.

Kun jäsenmuutoksia tulee, kaikki joutuvat vaihtamaan avainta, mutta tätä varten riittää tehdä laskelmia puussa yläpuolella olevista muuttuneista tiedoista, jotka KDC on lähettänyt multicast-viestinä. Riippuen menettelystä ja siitä, missä kohdassa jäsen sijaitsee muuttuneeseen jäseneen verrattuna, laskuaskelia tulee väliltä 1..h, missä h on puun korkeus. Multicast-viestissä puolestaan on menetelmästä riippuen h tai 2h salattua avainta. Tarkempi kuva pitää opetella luennolta tai artikkelista (ja seuraavista 2 kpl:sta). Kiinnostuneiden kannattaa katsella myös taulukkoja III ja IV, joissa on vertailtu eri protokollia varsin monen muuttujan suhteen.

Jäsenen poistumista OFT-järjestelmässä ei ole selitetty artikkelissa. Poistuvan jäsenen rinnakkaiselle eli sisarussolmulle (sibling) annetaan tällöin uusi oma KEK ja poistuvan jäsenen KEK jätetään tyhjäksi. Jäljelle jääneen jäsenen avain itse asiassa nousee tasoa ylemmäs puussa. Vastaavat tiedot riittää toimittaa kaikille kuin jäsenen lisäystilanteessa.

Artikkelissa mainittu OFT-menetelmän sekoitusfunktio f(x,y) voi olla esim. XOR. Tämä tekee ymmärrettäväksi, miksi artikkelissa joissain kohdissa f(g(x),g(y)):n sijasta sanotaan ja merkitään, että g(x) on salattu y:llä ja välillä että g(y) on salattu x:llä. Tässä g on laskuissa mukana oleva hash-funktio.