Locked History Actions

Kerberos

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.

  • Windows 2000 ir vėlesnėse versijose Kerberos naudojamas kaip pagrindinis autentifikacijos metodas. Kai kurie Microsoft papildiniai Kerberos protokolų rinkiniui yra dokumentuoti RFC3244 „Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols“. RFC 4757 dokumentus Microsoft‘as naudoja RC4 šifrui. Kol Microsoft‘as naudoja Kerberos protokolą, ji nenaudoja MIT programinės įrangos.
  • Apple's Mac OS X tap pat naudoja Kerberos abejose jo klietų ir serverių versijose.
  • Sun's Solaris taip pat naudoja Kerberos abejose jo klietų ir serverių versijose
  • Red Hat Enterprise Linux 4 ir vėlesnės versijose naudojama Kerberos abi kliento ir sererio versijos.

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

  • „Užšifravimas ir kontrolinės sumos specifikaciją „ (RFC 3961),
  • „Pažangų užkodavimo standartą (AES) Užkodavimą Kerberos 5“ (RFC 3962),
  • Naujo Kerberos V5 leidimo specifikaciją"The Kerberos Network Authentication Service (V5)" (RFC 4120). Ši versija RFC 1510 pasenus, paaiškina protokolo aspektus ir numato labiau detalesnį naudojimą ir aiškesnį paaiškinimą.
  • Naujo GSS-API leidimo specifikacijas „The Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2“ (RFC 4121).

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:

  • AS = Authentication Server (autentifikacijos serveris)
  • TGS = Ticket Granting Server (bilieto patvirtinimo serveris)
  • SS = Service Server (paslaugu serveris)
  • TGT = Ticket Granting Ticket (bilietą patvirtinantis bilietas)

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

  • Vienas nesėkmės punktas: tai reikalauja nuolatinio centrinio serverio buvimo. Kai Kerberos serveris neveikia, niekas negali prisijungti. Tai gali būti išvengta taikant keletą Kerberos serverių ir atsarginės autentifikacijos mechanizmus.
  • Kerberos reikia laikrodžio dalyvaujančių mazgų sinchronizacijai. Bilietas turi galiojimo periodą ir jei mazgo laikrodis yra nesinchronizuotas su Kerberos serverio laikrodžiu, autentifikacija gali nepavykti. Numatytoji konfigūracija reikalauja tokių laikrodžių, kurių laikas skiriasi ne daugiau 10 minučių. Praktikoje tinklo laiko protokolo demonai (daemons) yra dažniausiai naudojama išlaikyti mazgo laikrodžio sinchronizaciją.
  • Administracijos protokolas nėra standartizuotas ir skiriasi nuo serverio įgyvendinimo. Slaptažodžio keitimas yra apibūdintas RFC.
  • Kadangi visų vartotojų slapti raktai yra saugomi centriniam serveryje, to serverio pažeidimas sukels pavojų visų vartotojų slaptiesiems raktams.
  • Susikompromitavęs klientas pastatys į pavojų vartotojo slaptažodį.

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/