Specializovan² t²denφk o v²poΦetnφ technice |
|
Serißl o bezpeΦnosti a informaΦnφm soukromφ |
|
╚ßst 41 - CW 7/98
KERBEROSJaroslav DoΦkal
Kerberos je prost°edek pro zajiÜt∞nφ autentizace p°φstupu k aplikacφm v sφtφch otev°en²ch systΘm∙; nßzev byl p°evzat z antickΘ mytologie, ve kterΘ trojhlav² pes Kerberos hlφdal vchod do podsv∞tφ. ProΦ se stal Kerberos ve sv∞t∞ bezpeΦnostnφch technologiφ tak znßm²m? Dv∞ mouchy jednou ranou Kerberos byl vytvo°en jako p°φsp∞vek MIT (Massachusetts Institute of Technology) v rßmci sv∞toznßmΘho projektu Athena, na kterΘm prßce probφhaly v letech 1983 a₧ 1991. Plnφ dva zßkladnφ cφle -- zajiÜ¥uje autentizaci klient∙ v sφti a zßrove≥ slou₧φ pro distribuci klφΦ∙. Pou₧ita je zde "pull" varianta centrßlnφ distribuce klφΦ∙ -- viz obr. 1, kde centrum distribuce klφΦ∙ je oznaΦeno jako KDC (Key Distribution Center). Metody typy "pull" jsou p°itom vhodn∞jÜφ pro sφt∞ LAN, zatφmco metody typu "push" pro prost°edφ sφtφ WAN. Kerberos vychßzφ z Needham-Schroederova modelu autentizace a distribuce klφΦ∙. TradiΦnφ modely autentizace s KDC vÜak majφ jeden praktick² problΘm: Klient∙v klφΦ pro komunikaci s KDC b²vß p°i Φast²ch po₧adavcφch na slu₧by keÜovßn v pam∞ti poΦφtaΦe a m∙₧e se tak stßt p°edm∞tem ·toku. V p°φpad∞ ·sp∞chu mß ·toΦnφk mo₧nost vyu₧φvat p°φstupu ke slu₧bßm do dalÜφ aktualizace klφΦ∙. Pokud nap°. aktualizace klφΦ∙ probφhß 1x za rok a u₧ivatel ₧ßdß o slu₧bu v pr∙m∞ru 10x za den, je klφΦ pou₧it zhruba 3650x za rok a jeho vyzrazenφ m∙₧e mφt celoroΦnφ nßsledky. Proto je u Kerbera v rßmci KDC odd∞lena autentizace od poskytovßnφ slu₧eb. Autentizaci zde zajiÜ¥uje autentizaΦnφ server (dßle AS), poskytovßnφ slu₧eb tzv. Ticket Granting Server (dßle TGS). U₧ivatel A na zßklad∞ svΘho otev°enΘho po₧adavku obdr₧φ od autentizaΦnφho serveru klφΦ KA,TGS pro komunikaci s TGS zaÜifrovan² klφΦem KA,AS pro vzßjemnou komunikaci A s AS a dßle lφstek (Ticket) s oprßvn∞nφm k tΘto komunikaci. Pokud nap°. bude u₧ivatel operovat s heslem 1x za m∞sφc, nenφ ho problΘm uchrßnit a navφc vyzrazenφ obdr₧enΘho klφΦe KA,TGS nem∙₧e mφt delÜφ nßsledky ne₧ po jeden m∞sφc. Kerberos se umφ vypo°ßdat i s ·toky p°ehrßvßnφm. Pou₧φvß k tomu metodu Φasov²ch razφtek; razφtko z doby i je znaΦeno jako Ti, kde i=1,2,3,...). PoΦφtß se s tφm, ₧e jeden AS mß na starost vφce TGS. TakovΘto administrativnφ domΘny s prßv∞ jednφm AS a obvykle vφce TGS se zde naz²vajφ °φÜe (realms). Ka₧d² u₧ivatel Kerbera (spoleΦnost, organizace) si vytvß°φ svou "°φÜi". AS a TGS b²vajφ umφst∞ny na jedinΘm serveru a tvo°φ KDC; mohou na n∞m b²t dokonce spoleΦn∞ s aplikacemi, ale to z bezpeΦnostnφch d∙vod∙ nenφ vhodnΘ. Ka₧d² u₧ivatel, klientsk² i serverov² program (v terminologii Kerbera principßl) si musφ dlouhodob∞ vΘst svΘ heslo, s jeho₧ pomocφ Φte zprßvu od KDC. Naopak v KDC je databßze klφΦ∙ o polo₧kßch: ╖ jmΘno principßla, ╖ kryptografick² klφΦ, ╖ verze klφΦe (kdyby byl souΦasn∞ ulo₧en star² a nov² klφΦ), ╖ expiraΦnφ doba klφΦe, ╖ datum poslednφ modifikace, ╖ principßl, kter² naposledy modifikoval zßznam, ╖ maximßlnφ doba ₧ivota klφΦe (dßle L).
Jak to funguje? Cφlem ka₧dΘho klienta (dßle A) je zφskat ╖ klφΦ pro relaci se serverem B - budeme ho oznaΦovat jako KA,B, ╖ oprßvn∞nφ ke spuÜt∞nφ aplikace na serveru B, lφstek - TicketA,B = {KA,B,A,T4,L}. TGS poskytujφ klient∙m lφstky s povolenφm pou₧φvat sφ¥ovou slu₧bu resp. aplikaci pouze po p°edlo₧enφ lφstku s potvrzenφm o jejich autentizaci - TicketA,TGS = {KA,TGS,A,TGS,T2,WA,L} kde WA je adresa pracovnφ stanice, kterou pou₧φvß klient A. Sledujme na obr. 2 a 3 postup autentizace klienta A u AS a vy₧ßdßnφ si u TGS slu₧by na serveru B. Klient A v 1. kroku ₧ßdß AS o svou autentizaci, kterß mu umo₧nφ komunikaci s konkrΘtnφm TGS. AS si ov∞°φ, zda mß o n∞m ve svΘ databßzi zßznam a pokud ano, poÜle mu lφstek oprav≥ujφcφ obracet se na TGS - 2. krok. Zßrove≥ mu poÜle heslo pro styk s TGS, ale zaÜifrovanΘ tajn²m klφΦem klienta A. Pokud by se cht∞l n∞jak² jin² klient p°edstavovat jako A, nevyluÜtil by odpov∞∩, proto₧e neznß p°φsluÜn² klφΦ KA,AS. Ve 3. kroku klient A posφlß sv∙j po₧adavek na server TGS, tj. uvede ·daje o svΘm po₧adavku (kdo je, z kterΘ pracovnφ stanice se obracφ) a tyto ·daje posφlß zaÜifrovanΘ klφΦem pro tajnou komunikaci s TGS, kter² obdr₧el od AS (tato Φßst zprßvy se oznaΦuje jako autentikßtor). Dßle uvede p°edm∞t svΘho zßjmu - server B (p°φpadn∞ specifikuje po₧adovanou slu₧bu) a nakonec p°edß lφstek o svΘ verifikaci, a to ani₧ by ho mohl p°eΦφst Φi p°epsat (klφΦ pro komunikaci mezi AS a TGS neznß). Ve 4. kroku TGS p°edß klientovi A klφΦ relace zaÜifrovan² klφΦem pro vzßjemnou komunikaci; klient A dosßhl svΘho prvnφho cφle. TGS mu zßrove≥ p°edß lφstek s oprßvn∞nφm na vyu₧itφ slu₧eb serveru B, zaÜifrovan² klφΦem pro vzßjemn² styk mezi TGS a aplikaΦnφm serverem. Klient A s lφstkem nem∙₧e d∞lat nic jinΘho, ne₧ ho v 5. kroku p°edat serveru B s tφm, ₧e mu k n∞mu op∞t p°ilo₧φ sv∙j autentikßtor. Server B v rßmci lφstku obdr₧φ klφΦ relace. ┌daj o klientovi A zφskßvß dvakrßt; m∙₧e porovnat, zda ₧adatel je tent²₧, pro kterΘho byl lφstek vystaven. Poslednφ, 6. krok je voliteln² a slou₧φ k prokßzßnφ identity serveru v∙Φi klientovi. U rozsßhl²ch sφtφ m∙₧e dochßzet k neefektivnφm p°enos∙m p°i komunikaci s KDC. Proto byla pro tyto sφt∞ navr₧ena koncepce master a slave KDC; master KDC vedou autoritativnφ kopie databßzφ principißl∙ a tyto jsou pak poskytovßny slave KDC. Je-li KDC vφce, mohou b²t uspo°ßdßny vφce·rov≥ov∞ v rßmci stromovΘ struktury. Nasazenφ Kerbera mß smysl pokud se vhodn∞ upravφ vÜechny aplikace danΘ sφt∞. Tento proces dostal nßzev kerberizace a je zalo₧en na pou₧itφ jednoduch²ch autentizaΦnφch funkcφ na stran∞ klienta i serveru.
Nic nenφ dokonalΘ Prvnφ t°i verze Kerbera nebyly pou₧ity mimo MIT a upadly v zapomenutφ. Verze 4 se naproti tomu pom∞rn∞ rozÜφ°ila. Jejφ v²voj byl ukonΦen v roce 1992 a v roce 1993 byla jako standard pro Internet specifikovßna verze 5 (viz RFC 1510). Verze 4 a 5 si nynφ na trhu konkurujφ; verze 4 je jednoduÜÜφ a v²konn∞jÜφ, verze 5 mß vyÜÜφ funkcionalitu. Verze 4 mß nßsledujφcφ omezenφ: ╖ ProtokolovΘ prost°edφ tvo°φ sada TCP/IP. ╖ Pro Üifrovßnφ je pou₧it DES. ╖ Nenφ mo₧nß autentizace typu u₧ivatel - u₧ivatel, tak pot°ebnß pro systΘmy s X Window. ╖ Lφstky jsou nep°enositelnΘ ze systΘmu na systΘm. ╖ Lφstek se vztahuje k sφ¥ovΘ adrese, co₧ p∙sobφ problΘmy u poΦφtaΦ∙ s vφce sφ¥ov²mi rozhranφmi. ╖ Maximßlnφ doba platnosti lφstku je dßna poΦtem p∞timinutov²ch interval∙, kterΘ lze zaznamenat v jednΘ slabice (21,25 hodin). ╖ V rßmci p∞timinutov²ch interval∙ nenφ zajiÜt∞na ochrana proti p°ehrßvßnφ. ╖ Neexistuje ochrana proti ·tok∙m na systΘmovΘ hodiny. ╖ Na TGS m∙₧e libovoln² klient klßst po₧adavky a tak si vytvß°et slovnφky typu dotaz - odpov∞∩ a zφskßvat materißl pro pozd∞jÜφ kryptoanal²zu. ╖ Proto₧e je Kerberos zalo₧en na autentizaci vychßzejφcφ ze znalosti tajemstvφ, bude tu v₧dy jistß teoretickß mo₧nost ·tok∙ typu TrojskΘho kon∞. ╖ Heslo relace se b∞hem nφ vφcenßsobn∞ opakuje, co₧ m∙₧e b²t p°edm∞tem ·tok∙. Tato omezenφ odstranila verze 5: ╖ ProtokolovΘ prost°edφ nenφ omezeno pouze na protokol IP, lze pou₧φt libovoln² sφ¥ov² protokol. ╖ M∙₧e b²t pou₧ita libovolnß symetrickß Üifra. To je dßno dopln∞nφm jßdra Kerbera do GSS-API. ╖ Je mo₧nΘ zvolit digitßlnφ podepisovßnφ zprßv. ╖ K≤dovßnφ zprßv je standardnφ, tj. v souladu se zßkladnφmi pravidly abstraktnφ symbolickΘ notace ASN.1. ╖ Mφsto s dobou platnosti lφstku se zde pracuje s dobami zahßjenφ a ukonΦenφ slu₧by. To umo₧≥uje vy₧ßdat si slu₧bu na pozd∞jÜφ dobu. ╖ P°ijatΘ zprßvy jsou v p∞timinutov²ch intervalech ulo₧eny v cache pam∞tech a tφm je zajiÜt∞na ochrana proti ·tok∙m p°ehrßvßnφm. ╖ Je zde mo₧nost autentizace typu u₧ivatel - u₧ivatel. ╖ Je mo₧nß autentizace mezi °φÜemi (p°φliÜ se ale nepou₧φvß). Verze 5 p°inesla i zcela novΘ protokolovΘ vlastnosti: ╖ Lφstky jsou obnovitelnΘ (lze jednou prodlou₧it dobu jejich platnosti). ╖ Lφstky jsou p°enositelnΘ; je-li t°eba (nap°. v p°φpad∞ v²padku serveru), TGS p°enese lφstek na jin² server. ╖ Je zde p°φpustnß delegace p°φstupov²ch prßv - aplikaΦnφ server p°enese lφstek na jin² server (nap°. pro pot°ebu tisku po provedenΘm v²poΦtu). ╖ Byly dopln∞ny mechanismy pro autorizaci a ·Φetnictvφ. ╖ Byla dopln∞na mo₧nost autentizace na principu vlastnictvφ tajemstvφ. ╖ Je dopln∞na mo₧nost nßhodnΘho generovßnφ klφΦ∙ v rßmci jednΘ relace. Zdßlo by se, ₧e nenφ o Φem p°em²Ület a na verzi 4 je t°eba zapomenout. Je ovÜem otßzkou, zda jsou v₧dy siln∞jÜφ mo₧nosti verze 5 nezbytnΘ a zda prßce s nφ nebude p°φliÜ nßroΦnß. Verze 4 zahrnuje cca 60 000 instrukcφ jazyka C, verze 5 je t°ikrßt obsßhlejÜφ.
Po Φem sßhnout? Kerberos se v praxi p°eci jen Üφ°eji prosadil, a to na rozdφl od konkurenΦnφch produkt∙ (NetSP, SPX, TESS, SESAME atd.). Je to p°edevÜφm pro jeho vyzrßlost. ProblΘmem pro vÜechny bezpeΦnostnφ produkty p°ichßzejφcφ z USA z∙stßvajφ exportnφ omezenφ kryptografick²ch technologiφ. V naÜich podmφnkßch lze dnes postupovat trojφm zp∙sobem: Obrßtit se na n∞kterou z mßla firem, kterΘ tuto technologii poskytujφ a nechat tento problΘm na nφ. Nap°. firma Hewlett-Packard i u nßs nabφzφ DCE pro poΦφtaΦe °ady 9000 vybavenΘ Kerberem verze 5. Anebo si kryptografickΘ funkce doplnit do systΘmu Bones, co₧ je freewarovß verze 4 Kerbera, kterß neobsahuje kryptografickΘ funkce (stßhnout si ji lze z ftp serveru ftp.finet.fi). Poslednφ mo₧nostφ je vÜe si naprogramovat s vyu₧itφm GSS-API. Je paradoxem, ₧e nejv∞tÜφ nad∞jφ pro budoucnost Kerbera jsou prßv∞ Windows NT 5.0, kterß poΦφtajφ s Kerberem verze 5. Skeptici dnes °φkajφ "Ale co z toho Kerbera zbyde ?" a je na Microsoftu, aby je p°esv∞dΦil.
| COMPUTERWORLD - serißl o bezpeΦnosti | COMPUTERWORLD | IDG CZ homepage | |