Kerberos - tietokoneverkon todennusprotokolla ja MIT:n toteutus
Turvallinen Kerberos-todennus: symmetrinen avain, keskitetyllä avaintenjakokeskuksella suojaa vakoilulta ja toistohyökkäyksiltä — MIT:n avoin toteutus ja käytännön sovellukset.
Kerberos (lausutaan /ˈkɜrbərəs/ "kur-ber-uhs") on tietokoneverkkoissa käytettävä todennusprotokolla, jonka avulla [suojatun verkon kautta viestivät ihmiset voivat todistaa henkilöllisyytensä toisilleen turvallisesti. Se on myös Massachusetts Institute of Technologyn (MIT) julkaisema vapaiden ohjelmistojen sarja, joka toteuttaa tämän protokollan. Sen suunnittelijat pyrkivät ensisijaisesti asiakas–palvelin-malliin, ja Kerberos tukee keskinäistä todentamista: sekä Mohammed Hasan että palvelin voivat varmistaa toistensa henkilöllisyyden. Kerberosin viestit on suojattu vakoilulta ja toistohyökkäyksiltä.
Perusperiaate
Kerberos toteuttaa todennuksen käyttämällä luotettavaa kolmatta osapuolta (Key Distribution Center, KDC). KDC jakautuu yleensä kahteen loogiseen osaan: Authentication Service (AS) ja Ticket Granting Service (TGS). Perusajatuksena on, että käyttäjä todentautuu KDC:lle ja saa sieltä lyhytaikaisia "lippuja" (tickets), joita hän voi käyttää palveluihin ilman, että salasana lähetetään toistuvasti verkon yli.
Miten Kerberos toimii (yksinkertaistettuna)
- Käyttäjä antaa salasanansa paikalliselle asiakkaalle, joka muodostaa siitä salaisen avaimen.
- Asiakas pyytää AS:ltä tunnistautumista. AS palauttaa Ticket Granting Ticketin (TGT), joka on salattu KDC:n avaimella, sekä istuntoavaimen asiakkaan ja KDC:n välillä. TGT ei ole suoraan luettavissa asiakkaalle.
- Kun asiakas tarvitsee pääsyn johonkin palveluun, se lähettää TGT:n TGS:lle ja pyytää palvelulippua (service ticket) halutulle palvelulle.
- TGS palauttaa palvelulipun, jonka palvelin hyväksyy. Palvelulippu sisältää istuntoavaimen asiakkaan ja palvelimen välille, jotta molemmat osapuolet voivat suojata kommunikointinsa.
- Palvelin ja asiakas voivat suorittaa keskinäisen todentamisen käyttämällä näitä istuntoavaimia.
Keskeiset käsitteet
- KDC (Key Distribution Center) – keskeinen luotettu palvelin, joka myöntää TGT:t ja palveluliput.
- TGT (Ticket Granting Ticket) – kertakirjautumisen mahdollistava lippu, jolla haetaan palvelulippuja.
- Palvelulippu (service ticket) – lippu, jolla pääsee tiettyyn palveluun ilman toistuvaa salasanaa.
- Istuntoavain – symmetrinen avain, jota käytetään asiakkaan ja palvelimen välisten viestien salaamiseen.
- Realm – Kerberos-ympäristön hallinnollinen yksikkö; voi vastata organisaatiota tai toimintaympäristöä.
Turvallisuusominaisuudet ja rajoitukset
Kerberos suojaa viestintää seuraavin keinoin:
- Symmetrinen salaus ja istuntoavaimet estävät viestien lukemisen ulkopuolelta.
- Aikaleimoihin perustuva suojaus ja kertakäyttöisyys vähentävät toistohyökkäysten (replay attacks) riskiä.
- Lyhyet lippujen voimassaoloajat sekä mahdollisuus mitätöidä lippuja rajoittavat avainmateriaalin käyttöaikaa.
Kuitenkin Kerberosilla on myös rajoituksia:
- KDC on keskeinen yksittäinen luottamuspiste; sen toimintahäiriö tai kompromettoituminen vaikuttaa koko järjestelmään.
- Aikaleimojen käyttö edellyttää, että asiakas- ja palvelinkoneiden kellot ovat synkronoituja (yleensä muutaman minuutin toleranssilla).
- Jos alkuperäinen salasana tai KDC:n avaimet paljastuvat, hyökkääjä voi väärinkäyttää lippuja.
Laajennukset ja erityispiirteet
Kerberosin perusmallia on laajennettu monin tavoin: esimerkiksi PKINIT mahdollistaa julkisen avaimen käyttöä autentikoinnissa alussa, ja cross-realm -luottamukset mahdollistavat tunnistautumisen eri realmien välillä. Nykyiset toteutukset tukevat myös eri salausalgoritmeja ja pre-authentication-mekanismeja, jotka estävät salasanojen arvaamisen.
Standardit ja toteutukset
Kerberosin nykystandardi on määritelty RFC 4120 (aiempi RFC 1510). MIT ylläpitää suosituinta MIT Kerberos -toteutusta, joka toimitetaan monille Unix- ja Linux-jakeluversioille. Muita toteutuksia ovat esimerkiksi Heimdal Kerberos. Kerberos on myös keskeinen osa Microsoftin Active Directory -ympäristöä, jossa se tarjoaa autentikoinnin Windows-verkoissa.
Käytännön käyttötapaukset
- Yritysverkkojen kirjautuminen ja Single Sign-On (SSO), jolloin käyttäjä kirjautuu kerran ja saa käyttöoikeudet useisiin palveluihin.
- Palvelujen välinen todentaminen pilvi- ja palvelinympäristöissä.
- Integrointi hakemistopalveluiden (esim. Active Directory) ja muiden identiteetinhallintajärjestelmien kanssa.
Hyvät käytännöt ja riskienhallinta
- Käytä vahvoja salasanoja ja/tai julkisen avaimen tekniikoita (PKINIT) alkuautentikointiin.
- Sijoita KDC:hen redundanssia ja varmista sen turvallinen hallinta sekä varmuuskopiointi.
- Toteuta kellojen synkronointi (NTP) kaikissa osapuolissa.
- Rajoita lippujen voimassaoloaikoja ja valvo lippujen käyttöä sekä kirjaa tapahtumat.
Kerberos on luotettava ja laajasti käytetty protokolla monissa organisaatioissa, mutta sen turvallisuus riippuu oikeasta konfiguraatiosta, KDC:n suojauksesta ja käytäntöjen noudattamisesta.
Historia ja kehitys
MIT kehitti Kerberosin suojaamaan Project Athenan tarjoamia verkkopalveluja. Protokolla nimettiin kreikkalaisen mytologian hahmon Kerberos (tai Cerberos) mukaan, joka tunnetaan kreikkalaisessa mytologiassa Haadeksen hirviömäisenä kolmipäisenä vartijakoirana. Protokollasta on olemassa useita versioita; versiot 1-3 ovat käytössä vain MIT:n sisäisesti.
Steve Miller ja Clifford Neuman, Kerberos-version 4 (joka käytti DES-salausalgoritmia 56-bittisillä avaimilla) pääsuunnittelijat, julkaisivat kyseisen version vuonna 1989, vaikka he olivatkin suunnitelleet sen ensisijaisesti Athena-projektia varten.
John Kohlin ja Clifford Neumanin suunnittelema versio 5 ilmestyi RFC 1510:nä vuonna 1993 (RFC 4120 poisti sen käytöstä vuonna 2005), ja sen tarkoituksena oli poistaa version 4 rajoitukset ja turvallisuusongelmat. MIT tarjoaa Kerberos Version 5:n toteutuksen vapaasti saataville BSD-lisenssin kaltaisella ohjelmistolisenssillä.
Useat yritykset käyttivät Kerberosin versiota 5 kaupallisissa ohjelmistoissa, mukaan lukien:
· Microsoftin Windows 2000 ja uudemmat versiot käyttävät Kerberos-järjestelmää oletustodennusmenetelmänä.
Joitakin Microsoftin lisäyksiä Kerberos-protokollien sarjaan on dokumentoitu asiakirjassa RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols"
.
RFC 4757 dokumentoi Microsoftin RC4-salauksen
käytön.
Vaikka Microsoft käyttää Kerberos-protokollaa, se ei käytä MIT-ohjelmistoa[1].
· Myös Applen Mac OS X käyttää Kerberosia sekä asiakas- että palvelinversiossaan.
· Red Hat Linuxin versio 4 ja uudemmat versiot käyttävät Kerberosia sekä asiakas- että palvelinversioissa.
Vuonna 2005 IETF:n Kerberos-työryhmä esitteli uudet päivitetyt eritelmät Kerberosin versiolle 5 [2]. päivitykset sisältävät seuraavat:
· "Encryption and Checksum Specifications" (RFC 3961),
· "Advanced EncryptionStandard (AES) Encryption for Kerberos 5" (RFC 3962),
· Uusi painos Kerberos Version 5 -määrittelystä "The Kerberos Network Authentication Service (V5)" (RFC 4120). Tämä versio poistaa RFC 1510:n ja selventää protokollan ja käyttötarkoituksen näkökohtia yksityiskohtaisemmalla ja selkeämmällä selityksellä,
· Uusi painos GSS-API-määrittelystä "The Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Mechanism: Versio 2." (RFC 4121).
Vuonna 2007 MIT perusti Kerberos-konsortion jatkamaan kehitystä.
Protokolla
Kerberos käyttää perustana Needham-Schroeder-protokollaa. Se käyttää luotettavaa kolmannen osapuolen todennusta, joka tunnetaan nimellä "key distribution center (KDC)" ja joka koostuu kahdesta loogisesti erillisestä osasta: todennuspalvelimesta (Authentication Server, AS) ja lipunmyyntipalvelimesta (Ticket Granting Server, TGS). Kerberos toimii "lippujen" (ns. Kerberos-lippujen) perusteella, joilla todistetaan käyttäjien henkilöllisyys.
Kerberos-tietokanta: Jokainen verkossa oleva yksikkö - olipa kyseessä asiakas tai palvelin - jakaa salaisen avaimen, jonka tuntee vain se itse ja KDC. Tämän avaimen tunteminen todistaa kunkin yksikön henkilöllisyyden. Kahden yksikön välistä viestintää varten KDC luo istuntoavaimen, jota yksiköt voivat käyttää viestinnän suojaamiseen.
Termi "Kerberos-palvelin" viittaa yleensä KDC:hen. Luotettavuussyistä on mahdollista käyttää varakeskuksia. Näitä kutsutaan "Kerberos-orjapalvelimiksi". Kaikki orjat synkronoivat tietokantansa Kerberos-pääpalvelimelta.
Termi "Kerberisoitu sovelluspalvelin" viittaa yleensä Kerberisoituihin ohjelmiin, joiden kanssa asiakkaat kommunikoivat käyttäen Kerberos-lippuja todennukseen. Esimerkiksi Kerberos-telnet-palvelin on esimerkki Kerberisoidusta sovelluspalvelimesta . Kun taas termiä "Kerberisoidut sovellukset" käytetään viittaamaan Kerberisoidun sovelluspalvelimen asiakaspuoleen , Esimerkiksi Kerberos telnet-asiakasohjelma on esimerkki Kerberisoidusta sovelluksesta.
Protokollan turvallisuus riippuu pitkälti seuraavista tekijöistä:
- Osallistujat säilyttävät löyhästi synkronoidun ajan.
- Lyhytikäinen aitouden osoitus: Kerberos-liput.
Protokollan yksinkertaistettu kuvaus
Käytetään seuraavia lyhenteitä:
· AS = Todennuspalvelin
· TGS = Ticket Granting Server
· SS tai Server = Service Server (palvelimen käyttäjä, joka pyytää palvelua, kuten tulostuspalvelin, tiedostopalvelin jne...).
· TGT = Ticket Granting Ticket (TGS:n Kerberos-lippu, jonka AS laatii ja jota käytetään keskusteluun TGS:n kanssa).
Lyhyesti sanottuna asiakas tunnistautuu liitännäisjärjestelmään käyttämällä pitkäaikaista jaettua salaisuutta ja saa liitännäisjärjestelmältä lipun. Myöhemmin asiakas voi käyttää tätä lippua saadakseen lisää lippuja SS:lle käyttäen samaa jaettua salaisuutta. Näitä lippuja voidaan käyttää todentamisen osoittamiseen SS:lle.
Protokolla yksityiskohtaisemmin
Käyttäjän asiakaspohjaiset kirjautumisvaiheet:
- Käyttäjä syöttää käyttäjätunnuksen ja salasanan asiakaskoneella.
- Asiakas suorittaa syötetylle salasanalle yksisuuntaisen toiminnon (useimmiten Hash-funktion), josta tulee asiakkaan/käyttäjän salainen avain.
Asiakkaan todennuksen vaiheet:
- Asiakas lähettää liitännäisjärjestelmälle selväkielisen viestin, jossa pyydetään palveluja käyttäjän puolesta.
Esimerkkiviesti: "Käyttäjä XYZ haluaa pyytää palveluja".
Huomautus: Salaista avainta tai salasanaa ei lähetetä liitännäisjärjestelmälle. - Liitännäisjärjestelmä tarkistaa, onko asiakas sen tietokannassa. Jos on, liitännäisjärjestelmä lähettää asiakkaalle seuraavat kaksi viestiä:
- Viesti A: Asiakkaan/TGS-istunnon avain salattuna asiakkaan/käyttäjän salaisella avaimella.
- Viesti B: TGT (joka sisältää asiakastunnuksen, asiakkaan verkko-osoitteen, lipun voimassaoloajan ja asiakkaan ja TGS:n istuntoavaimen), joka on salattu TGS:n salaisella avaimella.
- Kun asiakas vastaanottaa viestit A ja B, se purkaa viestin A saadakseen asiakkaan ja TGS:n istuntoavaimen. Tätä istuntoavainta käytetään jatkossa viestintään TGS:n kanssa. Tässä vaiheessa asiakkaalla on riittävästi tietoa todentaakseen itsensä TGS:lle.
Huomautus: Asiakas ei voi purkaa viestiä B, koska se on salattu TGS:n salaisella avaimella.
Asiakaspalvelun valtuutuksen vaiheet:
- Kun asiakas pyytää palveluja, hän lähettää TGS:lle seuraavat kaksi viestiä:
- Sanoma C: Koostuu sanoman B TGT:stä ja pyydetyn palvelun tunnuksesta.
- Viesti D: Todentaja (joka koostuu asiakkaan tunnisteesta ja aikaleimasta), joka on salattu asiakkaan ja TGS:n istuntoavaimella.
- Saatuaan viestit C ja D TGS hakee viestin B viestistä C. Se purkaa viestin B salauksen TGS:n salaisella avaimella. Näin se saa asiakkaan ja TGS:n istuntoavaimen. Tämän avaimen avulla TGS purkaa viestin D (Authenticator) salauksen ja lähettää seuraavat kaksi viestiä asiakkaalle:
- Viesti E: Asiakkaan ja palvelimen välinen lippu (joka sisältää asiakkaan tunnuksen, asiakkaan verkko-osoitteen, voimassaoloajan ja asiakkaan ja palvelimen istuntoavaimen), joka on salattu SS-salaisella avaimella.
- Viesti F: Client/Server Session Key salattuna Client/TGS Session Key -avaimella.
Asiakaspalvelupyynnön vaiheet:
- Kun asiakas vastaanottaa viestit E ja F TGS:ltä, hänellä on riittävästi tietoa todentaakseen itsensä SS:lle. Asiakas muodostaa yhteyden SS:ään ja lähettää seuraavat kaksi viestiä:
- Viesti E: edellisestä vaiheesta (asiakkaan ja palvelimen välinen lippu, joka on salattu SS-salaisella avaimella).
- Viesti G: uusi todentaja, joka sisältää asiakkaan tunnisteen, aikaleiman ja joka on salattu asiakkaan ja palvelimen istuntoavaimella.
- SS purkaa lipun salauksen omalla salaisella avaimellaan saadakseen Client/Server Session Key -avaimen. SS purkaa istuntoavaimen avulla todentajan salauksen ja lähettää asiakkaalle seuraavan viestin vahvistaakseen todellisen henkilöllisyytensä ja halukkuutensa palvella asiakasta:
- Viesti H: asiakkaan tunnistautumislaitteesta löytyvä aikaleima plus 1, salattuna asiakkaan ja palvelimen istuntoavaimella.
- Asiakas purkaa vahvistuksen asiakkaan ja palvelimen istuntoavaimen avulla ja tarkistaa, onko aikaleima päivitetty oikein. Jos näin on, asiakas voi luottaa palvelimeen ja voi aloittaa palvelupyyntöjen lähettämisen palvelimelle.
- Palvelin tarjoaa asiakkaalle pyydetyt palvelut.
Haitat
- Yksi vikapiste: Keskuspalvelimen jatkuva saatavuus. Kun Kerberos-palvelin ei toimi, kukaan ei voi kirjautua sisään. Tämä voidaan ratkaista käyttämällä useita Kerberos-palvelimia ja hätätodennusmekanismeja.
- Kerberos edellyttää, että kaikkien mukana olevien isäntien kellot on synkronoitu. Lipuilla on aikavaraajakausi, ja jos isännän kelloa ei synkronoida Kerberos-palvelimen kellon kanssa, todennus epäonnistuu. Oletuskonfiguraatio edellyttää, että kellonajat ovat enintään 10 minuutin päässä toisistaan. Käytännössä kaikkien isäntien synkronointiin käytetään yleensä NTP:tä (Network Time Protocol).
- Hallintaprotokollaa ei ole standardoitu, ja se vaihtelee palvelintoteutusten välillä. Salasanojen muutokset on kuvattu RFC 3244:ssä.
- Koska kaikkien käyttäjien salaiset avaimet on tallennettu keskuspalvelimelle, palvelimen vaarantaminen vaarantaa kaikkien käyttäjien salaiset avaimet.
- Vaarantunut asiakas vaarantaa käyttäjän salasanan.
Aiheeseen liittyvät sivut
- Identiteetin hallinta
- Turvallinen etäsalasanaprotokolla (SRP)
- Yleinen turvallisuuspalvelujen sovellusohjelmaliittymä (GSS-API)
Kysymyksiä ja vastauksia
Q: Mikä on Kerberos?
V: Kerberos on tietokoneverkon todennusprotokolla, jonka avulla turvattoman verkon kautta kommunikoivat ihmiset voivat todistaa henkilöllisyytensä toisilleen turvallisesti.
K: Kuka suunnitteli Kerberosin?
V: Kerberosin suunnittelijat pyrkivät ensisijaisesti asiakas-palvelin-malliin, ja he olivat Massachusetts Institute of Technologysta (MIT).
K: Miten Kerberos tarjoaa keskinäisen todennuksen?
V: Kryptografisten jaettujen salaisuuksien avulla sekä käyttäjä että palvelin voivat varmistaa toistensa henkilöllisyyden.
K: Miten Kerberos suojaa vakoilulta ja toistohyökkäyksiltä?
V: Käyttäjien välillä lähetettävät viestit salataan, joten kolmannet osapuolet eivät voi lukea tai muokata niitä.
K: Minkälaista salausta Kerberos käyttää?
V: Se käyttää symmetrisen avaimen salausta, joka edellyttää avainten jakelukeskusta.
K: Tukeeko Kerberos julkisen avaimen salausta?
V: Kyllä, protokollan laajennukset voivat mahdollistaa sen käytön tietyissä todennuksen vaiheissa.
Etsiä