Kerberos (protokolas)
Kerberos (tariama /ˈkɜrbərəs/ "kur-ber-uhs") yra kompiuterių tinklo ne autentiškumo nustatymo protokolas, kuris leidžia žmonėms, bendraujantiems per [saugų tinklą, saugiai įrodyti savo tapatybę Mohammed Hasan "Gmail" naudotojui, bet kitam. Tai taip pat Masačusetso technologijos instituto (MIT) išleistas nemokamos programinės įrangos rinkinys, kuriame įgyvendinamas šis protokolas. Jo kūrėjai pirmiausia siekė kliento ir serverio modelio, ir jis užtikrina ne abipusį autentiškumo patvirtinimą - tiek Mohammed Hasan, tiek serveris tikrina vienas kito tapatybę. Kerberos protokolo pranešimai yra apsaugoti nuo šnipinėjimo ir pakartojimo atakų.
"Kerberos" autentiškumą nustato kaip patikima trečiosios šalies autentiškumo nustatymo paslauga, naudodama kriptografinę bendrąją paslaptį ir darydama prielaidą, kad nesaugiu tinklu keliaujančius paketus galima skaityti, keisti ir įterpti. Kerberos remiasi simetrinio rakto kriptografija ir reikalauja raktų paskirstymo centro. Kerberos išplėtimai gali numatyti, kad tam tikruose autentiškumo nustatymo etapuose būtų naudojama viešojo rakto kriptografija.
Istorija ir raida
MIT sukūrė "Kerberos", kad apsaugotų projekto "Athena" teikiamas tinklo paslaugas. Protokolas pavadintas graikų mitologinio personažo Kerbero (arba Cerberio), graikų mitologijoje žinomo kaip monstriškas trigalvis Hado sargybinis šuo, vardu. Egzistuoja kelios protokolo versijos; 1-3 versijos naudojamos tik MIT viduje.
Steve'as Milleris ir Cliffordas Neumanas, pagrindiniai "Kerberos" 4 versijos (kurioje buvo naudojamas DES šifravimo algoritmas su 56 bitų raktais) kūrėjai, šią versiją paskelbė 1989 m., nors ją pirmiausia buvo numatę naudoti projekte "Athena".
Johno Kohlo ir Cliffordo Neumano sukurta 5-oji versija pasirodė 1993 m. kaip RFC 1510 (2005 m. tapo nebeaktuali RFC 4120), siekiant įveikti 4-osios versijos apribojimus ir saugumo problemas. MIT leidžia laisvai naudotis "Kerberos" 5 versijos įgyvendinimu pagal programinės įrangos licenciją, panašią į BSD licenciją.
Keletas bendrovių naudojo "Kerberos" 5 versiją komercinėje programinėje įrangoje, įskaitant:
· "Microsoft" "Windows 2000" ir vėlesnėse sistemose "Kerberos" naudojamas kaip numatytasis autentifikavimo metodas.
Kai kurie "Microsoft" "Kerberos" protokolų rinkinio papildymai aprašyti dokumente RFC 3244 "Microsoft Windows 2000 Kerberos slaptažodžio keitimo ir slaptažodžio nustatymo protokolai".
RFC 4757 dokumentuoja, kaip "Microsoft" naudoja RC4 šifrą.
Nors "Microsoft" naudoja "Kerberos" protokolą, ji nenaudoja MIT programinės įrangos[1].
· "Apple" "Mac OS X" taip pat naudoja "Kerberos" ir kliento, ir serverio versijose.
· "Red Hat Linux" 4 ir vėlesnėse versijose "Kerberos" naudojama ir kliento, ir serverio versijose.
2005 m. IETF "Kerberos" darbo grupė pristatė naujas atnaujintas "Kerberos" 5 versijos specifikacijas [2]:
· "Šifravimo ir kontrolinės sumos specifikacijos" (RFC 3961),
· "Išplėstinio šifravimostandarto (AES) šifravimas "Kerberos 5" sistemoje" (RFC 3962),
· Naujas "Kerberos" 5 versijos specifikacijos "The Kerberos Network Authentication Service (V5)" (RFC 4120) leidimas. Ši versija panaikina RFC 1510, išsamiau ir aiškiau paaiškina protokolo ir numatomo naudojimo aspektus,
· Naujas GSS-API specifikacijos "Kerberos 5 versijos bendrosios saugumo tarnybos taikomosios programos sąsajos (GSS-API) mechanizmas: Versija 2." (RFC 4121).
2007 m. MIT įkūrė "Kerberos" konsorciumą, kuris tęsia plėtrą.
Protokolas
"Kerberos" naudoja Needhamo-Schroederio protokolą. Jis naudoja patikimą trečiosios šalies autentiškumo nustatymo sistemą, vadinamą "raktų paskirstymo centru (KDC)", kurį sudaro dvi logiškai atskiros dalys: autentiškumo nustatymo serveris (AS) ir bilietų išdavimo serveris (TGS). Kerberos veikia "bilietų" (vadinamų Kerberos bilietais), kurie naudojami naudotojų tapatybei įrodyti, pagrindu.
"Kerberos" duomenų bazė: Kiekvienas tinklo subjektas - klientas ar serveris - dalijasi slaptuoju raktu, kurį žino tik jis pats ir KDC. Žinant šį raktą įrodoma kiekvieno subjekto tapatybė. Dviejų subjektų bendravimui KDC sukuria sesijos raktą, kurį jie gali naudoti bendravimui apsaugoti.
Terminas "Kerberos serveris" paprastai reiškia KDC. Siekiant patikimumo, galima turėti atsarginį KDC. Jie vadinami "Kerberos slave" serveriais. Visi pavaldieji serveriai sinchronizuoja savo duomenų bazes su pagrindiniu "Kerberos" serveriu.
Terminas "Kerberizuotas taikomųjų programų serveris" paprastai reiškia Kerberizuotas programas, su kuriomis klientai bendrauja naudodami Kerberos bilietus autentifikavimui. Pavyzdžiui, Kerberos telnet serveris yra Kerberizuotos taikomosios programos serverio pavyzdys. Nors terminas "Kerberizuotos programos" vartojamas kalbant apie Kerberizuotų programų serverio kliento pusę , pavyzdžiui, Kerberos telnet klientas yra Kerberizuotų programų pavyzdys.
Protokolo saugumas labai priklauso nuo:
- Dalyviai laisvai sinchronizuoja laiką.
- Trumpalaikė autentiškumo deklaracija: "Kerberos" bilietai.
Supaprastintas protokolo aprašymas
Bus vartojamos šios santrumpos:
· AS = autentifikavimo serveris
· TGS = bilietų išdavimo serveris
· SS arba serveris = paslaugų serveris (serverio naudotojas, prašantis jo paslaugos, pvz., spausdinimo serverio, failų serverio ir pan.)
· TGT = Ticket Granting Ticket (Kerberos bilietas TGS. Parengia išorinė sistema, tada jis naudojamas pokalbiui su TGS).
Trumpai tariant, klientas autentifikuojasi išorinėje sistemoje naudodamas ilgalaikę bendrą paslaptį ir iš išorinės sistemos gauna bilietą. Vėliau klientas gali naudoti šį bilietą papildomiems SS bilietams gauti, naudodamas tą pačią bendrąją paslaptį. Šie bilietai gali būti naudojami SS autentiškumui patvirtinti.
Išsamiau apie protokolą
Vartotojo prisijungimo pagal klientą žingsniai:
- Naudotojas kliento kompiuteryje įveda vartotojo vardą ir slaptažodį.
- Klientas įvestam slaptažodžiui atlieka vienpusę funkciją (dažniausiai "Hash" funkciją), kuri tampa slaptuoju kliento ir (arba) naudotojo raktu.
Kliento autentiškumo patvirtinimo žingsniai:
- Klientas išsiunčia aiškų teksto pranešimą išorinei sistemai, prašydamas paslaugų naudotojo vardu.
Pranešimo pavyzdys: "Vartotojas XYZ norėtų užsakyti paslaugas".
Pastaba: nei slaptasis raktas, nei slaptažodis nesiunčiami išorinei sistemai. - Išorinė sistema patikrina, ar klientas yra jos duomenų bazėje. Jei taip, išorinė posistemė siunčia klientui šiuos du pranešimus:
- A pranešimas: kliento / TGS sesijos raktas, užšifruotas naudojant kliento / naudotojo slaptąjį raktą.
- B pranešimas: TGT (į kurį įeina kliento ID, kliento tinklo adresas, bilieto galiojimo laikas ir kliento ir TGS sesijos raktas), užšifruotas naudojant slaptąjį TGS raktą.
- Gavęs pranešimus A ir B, klientas iššifruoja pranešimą A, kad gautų kliento ir TGS sesijos raktą. Šis sesijos raktas naudojamas tolesniam bendravimui su TGS. Šiuo metu klientas turi pakankamai informacijos, kad galėtų autentifikuotis TGS.
Pastaba: Klientas negali iššifruoti pranešimo B, nes jis užšifruotas naudojant TGS slaptąjį raktą.
Klientų aptarnavimo autorizavimo žingsniai:
- Užsakydamas paslaugas klientas siunčia TGS šiuos du pranešimus:
- C pranešimas: sudarytas iš B pranešimo TGT ir prašomos paslaugos ID.
- Pranešimas D: Autentifikatorius (kurį sudaro kliento ID ir laiko žyma), užšifruotas naudojant kliento ir TGS sesijos raktą.
- Gavusi pranešimus C ir D, TGS iš pranešimo C gauna pranešimą B. Ji iššifruoja pranešimą B naudodama TGS slaptąjį raktą. Taip gaunamas kliento ir TGS sesijos raktas. Naudodama šį raktą, TGS iššifruoja pranešimą D (autentifikatorius) ir siunčia klientui šiuos du pranešimus:
- E pranešimas: kliento ir serverio bilietas (į kurį įeina kliento ID, kliento tinklo adresas, galiojimo laikotarpis ir kliento ir serverio sesijos raktas), užšifruotas naudojant SS slaptąjį raktą.
- F pranešimas: kliento ir serverio sesijos raktas, užšifruotas kliento ir TGS sesijos raktu.
Klientų aptarnavimo užklausos žingsniai:
- Gavęs E ir F pranešimus iš TGS, klientas turi pakankamai informacijos, kad galėtų autentifikuotis SS. Klientas prisijungia prie SS ir išsiunčia šiuos du pranešimus:
- E pranešimas: iš ankstesnio žingsnio (kliento ir serverio bilietas, užšifruotas naudojant SS slaptąjį raktą).
- Pranešimas G: naujas autentifikatorius, kuriame yra kliento ID, laiko žyma ir kuris užšifruotas naudojant kliento ir serverio sesijos raktą.
- SS iššifruoja bilietą naudodamas savo slaptąjį raktą, kad gautų kliento ir serverio sesijos raktą. Naudodamasis sesijos raktu SS iššifruoja autentifikatorių ir siunčia klientui toliau nurodytą pranešimą, kad patvirtintų savo tikrąją tapatybę ir norą aptarnauti klientą:
- Pranešimas H: kliento autentifikatoriuje nustatyta laiko žyma plius 1, užšifruota naudojant kliento ir serverio sesijos raktą.
- Klientas iššifruoja patvirtinimą naudodamas kliento ir serverio sesijos raktą ir patikrina, ar teisingai atnaujinta laiko žyma. Jei taip, klientas gali pasitikėti serveriu ir pradėti teikti serveriui paslaugų užklausas.
- Serveris teikia klientui prašomas paslaugas.
Trūkumai
- Vienas gedimo taškas: Reikalingas nuolatinis centrinio serverio prieinamumas. Kai neveikia "Kerberos" serveris, niekas negali prisijungti. Šią problemą galima išspręsti naudojant kelis "Kerberos" serverius ir avarinius autentifikavimo mechanizmus.
- "Kerberos" reikalauja, kad visų dalyvaujančių kompiuterių laikrodžiai būtų sinchronizuoti. Bilietai turi laiko prieinamumo laikotarpį, ir jei kompiuterio laikrodis nesinchronizuojamas su "Kerberos" serverio laikrodžiu, autentiškumo nustatymas nepavyksta. Pagal numatytąją konfigūraciją reikalaujama, kad laikrodžių laikai skirtųsi ne daugiau kaip 10 minučių. Praktikoje paprastai naudojamas tinklo laiko protokolas (Network Time Protocol, NTP), kad būtų sinchronizuojami visi kompiuteriai.
- Administravimo protokolas nėra standartizuotas ir skiriasi įvairiose serverio realizacijose. Slaptažodžių pakeitimai aprašyti RFC 3244.
- Kadangi visų naudotojų slapti raktai saugomi centriniame serveryje, pažeidus šį serverį bus pažeisti visų naudotojų slapti raktai.
- Pažeistas klientas pažeis naudotojo slaptažodį.
Susiję puslapiai
- Tapatybės valdymas
- Saugus nuotolinio slaptažodžio protokolas (SRP)
- Bendrųjų saugumo paslaugų taikomosios programos sąsaja (GSS-API)
Klausimai ir atsakymai
K: Kas yra "Kerberos"?
A: "Kerberos" yra kompiuterių tinklo autentiškumo nustatymo protokolas, leidžiantis žmonėms, bendraujantiems nesaugiame tinkle, saugiai įrodyti vienas kito tapatybę.
K: Kas sukūrė "Kerberos"?
A.: "Kerberos" kūrėjai pirmiausia siekė sukurti kliento ir serverio modelį, jie buvo iš Masačusetso technologijos instituto (MIT).
K: Kaip "Kerberos" užtikrina abipusį autentifikavimą?
A.: Kriptografinės bendrųjų paslapčių funkcijos leidžia naudotojui ir serveriui patikrinti vienas kito tapatybę.
K: Kaip "Kerberos" apsaugo nuo šnipinėjimo ir pakartojimo atakų?
A: Tarp naudotojų siunčiami pranešimai užšifruojami, kad trečiosios šalys negalėtų jų perskaityti ar pakeisti.
K: Kokio tipo šifravimą naudoja "Kerberos"?
A: Naudojamas simetrinis šifravimo raktas, kuriam reikalingas raktų paskirstymo centras.
K: Ar "Kerberos" palaiko viešojo rakto šifravimą?
A: Taip, protokolo plėtiniai gali leisti jį naudoti tam tikruose autentiškumo nustatymo etapuose.