Kerberos — MIT izstrādāts tīkla autentifikācijas protokols

Uzzini par Kerberos — MIT izstrādātu tīkla autentifikācijas protokolu: kā tas nodrošina drošu klienta‑servera autentifikāciju, simetrisko kriptogrāfiju un atslēgu pārvaldību.

Autors: Leandro Alegsa

Kerberos (izrunā /ˈkɜrbərəs/ "kur-ber-uhs") ir tīkla autentifikācijas protokols, kas ļauj lietotājiem drošā veidā pierādīt savu identitāti, kad tie sazinās pa publisku vai iekšēju datortīkls, — šis protokols, paredzēts klienta‑servera vidēm, nodrošina, ka gan klients, gan pakalpojuma sniedzējs var pārliecināties par otra identitāti. Kerberos ļauj lietotājam autentificēties vienu reizi, pēc tam izmantojot izsniegtas biļetes (tickets) piekļuvei vairākiem pakalpojumiem bez atkārtotas paroles ievades.

Kerberos sākotnēji izstrādāja Masačūsetsas Tehnoloģiju institūts (MIT) projekta Athena ietvaros, un MIT arī izplata oriģinālo Kerberos programmatūras komplektu kā bezmaksas programmatūru — implementāciju, kas īsteno šo protokolu. Dizains galvenokārt orientēts uz klienta-servera arhitektūru: lietotājs autentificējas pie autentifikācijas servera, saņem Ticket‑Granting Ticket (TGT) un pēc tam izmanto to, lai iegūtu piekļuves biļeti konkrētam serverim. Tā rezultātā klients un serveris var pārbaudīt viens otra identitāti, t.i., ir iespējama savstarpēja (mutuālā) autentifikācija.

Darba pamatprincipi

Kerberos darbojas kā autentifikācijas risinājums, kurā liela nozīme ir uzticamai trešajai pusei — Key Distribution Center (KDC). KDC sastāv no divām loģiskām daļām: Authentication Server (AS) un Ticket‑Granting Server (TGS). Klienta un pakalpojuma atslēgas un izsniegtie seansu atslēgas tiek droši pārvaldītas KDC ietvarā; tie tiek piešķirti un piegādāti šifrētos ziņojumos, izmantojot kriptogrāfisku koplietošanas noslēpumu (simetriskās kriptogrāfijas atslēgas), pieņemot, ka paketes, kas ceļo pa nedrošu tīklu, var nolasīt un modificēt.

Standarta Kerberos versija izmanto simetrisko kriptogrāfiju un pieprasa atslēgu sadales centru, bet paplašinājumos ir paredzēta arī publiskā atslēgas kriptogrāfija (piemēram, PKINIT) noteiktos autentifikācijas posmos, lai uzlabotu izplatīšanas un sākotnējās autentifikācijas drošību. Kerberos protokols nodrošina aizsardzību pret noklausīšanos, modificēšanu un atkārtošanas (replay) uzbrukumiem, galvenokārt izmantojot seansu atslēgas, derīguma termiņus un laika zīmogus, tāpēc uzticama sistēmas pulksteņa sinhronizācija ir svarīga.

Raksturīgas iezīmes un darbības elementi

  • Biļetes (tickets) un Ticket‑Granting Ticket (TGT) — izmanto, lai apliecinātu autentifikāciju un pieprasītu resursu piekļuvi bez paroles atkārtotas nosūtīšanas.
  • Seansu atslēgas — īslaicīgas atslēgas, kas tiek izmantotas šifrētai saziņai starp klientu un pakalpojumu.
  • Pulksteņu sinhronizācija — Kerberos izmanto laika zīmogus, tāpēc pulksteņiem jābūt sinhronizētiem (parasti dažu minūšu robežās).
  • Pre‑authentifikācija — mehānisms, kas samazina paroles laušanas risku, pieprasot sākotnēju pierādījumu no klienta.
  • Biļešu derīguma termiņi, pagarināšana (renewal), pārsūtāmība (forwardable) un daļēji ierobežotas delegācijas — elastīgi piekļuves kontroles mehānismi.

Standarti, implementācijas un lietojumi

Mūsdienu Kerberos versija V5 ir definēta ar RFC 4120 un to plaši izmanto gan UNIX/Linux sistēmās (piem., MIT Kerberos, Heimdal), gan arī Microsoft Windows Active Directory vidē, kur Kerberos ir primārais domēna autentifikācijas mehānisms. Kerberos atbalsta autentifikācijas integrāciju ar dažādiem pakalpojumiem, tostarp tīmekļa, failu serveriem, e‑pasta un citiem tīkla resursiem.

Drošības apsvērumi

Lai gan Kerberos nodrošina spēcīgu aizsardzību pret daudziem uzbrukumu veidiem, ir jāņem vērā:

  • Vājās paroles un slikta kontu pārvaldība — ja uzbrucējs iegūst lietotāja paroli, var mēģināt iegūt biļetes.
  • KDC kompromitācija — ja KDC atslēgas vai serveris tiek uzlauzts, visas domēna autentifikācijas var būt apdraudētas.
  • Pulkača (clock) nesinhronizācija — var izraisīt autentifikācijas kļūmes.
  • Replays un brūnināšanas uzbrukumi — jāizmanto preautentifikācija un pietiekami īsi biļešu termiņi.

Kerberos ir plaši izmantots, jo nodrošina ērtu "single sign‑on" pieredzi un izturamu drošības modeli lielām tīkla vidēm. Tomēr drošai darbībai nepieciešama pareiza konfigurācija, atbilstoša atslēgu pārvaldība un sistēmu uzraudzība.

Vēsture un attīstība

MIT izstrādāja Kerberos, lai aizsargātu projekta Athena tīkla pakalpojumus. Protokols tika nosaukts grieķu mitoloģiskā tēla Kerbera (jeb Cerbera) vārdā, kas grieķu mitoloģijā bija pazīstams kā briesmīgs trīsgalvains Hades sargsunis. Pastāv vairākas protokola versijas; 1.-3. versiju izmanto tikai MIT iekšienē.

Stīvs Millers un Klifords Neimans, Kerberos 4. versijas (kurā tika izmantots DES šifrēšanas algoritms ar 56 bitu atslēgām) galvenie izstrādātāji, publicēja šo versiju 1989. gadā, lai gan viņi to bija izstrādājuši galvenokārt projektam Athena.

Džona Kola (John Kohl) un Kliforda Neimana (Clifford Neuman) izstrādātā 5. versija tika publicēta 1993. gadā kā RFC 1510 (2005. gadā to padarīja novecojušu ar RFC 4120), lai pārvarētu 4. versijas ierobežojumus un drošības problēmas. MIT nodrošina, ka Kerberos 5. versijas implementācija ir brīvi pieejama ar programmatūras licenci, kas ir līdzīga BSD licencei.

Vairāki uzņēmumi izmantoja Kerberos 5. versiju komerciālajā programmatūrā, tostarp:

·         Microsoft Windows 2000 un jaunākajās versijās kā noklusējuma autentifikācijas metode tiek izmantota Kerberos.
Daži
Microsoft papildinājumi Kerberos protokolu komplektam ir dokumentēti dokumentā RFC 3244 "Microsoft Windows 2000 Kerberos paroles maiņas un paroles iestatīšanas protokoli".
RFC 4757 dokumentē, kā Microsoft izmanto
RC4 šifru.
Lai gan Microsoft izmanto Kerberos protokolu, tas neizmanto MIT programmatūru[1].

·         Arī Apple Mac OS X izmanto Kerberos gan klienta, gan servera versijā.

·         Red Hat Linux 4. un jaunākā versija izmanto Kerberos gan klienta, gan servera versijā.

2005. gadā IETF Kerberos darba grupa ieviesa jaunu, atjauninātu Kerberos 5. versijas specifikāciju [2]:

·         "Šifrēšanas un kontrolsummu specifikācijas" (RFC 3961),

·         "Advanced EncryptionStandard (AES) Encryption for Kerberos 5" (RFC 3962),

·         Kerberos 5. versijas specifikācijas "The Kerberos Network Authentication Service (V5)" (RFC 4120) jauns izdevums. Šajā versijā ir anulēts RFC 1510, precizēti protokola aspekti un paredzētais lietojums, sniedzot detalizētāku skaidru skaidrojumu,

·         GSS-API specifikācijas jaunais izdevums "Kerberos 5. versijas vispārējo drošības pakalpojumu lietojumprogrammu saskarnes (GSS-API) mehānisms: Versija 2." (RFC 4121).

2007. gadā MIT izveidoja Kerberos konsorciju, lai turpinātu izstrādi.

Protokols

Kerberos pamatā ir Needhama un Schrēdera protokols. Tas izmanto uzticamas trešās puses autentifikāciju, kas pazīstama kā "atslēgu sadales centrs (KDC)", kas sastāv no divām loģiski atsevišķām daļām: autentifikācijas servera (AS) un biļešu piešķiršanas servera (TGS). Kerberos darbojas, pamatojoties uz "biļetēm" (ko sauc par Kerberos biļetēm), kas kalpo lietotāju identitātes pierādīšanai.

Kerberos datubāze: Katra vienība tīklā - klients vai serveris - dalās ar slepeno atslēgu, kas zināma tikai tai un KDC. Zinot šo atslēgu, tiek pierādīta katras vienības identitāte. Saziņai starp divām vienībām KDC ģenerē sesijas atslēgu, ko tās var izmantot saziņas drošībai.

Termins "Kerberos serveris" parasti attiecas uz KDC. Uzticamības nolūkos ir iespējams izveidot KDC dublējumu. Tos dēvē par "Kerberos pakārtotajiem serveriem". Visi pakārtotie serveri sinhronizē savas datubāzes no galvenā Kerberos servera.

Termins "Kerberizēts lietojumprogrammu serveris" parasti attiecas uz Kerberizētām programmām, ar kurām klienti sazinās, autentifikācijai izmantojot Kerberos biļetes. Piemēram, Kerberos telnet serveris ir Kerberizēta lietojumprogrammu servera piemērs. Savukārt termins "Kerberizētās lietojumprogrammas" tiek lietots, lai apzīmētu Kerberizēto lietojumprogrammu servera klienta pusi , piemēram, Kerberos telnet klients ir Kerberizēto lietojumprogrammu piemērs.

Protokola drošība lielā mērā ir atkarīga no:

  1. Dalībnieki, kas uztur brīvi sinhronizētu laiku.
  2. Īstermiņa autentiskuma deklarācija: Kerberos biļetes.

Vienkāršots protokola apraksts

Tiks lietoti šādi saīsinājumi:

·         AS = autentifikācijas serveris

·         TGS = biļešu piešķiršanas serveris

·         SS vai Serveris = Pakalpojumu serveris (servera lietotājs, kas pieprasa tā pakalpojumu, piemēram, drukas serveri, failu serveri utt...).

·         TGT = biļetes piešķiršanas biļete (Kerberos biļete TGS. Sagatavo papildsistēma, pēc tam to izmanto sarunai ar TGS).

Īsumā klients autentificējas AS, izmantojot ilgtermiņa koplietošanas noslēpumu, un no AS saņem biļeti. Vēlāk klients var izmantot šo biļeti, lai saņemtu papildu biļetes SS, izmantojot to pašu koplietošanas noslēpumu. Šīs biļetes var izmantot, lai apliecinātu autentifikāciju SS.

Sīkāka informācija par protokolu

Lietotāja uz klientu balstīti pieteikšanās soļi:

  1. Lietotājs klienta datorā ievada lietotājvārdu un paroli.
  2. Klients veic vienvirziena funkciju (galvenokārt Hash funkciju) ievadītajai parolei, un tā kļūst par klienta/lietotāja slepeno atslēgu.

Klienta autentifikācijas soļi:

  1. Klients nosūta atklātā teksta ziņojumu papildsistēmai, pieprasot pakalpojumus lietotāja vārdā.
    Ziņojuma paraugs: "Lietotājs XYZ vēlas pieprasīt pakalpojumus".
    Piezīme: ne slepenā atslēga, ne parole netiek nosūtīta papildsistēmai.
  2. Papildsistēma pārbauda, vai klients ir tās datubāzē. Ja tas ir, papildsistēma klientam nosūta divus šādus ziņojumus:
    • A ziņojums: klienta/TGS sesijas atslēga, kas šifrēta, izmantojot klienta/lietotāja slepeno atslēgu.
    • B ziņojums: TGT (kas ietver klienta ID, klienta tīkla adresi, biļetes derīguma termiņu un klienta/TGS sesijas atslēgu), kas šifrēts, izmantojot TGS slepeno atslēgu.
  3. Kad klients saņem ziņojumus A un B, tas atšifrē ziņojumu A, lai iegūtu klienta/TGS sesijas atslēgu. Šo sesijas atslēgu izmanto turpmākai saziņai ar TGS. Šajā brīdī klientam ir pietiekami daudz informācijas, lai autentificētu sevi TGS.
    Piezīme: Klients nevar atšifrēt ziņojumu B, jo tas ir šifrēts, izmantojot TGS slepeno atslēgu.

Klientu apkalpošanas autorizācijas soļi:

  1. Pieprasot pakalpojumus, klients TGS nosūta šādus divus ziņojumus:
    • C ziņojums: sastāv no B ziņojuma TGT un pieprasītā pakalpojuma ID.
    • D ziņojums: Autentifikators (ko veido klienta ID un laika zīmogs), šifrēts, izmantojot klienta/TGS sesijas atslēgu.
  2. Saņemot ziņojumus C un D, TGS no ziņojuma C iegūst ziņojumu B. Tā atšifrē ziņojumu B, izmantojot TGS slepeno atslēgu. Tādējādi tiek iegūta klienta/TGS sesijas atslēga. Izmantojot šo atslēgu, TGS atšifrē ziņojumu D (Autentifikators) un nosūta klientam šādus divus ziņojumus:
    • E ziņojums: klienta-servera biļete (kas ietver klienta ID, klienta tīkla adresi, derīguma termiņu un klienta/servera sesijas atslēgu), kas šifrēta, izmantojot SS slepeno atslēgu.
    • F ziņojums: klienta/servera sesijas atslēga, kas šifrēta ar klienta/TGS sesijas atslēgu.

Klientu apkalpošanas pieprasījuma soļi:

  1. Saņemot ziņojumus E un F no TGS, klientam ir pietiekami daudz informācijas, lai autentificētos SS. Klients izveido savienojumu ar SS un nosūta šādus divus ziņojumus:
    • Ziņojums E: no iepriekšējā soļa (klienta-servera biļete, kas šifrēta, izmantojot SS slepeno atslēgu).
    • Ziņojums G: jauns autentifikators, kas ietver klienta ID, laika zīmogu un ir šifrēts, izmantojot klienta/servera sesijas atslēgu.
  2. SS atšifrē biļeti, izmantojot savu slepeno atslēgu, lai iegūtu klienta/servera sesijas atslēgu. Izmantojot sesijas atslēgu, SS atšifrē autentifikatoru un nosūta klientam šādu ziņojumu, lai apstiprinātu savu patieso identitāti un gatavību apkalpot klientu:
    • Ziņojums H: klienta autentifikatorā atrodamais laika zīmogs plus 1, šifrēts, izmantojot klienta/servera sesijas atslēgu.
  3. Klients atšifrē apstiprinājumu, izmantojot klienta/servera sesijas atslēgu, un pārbauda, vai laika zīmogs ir pareizi atjaunināts. Ja tā, tad klients var uzticēties serverim un var sākt izdot serverim pakalpojumu pieprasījumus.
  4. Serveris klientam nodrošina pieprasītos pakalpojumus.

Trūkumi

  • Vienots kļūmes punkts: Tas prasa nepārtrauktu centrālā servera pieejamību. Ja Kerberos serveris nedarbojas, neviens nevar pieteikties. Šo problēmu var atrisināt, izmantojot vairākus Kerberos serverus un ārkārtas autentifikācijas mehānismus.
  • Kerberos sistēmai ir jāsinhronizē visu iesaistīto mitekļu pulksteņi. Biļetēm ir noteikts laika pieejamības periods, un, ja saimnieka pulkstenis nav sinhronizēts ar Kerberos servera pulksteni, autentifikācija neizdosies. Noklusējuma konfigurācijā ir noteikts, ka pulksteņa laiki nedrīkst atšķirties vairāk par 10 minūtēm. Praksē parasti izmanto tīkla laika protokolu (NTP), lai sinhronizētu visus hostus.
  • Administrēšanas protokols nav standartizēts, un serveru implementācijas atšķiras. Paroļu izmaiņas ir aprakstītas RFC 3244.
  • Tā kā visu lietotāju slepenās atslēgas tiek glabātas centrālajā serverī, šā servera kompromitēšana apdraud visu lietotāju slepenās atslēgas.
  • Kompromitēts klients apdraud lietotāja paroli.

Saistītās lapas

  • Identitātes pārvaldība
  • Drošs attālās paroles protokols (SRP)
  • Vispārīgo drošības pakalpojumu lietojumprogrammu saskarne (GSS-API)

Jautājumi un atbildes

J: Kas ir Kerberos?


A: Kerberos ir datortīkla autentifikācijas protokols, kas ļauj cilvēkiem, kuri sazinās nedrošā tīklā, droši pierādīt viens otram savu identitāti.

J: Kas izstrādāja Kerberos?


A: Kerberos izstrādātāji galvenokārt strādāja pie klienta-servera modeļa, un viņi bija no Masačūsetsas Tehnoloģiju institūta (MIT).

J: Kā Kerberos nodrošina savstarpēju autentifikāciju?


A: Kriptogrāfiski koplietojamie noslēpumi ļauj gan lietotājam, gan serverim pārbaudīt vienam otra identitāti.

J: Kā Kerberos aizsargā pret spiegošanu un atkārtošanas uzbrukumiem?


A: Lietotāju savstarpēji nosūtītie ziņojumi tiek šifrēti, lai trešās personas tos nevarētu izlasīt vai mainīt.

J: Kāda veida šifrēšanu izmanto Kerberos?


A: Tajā tiek izmantota simetriskās atslēgas šifrēšana, kam nepieciešams atslēgas sadales centrs.

J: Vai Kerberos atbalsta publiskās atslēgas šifrēšanu?


A: Jā, protokola paplašinājumi var atļaut to izmantot noteiktos autentifikācijas posmos.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3