A Kerberos /kɛərbərəs/ egy hálózati hitelesítési protokoll , amely mechanizmust kínál a kliens és a szerver kölcsönös hitelesítésére, mielőtt kapcsolatot létesítenek közöttük. A Kerberos megbízható, harmadik féltől származó hitelesítési szolgáltatásként végzi el a hitelesítést egy megosztott kriptográfiai titok használatával, feltéve, hogy a nem biztonságos hálózaton áthaladó csomagokat a támadók elfoghatják, módosíthatják és felhasználhatják. A Kerberos szimmetrikus kulcskriptográfiára épül, és kulcselosztó központot igényel. A Kerberos-bővítmények bizonyos hitelesítési lépésekben nyilvános kulcsú kriptográfia használatát is lehetővé teszik.
A Kerberos protokoll első változatát 1983-ban hozták létre a Massachusetts Institute of Technology -ban (MIT) az Athena projekt részeként.. A projekt fő célja egy terv kidolgozása volt a számítógépek MIT oktatási folyamatban való bevezetésére és a kapcsolódó szoftverekre. A projekt oktatási jellegű volt, de a végeredmény több olyan szoftverterméket is tartalmazott, amelyeket ma is széles körben használnak (például az X Window System ). Ez a protokoll a 4-es verzió óta nyilvánosan elérhető.
Vázoljuk fel a Kerberos protokoll alapkoncepcióját. Tegyük fel, hogy két ember ismeri ugyanazt a titkot, csak ők ketten. Akkor bármelyikük könnyen megbizonyosodhat arról, hogy párjával van dolga. Ehhez csak azt kell ellenőriznie, hogy beszélgetőpartnere ismeri-e a megosztott titkot.
Példa.
1. tétel: Megállapodás a jelszóról. Hadd kommunikáljon Alice Bobbal. Ebben az esetben Bob csak akkor használja fel az információt, ha biztos abban, hogy az információt Alice-től kapta. A hamisítás elkerülése érdekében megegyeztek egymás között egy jelszóban, amelyet csak ők ketten tudnak. Üzenet fogadásakor Bob a levélből arra következtethet, hogy beszélgetőpartnere tudja-e a jelszót. Ha Bob beszélgetőpartnere ismeri a jelszót, akkor vitatható, hogy a beszélgetőpartnere Alice.
2. tétel. Jelszóátviteli probléma fellépése. Most határozzuk meg, hogyan mutassuk meg Alice-nek és Bobnak a jelszó ismeretét. Természetesen a jelszót egyszerűen beleírhatja az e-mail törzsébe. Például: „Szia Bob. A jelszavunk. Ha Bob és Alice biztosak lennének benne, hogy senki sem olvassa el a leveleiket, akkor ezt a módszert lehetne használni. De sajnos a leveleket olyan hálózaton továbbítják, amelyben más felhasználók dolgoznak, köztük van egy kíváncsi Éva. Eve azt a feladatot tűzte ki maga elé, hogy kiderítse a csak Bob és Alice által ismert jelszót, amellyel üzenetet váltanak egymással. Most már teljesen világos, hogy nem adhatja meg a jelszót egyszerűen a levél törzsében. Ez azt jelenti, hogy nem beszélhet nyíltan a jelszóról, ugyanakkor tudatnia kell a beszélgetőpartnerrel, hogy ismeri a jelszót.
3. pont A jelszóátvitel problémájának megoldása. A Kerberos protokoll titkos kulcsú titkosítással oldja meg a jelszóátvitel problémáját. A kommunikációs munkamenet résztvevői ahelyett, hogy jelszót mondanának egymásnak, kriptográfiai kulcsot cserélnek, amelynek ismerete megerősíti a beszélgetőpartner kilétét. De ahhoz, hogy egy ilyen technológia lehetséges legyen, a megosztott kulcsnak szimmetrikusnak kell lennie , vagyis a kulcsnak biztosítania kell az üzenet titkosítását és visszafejtését.
4. pont A jelszócsere problémája. A fent leírthoz hasonló egyszerű protokollok használatakor van egy fontos probléma. Bob és Alice esetében meg kell értened, hogyan állapodnak meg egy titkos kulcsban, hogy megfeleljenek egymásnak. Természetesen az emberek találkozhatnak és megegyezhetnek, de a gépek is részt vesznek a hálózati tárgyalásokon. Ha Alice alatt kliensprogramot értünk, Bob pedig egy hálózati kiszolgálón lévő szolgáltatást, akkor semmilyen módon nem találkozhatnak. A probléma az, hogy amikor egy kliensnek több szerverre kell üzenetet küldenie, ebben az esetben minden szerverhez külön kulcsot kell beszereznie. És akkor a szervernek annyi titkos kulcsra lesz szüksége, ahány kliense van. Az, hogy ilyen sok kulcsot kell tárolni minden számítógépen, kockázatot jelent az egész biztonsági rendszerre nézve.
5. pont A jelszavak cseréjének problémájának megoldása. E problémák megoldására az Athena projekt egy speciális protokollt fejlesztett ki - a Kerberost. Az ókori görög mitológia analógiájára ezt a protokollt a háromfejű kutyáról nevezték el, amely megvédte a Hádész - Cerberus , pontosabban - Cerberus királyságából való kilépést. A Cerberus három feje a protokollban a biztonságos kommunikáció három résztvevőjének felel meg: egy kliensnek, egy szervernek és egy megbízható közvetítőnek közöttük. A közvetítő szerepét itt a Key Distribution Center, a KDC tölti be.
A Key Distribution Center (KDC) egy olyan szolgáltatás, amely fizikailag biztonságos kiszolgálón fut. A Központ adatbázist vezet az összes hálózati kliens fiókjáról. Az egyes előfizetőkre vonatkozó információkkal együtt a kulcselosztó központ adatbázisa tárol egy kriptográfiai kulcsot, amelyet csak ez az előfizető és a központ szolgáltatás ismer. Ez a kulcs a kliens és a központ összekapcsolására szolgál.
Klienstől szerverig KDC-n keresztül
Ha az ügyfél kapcsolatba kíván lépni a szerverrel, üzenetet küld a kulcselosztó központnak. A Központ minden munkamenet-résztvevőnek elküldi a munkamenetkulcs rövid ideig érvényes másolatát. E kulcsok célja a kliens és a szerver hitelesítése. A kiszolgálónak küldött munkamenetkulcs másolatát a kiszolgáló hosszú távú kulcsával, a kliensnek küldött pedig az ügyfél hosszú távú kulcsával titkosítják. Elméletileg a megbízható közvetítő funkcióinak ellátásához elegendő, ha egy kulcselosztó központ közvetlenül küldi el a munkamenet kulcsait a biztonsági előfizetőknek. A gyakorlatban azonban rendkívül nehéz egy ilyen rendszert megvalósítani. Ezért a gyakorlatban más jelszókezelési sémát használnak, ami sokkal hatékonyabbá teszi a Kerberos protokollt.
Menetjegyek
A kiszolgálóhoz csatlakozni kívánó ügyfél kérésére a KDC szolgáltatás a munkamenetkulcs mindkét példányát elküldi az ügyfélnek. Az ügyfélnek szánt üzenet egy, az ügyfél és a KDC között megosztott hosszú távú kulccsal van titkosítva, és a kiszolgáló munkamenetkulcsa az ügyfélre vonatkozó információkkal együtt egy munkamenetjegynek nevezett adatblokkba van beágyazva. A teljes munkamenetjegyet ezután egy hosszú távú kulccsal titkosítják, amelyet csak a KDC szolgáltatás és ez a szerver ismer. Ezt követően a titkosított munkamenet-kulcsot hordozó jegy feldolgozásáért minden felelősség a klienst terheli, akinek el kell juttatnia azt a szerverhez. A KDC válasz vételekor a kliens kibontja belőle a jegyet és a munkamenetkulcs másolatát, amelyet biztonságos tárhelyen helyez el (nem lemezen, hanem RAM -ban van ). Amikor kapcsolatba kell lépnie egy szerverrel, a kliens üzenetet küld neki, amely egy jegyből áll, amely továbbra is a szerver hosszú távú kulcsával van titkosítva, és egy saját hitelesítőjéből, amelyet a munkamenet kulccsal titkosítanak. Ez a hitelesítő adat a hitelesítővel együtt alkotja azt a hitelesítő adatot, amely alapján a szerver meghatározza az ügyfél "azonosságát". A szerver, miután megkapta a kliens "azonosító kártyáját", mindenekelőtt annak titkos kulcsát használva dekódolja a munkamenet jegyet, és kinyeri belőle a munkamenet kulcsát, amivel visszafejti a kliens hitelesítőt. Ha minden jól megy, a rendszer arra a következtetésre jut, hogy az ügyfélazonosítót egy megbízható közvetítő, vagyis a KDC szolgáltatás adta ki. A kliens megkövetelheti a szervertől kölcsönös hitelesítés végrehajtását. Ebben az esetben a szerver a munkamenetkulcs másolatát felhasználva titkosítja a kliens hitelesítőjének időbélyegét, és elküldi azt a kliensnek, mint saját hitelesítőjét. A munkamenet hitelesítő adatok használatának egyik előnye, hogy a kiszolgálónak nem kell munkamenetkulcsokat tárolnia az ügyfelekkel való kommunikációhoz. A kliens "hitelesítési adatok gyorsítótárában" tárolódnak, amely minden alkalommal továbbítja a jegyet a szervernek, amikor kapcsolatba akar lépni vele. A szerver a maga részéről, miután megkapta a jegyet a klienstől, dekódolja azt és kibontja a munkamenet kulcsát. Ha a kulcsra már nincs szükség, a szerver egyszerűen törölheti azt a memóriájából. Ennek a módszernek van egy másik előnye is: a kliensnek nem kell felvennie a kapcsolatot a KDC-vel minden egyes munkamenet előtt egy adott szerverrel. A munkamenet hitelesítő adatai újra felhasználhatók. Ellopásuk esetén a jegy lejárati dátuma kerül beállításra, amit a KDC magában az adatstruktúrában feltüntet. Ezt az időt a tartomány-specifikus Kerberos-házirend határozza meg. A jegyek érvényességi ideje jellemzően nem haladja meg a nyolc órát, vagyis egy munkamenet normál időtartamát a hálózatban. Amikor a felhasználó kijelentkezik, a hitelesítő adatok gyorsítótára alaphelyzetbe áll, és az összes munkamenet hitelesítő adata a munkamenetkulcsokkal együtt megsemmisül.
Az MIT azért fejlesztette ki a Kerberost, hogy biztosítsa az Athena projekt által biztosított hálózati szolgáltatásokat. A jegyzőkönyv nevét a görög mitológiai szereplőről, Kerberoszról (vagy Cerberusról ) kapta, akit a görög mitológia a szörnyű, háromfejű Hádész őrkutyaként ismer. A protokollnak több változata is létezik. A Kerberos korai verzióit (1–3) az MIT belsőleg hozta létre, és tesztelési célokra használták. Ezek a megvalósítások jelentős korlátokat tartalmaztak, és csak új ötletek feltárására és a fejlesztés során felmerülő problémák azonosítására voltak hasznosak.
Steve Miller és Clifford Neuman , a Kerberos 4-es verziójának fő tervezői (amely a DES titkosítási algoritmust használta 56 bites kulcsokkal), 1989-ben adták ki ezt a verziót, bár akkor még elsősorban ezt tervezték.az Athena projektben.
A Kerberos 4 először 1989. január 24- én jelent meg . Ez volt az első, az MIT-n kívül terjesztett verzió, amely arra készült, hogy több gyártó beépítse operációs rendszerébe. Ezenkívül más nagy elosztott rendszerprojektek (például Andrew File System ) a Kerberos 4 ötleteit használták hitelesítési rendszereikhez.
A Kerberos 4-é váló alapjait az Athena whitepaper [1] írta le, a végső verziót pedig az MIT által közzétett referencia-implementáció forráskódja szilárdította meg.
A titkosított szoftverek exportjára vonatkozó amerikai kormányzati korlátozások miatt azonban a Kerberos 4 nem terjeszthető az Egyesült Államokon kívül. Mivel a Kerberos 4 a DES algoritmust használta a titkosításhoz , az Egyesült Államokon kívüli szervezetek nem használhatták legálisan a szoftvert. Válaszul az MIT fejlesztőcsapata elkészítette a Kerberos 4 egy speciális verzióját, amelyből kizárt minden titkosítással kapcsolatos kódot. Ezek az intézkedések lehetővé tették az exportkorlátozás megkerülését.
Később Errol Young , az ausztrál Bond Egyetem munkatársa hozzáadta a DES saját megvalósítását ehhez a kiadáshoz. "E-Bones"-nak (a "titkosított csontoknak" [2] rövidítése ) hívták, és szabadon terjeszthető volt az Egyesült Államokon kívül.
2006-ban bejelentették a Kerberos 4 támogatását [3] .
Az előző verzió biztonsági problémáinak leküzdése érdekében John Kohl és Clifford Neuman kidolgozta a protokoll 5-ös verzióját, amely 1993-ban jelent meg RFC 1510 -ben . Idővel, 2005-ben, az IETF Kerberos munkacsoportja kezdett foglalkozni a specifikációval. Az általuk közzétett dokumentumok a következők:
2006 júniusában mutatták be az RFC 4556 -ot, amely az 5-ös verzió PKINIT nevű kiterjesztését írja le ( nyilvános k ey c kriptográfia a Kerberos kezdeti hitelesítéséhez ). Ez az RFC leírja, hogyan kell az aszimmetrikus titkosítást használni a kliens hitelesítési szakaszban .
A következő évben (2007) az MIT megalakította a Kerberos Konzorciumot a további fejlődés elősegítése érdekében.
A Kerberos implementáció terjesztése a BSD jogokhoz hasonlóan szerzői jogok alatt történik.
Jelenleg sok operációs rendszer támogatja ezt a protokollt, többek között:
A Kerberos 4 nagyrészt a Needham-Schroeder protokollon alapul , de két jelentős változtatással.
Ennek eredményeként a Kerberos 4 protokoll két logikai összetevőt tartalmaz:
Ezeket az összetevőket általában egyetlen programként szállítják, amely egy kulcselosztó központon fut (KDC – a Kerberost használó felhasználók és szolgáltatások bejelentkezési/jelszavainak adatbázisát tartalmazza).
A hitelesítési szerver egy funkciót lát el: fogadja a hitelesítést kérő kliens nevét tartalmazó kérést, és visszaküld neki egy titkosított jegyet a jegy megszerzéséhez (TGT). A felhasználó ezután ezt a jegyet használhatja további jegyek kérésére más szolgáltatásokhoz. A legtöbb Kerberos implementációban a TGT élettartama 8-10 óra. Ezt követően a kliensnek újra le kell kérnie a hitelesítési szervertől.
A kulcselosztó központnak küldött első üzenet egy kérés a hitelesítési kiszolgálóhoz, más néven AS_REQ. Ezt az üzenetet egyértelmű szöveggel küldjük el, és tartalmazza az ügyfél azonosítóját, az ügyfél időbélyegét és a jegykiadó szerver (TGS) azonosítóját.
Amikor a kulcselosztó központ AS_REQ üzenetet kap, ellenőrzi, hogy létezik-e az a kliens, amelytől a kérés érkezett, és az időbélyegzője közel van-e a központ helyi idejéhez (általában ± 5 perc). Ez az ellenőrzés nem a visszajátszások elleni védelemre szolgál (az üzenet szöveges formában kerül elküldésre), hanem az időzítés ellenőrzésére. Ha az ellenőrzések közül legalább az egyik sikertelen, hibaüzenetet küld a kliensnek, és a rendszer nem hitelesíti.
Ha sikeres, a hitelesítési kiszolgáló egy véletlenszerű munkamenet-kulcsot generál, amely meg lesz osztva az ügyfél és a jegy- vagy engedélyezési kiszolgáló között (ez a kulcs védi az egyéb szolgáltatások jövőbeli jegykérelmeit). A Kulcselosztó Központ 2 másolatot készít a munkamenetkulcsról: egyet az ügyfélnek, egyet pedig a jegykiadó szervernek.
A kulcselosztó központ ezután egy hitelesítési szerver üzenettel (AS_REP) válaszol az ügyfélnek, amely az ügyfél hosszú távú kulcsával van titkosítva. Ez az üzenet tartalmazza a TGS-kulccsal titkosított TGT-t, az ügyfél munkamenet-kulcsának másolatát, a jegy élettartamát és a TGS-azonosítót (a TGT tartalmazza: a TGS munkamenet-kulcsának másolatát, az ügyfél-azonosítót, a jegy élettartamát, Key Distribution Center (KDC) időbélyegzője, IP-cím kliens).
Amikor a felhasználó hozzá kíván férni a szolgáltatáshoz, egy üzenetet készít a TGS_REQ számára, amely 3 részből áll: a szolgáltatás azonosítója, a korábban kapott TGT másolata és a hitelesítő (a hitelesítő egy időbélyegből áll, amelyet a szolgáltatótól kapott munkamenet kulccsal titkosítanak. hitelesítési szerver, és az ismétlődések elleni védelemre szolgál).
Amikor egy ügyféltől jegykérést kap, a KDC új munkamenetkulcsot generál az ügyfél/szolgáltatás interakcióhoz. Ezután válaszüzenetet (TGS_REP) küld a hitelesítési szervertől kapott munkamenetkulccsal titkosítva. Ez az üzenet tartalmazza az új munkamenetkulcsot, a hosszú távú szolgáltatási kulccsal titkosított szolgáltatási jegyet, a szolgáltatásazonosítót és a jegy élettartamát (tartalmazza az új munkamenetkulcs másolatát, az ügyfél-azonosítót, a jegy élettartamát, a kulcselosztó központ helyi idejét, az ügyfél IP-címét ).
Az utolsó lépés, a szolgáltatási jegy alkalmazáskiszolgálóra küldése részleteit a Kerberos 4 nem szabványosítja, így megvalósítása teljes mértékben alkalmazásfüggő.
A Kerberos 5 a negyedik verzió fejlesztése, tartalmazza az összes korábbi funkciót, és számos bővítményt tartalmaz. A megvalósítás szempontjából azonban a Kerberos 5 egy teljesen új protokoll.
Az ötödik verzió megjelenésének fő oka a bővítés lehetetlensége volt. Idővel a Kerberos 4-ben használt DES elleni brute-force támadás aktuálissá vált, de az üzenetekben használt mezők fix méretűek voltak, és nem lehetett erősebb titkosítási algoritmust használni.
A probléma megoldására egy olyan bővíthető protokoll létrehozását határozták el, amely ASN.1 technológián alapuló különféle platformokon használható. Ez lehetővé tette a különböző típusú titkosítások használatát a tranzakciókban. Ennek köszönhetően megvalósult a kompatibilitás az előző verzióval. Ezenkívül a KDC-nek lehetősége van kiválasztani a résztvevő felek által támogatott legbiztonságosabb titkosítási protokollt.
Ezenkívül az eredeti Kerberos 4 protokollra szótári felsorolás vonatkozik. Ez a sérülékenység azzal a ténnyel kapcsolatos, hogy a KDC kérésre titkosított TGT-t ad ki bármely ügyfélnek. A probléma fontosságát az is hangsúlyozza, hogy a felhasználók általában egyszerű jelszavakat választanak.
A támadás megnehezítése érdekében a Kerberos 5 bevezette az előzetes hitelesítést. Ebben a szakaszban a KDC megköveteli a felhasználótól, hogy igazolja személyazonosságát, mielőtt jegyet kaphat.
A KDC házirend felelős az előzetes hitelesítésért, ha szükséges, akkor a felhasználó az első kéréskor KRB_ERROR üzenetet kap a hitelesítési szerver felé. Ez az üzenet felszólítja a klienst, hogy küldjön AS_REQ kérést a hitelesítési adataival a hitelesítés érdekében. Ha a KDC nem ismeri fel őket, akkor a felhasználó újabb KRB_ERROR üzenetet kap, amely hibát jelez, és nem ad ki TGT-t.
Formai leírásAlice ( Alice ), a foglalkozás kezdeményezőjének azonosítói | |
Bob ( Bob ) azonosítója, amely oldalról a munkamenet létrejön | |
Trent ( Trent ), egy megbízható közvetítő fél azonosítója | |
Alice, Bob és Trent nyilvános kulcsai | |
Alice, Bob és Trent titkos kulcsai | |
Adatok titkosítása Alice kulcsával vagy Alice és Trent közös kulcsával | |
Adatok titkosítása Bob kulcsával vagy Bob és Trent közös kulcsával | |
Adattitkosítás Alice, Bob titkos kulcsaival (digitális aláírás) | |
Munkamenet sorszáma (az ismétléses támadások elkerülése érdekében) | |
Véletlenszerű munkamenetkulcs a szimmetrikus adattitkosításhoz | |
Adatok titkosítása ideiglenes munkamenet kulccsal | |
Alice és Bob időbélyegeket adott hozzá az üzenetekhez | |
Véletlen számok ( nonce ), amelyeket Alice és Bob választott ki |
A protokoll csak szimmetrikus titkosítást használ, és feltételezi, hogy minden levelező (Alice és Bob) megoszt egy titkos kulcsot egy megbízható harmadik féllel (Trent).
Alice elküldi az igazolványát és Bobot a megbízható félnek (Trent):
Trent két üzenetet generál. Az első tartalmazza az időbélyeget , a kulcs élettartamát , Alice és Bob új munkamenetkulcsát , valamint Bob azonosítóját . Ez az üzenet Alice és Trent megosztott kulcsával titkosítva van. A második üzenet ugyanazt tartalmazza, kivéve az azonosítót - azt Alice azonosítójával helyettesítették . Maga az üzenet Trent és Bob megosztott kulcsával van titkosítva:
Alice létrehoz egy üzenetet a saját azonosítójából és egy időbélyegből , majd titkosítja az üzenetet a munkamenet kulccsal , és elküldi Bobnak a Trent második üzenetével együtt:
A saját hitelesítés érdekében Bob egy megosztott munkamenetkulccsal titkosítja a módosított időbélyeget, és elküldi Alice-nek:
Fontos feltételezés, hogy a protokoll összes résztvevőjének órája szinkronban van. A gyakorlatban azonban a szinkronizálást több perces pontossággal alkalmazzák, az átviteli előzményeket (az ismétlés észlelése érdekében) egy ideig tárolva.
Részletes leírásA Kerberos 5 jelenleg a következőképpen működik:
Bejelentkezés:
Ügyfél hitelesítés:
Ha nem, akkor az ügyfél új üzenetet kap, amely jelzi, hogy hiba történt.
Ügyfél engedélyezése a TGS-ben:
Ügyfél szolgáltatásigénye:
A PKINIT kiterjesztés érintette a kliens előzetes hitelesítési szakaszát, amely után a következőképpen kezdett el jelentkezni:
A további lépések a Kerberos V5 szabványos leírása szerint történnek.
A DES-rejtjel használható Kerberos-szal, de már nem internetes szabvány, mert sebezhető. A sebezhetőség azonban számos Kerberos-t használó termékben található, amelyeket nem frissítettek, hogy a DES-t újabb titkosításokra, például AES-re cseréljék.
2014 novemberében a Microsoft kiadott egy javítást (MS14-068), hogy kijavítsa a KDC-kiszolgáló Windows-megvalósításának biztonsági rését. A sérülékenység a közlemény szerint lehetővé tette a felhasználók számára, hogy jogosultságaikat tartományi szintre "emelhessék".
Hitelesítési és kulcscsere protokollok | |
---|---|
Szimmetrikus algoritmusokkal | |
Szimmetrikus és aszimmetrikus algoritmusokkal | |
Az interneten használt protokollok és szolgáltatások |