Kerberos


Apibrėžimas

Kerberos yra kompiuterių tinklų autentifikacijos protokolas, kuris leidžia individualias komunikacijas per neapsaugotą tinklą įrodant tapatumą vienas kitam, nesumažinant saugumo lygio. Tai yra taip pat rinkinys nemokamų programų išleistų Massachusetts Institute of Technology (MIT), kurios realizuoja (implements) šį protokolą.


Paaiškinimai

Kerberos yra kompiuterių tinklų autentifikacijos protokolas, kuris leidžia individualias komunikacijas per neapsaugotą tinklą įrodant tapatumą vienas kitam, nesumažinant saugumo lygio. Tai yra taip pat rinkinys nemokamų programų išleistų Massachusetts Institute of Technology (MIT), kurios realizuoja (implements) šį protokolą. Jo projektuotojai pirmiausiai nusitaikė į kliento-serverio modelį ir tai suteikia abipuse autentifikacija- abu vartotojai ir serveris patikrina vieni kitų tapatumą. Kerberos protokolo žinutės yra apsaugotos nuo slapto klausymosi ir pakartotinų atakų. Kerberos remiasi simetrine rakto kriptografija (Naudoja tą patį raktą užkoduoti ir iškoduoti žinutę) ir reikalauja patikimos trečiosios šalies (trusted third party). Kerberos išplėtimai gali suteikti galimybę naudoti viešą- rakto kriptografiją per tam tikrą autentifikacijos fazę. Istorija ir išsivystymas MIT sukūrė Kerberos apsaugoti tinklo Project Athena tiekiamas paslaugas. Protokolas buvo pavadintas pagal graikų mitologijos personažą Kerberos (arba Cerberus), žinomą Graikų mitologijoje kaip Hado baisų trigalvį sarginį šunį. Egzistuoja keletas protokolo versijų (1-3 versijos įvykdytos tik MIT viduje) Steve Miller ir Clifford Neuman, pagrindiniai Kerberos 4 versijos projektuotojai, išleido šią versija vėlai 1980, nors ši versija pirmiausia buvo skirta Project Athena. 5 versija, sukurta John Kohl ir Clifford Neuman, išėjo kaip RFC 1510 1993 metais, su ketinimais įveikti 4 versijos apribojimus ir saugumo problemas. MIT padare Kerberos laivai pasiekiamą, su autorystės teisėmis panašiomis į tas, kurios buvo naudojamos BSD. 2007 metais, MIT suformuotas Kerberos konsorciumas kartu su keletu pagrindinių Kerberos pardavėjų ir vartotojų, tokių kaip Sun Microsystems, Apple, Google, Microsoft, Centrify Corporation ir t. t., kurie tęsė tolesnį vystymą Valdžios organai Jungtinėse Valstijose klasifikavo Kerberos kaip ginkluotę ir uždraudė jos eksportą, nes buvo naudojamas DES užšifravimo algoritmas (su 56 bitų raktu). Kerberos 4 įgyvendintas ne Amerikoje, KTH-KRB išleista Royal Institute of Technology Švedijoje, kuri padarė sistemą prieinamą už JAV anksčiau, nei JAV pakeitė savo kriptografijos eksporto reguliavimą (circa 2000). Švediška versija buvo pagrystas, kita versija pavadinta eBones. eBones buvo labiausiai eksportuojamas MIT Bones leidimas, pagrystas 4 Kerberos versijos 9 lygio pataisymu. Šis Kerberos buvo pavadintas eBones leidimu. 5 Kerberos versijos leidimas, Heimdal, buvo išleistas pagrinde tos pačios grupės žmonių , kuri išleido ir KTH-KRB.

2005 metais, IETF Kerberos darbo grupė atnaujina specifikaciją. Atnaujinimas apima:

Aprašymas

Kerberos naudoja kaip pagrindą Needham-Schroeder protokolą.Šis protokolas naudoja patikimą trečiąją šalį (trusted third party), vadinamą key distribution center (KDC), kuris susideda iš dviejų logiškai atskirų dalių: Autentifikacijos serverio (AS) ir Ticket Granting Server (TGS). Kerberos dirba „bilietų“ pagrindu, kurie padeda teisingai identifikuoti vartotoją. KDC palaiko slaptų raktų duomenų bazę; kiekviena esybė tinkle- ar klientas ar serveris- turi slaptą raktą, žinoma tik jam ir KDC. Šio rakto žinojimas tarnauja teisingam esybės identifikavimui. Komunikacijai tarp dviejų esybių. KDC generuoja sesijos raktą, kurį jie naudoja apsaugoti jų sąveikai.

Protokolas

Protokolo saugumas stipriai priklauso nuo dalyvaujančių laisvo sinchronizacijos laiko ir trumpalaikių autentifikacijos patvirtinimų vadinamų Kerberos bilietais. Toliau bus pateikiama supaprastintas protokolo aprašymas. Toliau naudojamos santrumpos:

Trumpai, klientas autentifikuojasi AS naudodamas ilgalaikią pasidalintą paslaptį (shared secret) ir gauna bilietą iš AS. Vėliau klientas gali naudoti šį bilietą gauti papildomiems bilietams iš SS be pakartotinio naudojimosi pasidalinta paslaptimi (shared secret). Šie bilietai gali būti naudojami autentifikacijos patvirtinimui SS (paslaugų serveryje). Detaliau: Vartotojo kliento- pagrindiniai prisijungimo žingsniai:

  1. Vartotojas įveda vartotojo vardą ir slaptažodį į vartotojo mašiną;
  2. Klientas įvykdo vieno kelio funkciją (hach dažniausiai) įvesto slaptažodžio ir tai tampa slaptu kliento/vartotojo raktu.

Kliento autentifikacijos žingsniai:

  1. Klientas siunčia atviro teksto žinutę į AS, prašydamas paslaugų vartotojo vardu. Tipinė žinutė: „Vartotojas XYZ norėtų paprašyti paslaugų“. Pažymėtina: nei slapto rakto nei slaptažodžio į AS nenusiunčiama.
  2. AS tikrina, kad pamatytų, ar klientas yra duomenų bazėje. Jei jis yra, AS siunčia atgal sekančias dvi žinutes klientui:
    • Žinutė A: Client/TGS Session Key užkoduotas naudojant slaptą kliento/vartotojo raktą.

    • Žinutė B: Ticket-Granting Ticket (kuris apima kliento ID, kliento adresą, bilieto galiojimo periodą ir client/TGS session key ) užkoduotą naudojant slaptą TGS raktą.

  3. Kai tik klientas gauna A ir B žinutes, tai iššifruoja A žinutę, kad gautų Client/TGS Session Key. Šis sesijos raktas yra naudojamas tolimesnei komunikacijai su TGS. (Pastaba: klientas negali iškoduoti B žinutės, kai ji yra užkoduota naudojant slaptą TGS raktą). Šiu metu klientas turi pakankamai informacijos autentifikuoti save TGS‘e.

Kliento paslaugos leidimo žingsniai:

  1. Prašydamas paslaugos, klientas siunčia sekančias dvi žinutes į TGS:
    • Žinutė C: Susideda iš Ticket-Granting Ticket iš B žinutės ir prašytos paslaugos ID;

    • Žinutė D: Autentifikatoriaus (kuris yra sudarytas iš kliento ID ir laiko žymės), užkoduoto naudojat Client/TGS Session Key.

  2. Iš gaunamų C ir D žinučių TGS atkuria iš žinutės C žinutę B. Tai iškoduoja žinutę B naudojant TGS slaptą raktą. Tai duoda tai „client/TGS session key“. Naudodamas šį raktą, TGS dešifruoja D žinutę (autentifikatorių) ir siunčia dvi sekančias žinutes klientui:

    • Žinutė E: Client-to-server ticket (kuris apima kliento ID, kliento tinklo adresą, galiojimo periodą ir Client/Server Session Key) užkoduotą naudojant paslaugos slaptą raktą.

    • Žinutė F: Client/server session key užkodotą su Client/TGS Session Key.

Kliento paslaugos prašymo žingsniai:

  1. Gavęs E ir F žinutes iš TGS, klientas turi pakankamai informacijos autentifikuoti save SS‘e. Klientas jungiasi į SS ir siunčia sekančias dvi žinutes:
    • Žinutė E iš prieš tai buvusio žingsnio ( client-to-server ticket , užkoduotas naudojant paslaugos slaptą raktą).

    • Žinutė G: naujas autentifikatorius, kuris apima kliento ID, laiko žymę ir yra užkoduota pasinaudojant client/server session key.

  2. SS iškoduoja bilietą naudodamas jo savą slaptą raktą, kad atkurtų Client/Server Session Key. Naudodamas sesijos raktą SS iškoduoja autentifikatorių ir siunčia sekančią žinutę klientui, kad patvirtintų teisingą identifikaciją ir pasiruošimą aptarnauti klientą:

    • Žinutė H: laiko žimė randamo kliento autentifikatoriuje, užkoduota naudojant Client/Server Session Key.

  3. Klientas iškoduoja patvirtinimą naudodamas Client/Server Session Key ir tikrina ar laiko žymė yra teisingai atnaujinta. Jei taip, tai klientas gali tikėti serveriu ir gali pradėti leisti paslaugų prašymus į serverį.

  4. Serveris suteikia prašytas paslaugas

Trūkumai

kerberos.JPG
1 pav. Kerberos veikimo iliustracija


Naudota literatūra

  1. http://en.wikipedia.org/wiki/Kerberos_(protocol)

  2. http://www.zeroshell.net/eng/kerberos/Kerberos-operation/