Root > Documents > Web Güvenlik Açıkları > Kerberos Security protocol
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > Kerberos Security protocol
Madde
  Yazar : Anon
  Date : 23.11.2004 16:16:30
 
# Kerberos Security protocol
 
Kerberos, bundan yaklasik 10 yil kadar önce, MIT’de çalisan bir grup mühendis tarafindan üzerinde çalistiklari Athena projesi sirasinda gelistirildi. Protokolün kabul gören ve kullanilan ilk sürümü versiyon 4 olarak kendini göstermis. IT sektöründe bazi sistem üreticileri tarafindan kabul gören protokol daha sonra yazarlari tarafindan daha da gelistirilip versiyon 5’e yükseltilmis. Daha sonra bu versiyon IETF tarafindan bilgisayar aglarinin kaynaklarini kullanmak için aga baglanmak sirasinda maksimum güvenlik saglamak amaciyla kullanilabilir seklinde standardize edildi. (RFC 1510 ). 

     Kerberos, iki istemci arasinda paylastirilan gizli anahtarlari kullanma esasina göre hazirlanmis bir protokol. Dayandigi temel esasen çok basit: Eger gizli bir anahtar sadece iki insan tarafindan bilinirse, bu durumda iki insan da karsisindakinin kim oldugu konusunda söyledigi bilgilere, bu anahtari kullanarak inanabilir. (Askerlikte nöbetlerde kullanilan parola gibi). 

     Örnek olarak Mehmet yüzbasinin Ahmet yüzbasiya bir mesaj göndermesi gerektigini düsünelim. Bu mesajin Ahmet tarafindan Mehmet’ten geldigine inanilmasi lazim ki, gereken tedbirler alinabilsin, isler yapilabilsin. Bu durumda iki mehmetçik arkadasimiz, aralarinda bastan bir anlasma yaparak bir parola seçerler ve bu parolayi da baska kimseye söylemezler. Eger Mehmet’in Ahmet’e gönderdigi mesaj bir sekilde parola bilgisini içinde tasiyorsa, Ahmet mesaji aldiginda gerçekten de Mehmet’ten geldigini anlayabilir. 

     Bu islem sirasinda aklimiza hemen Ahmet’e mesaji gönderen Mehmet’in parolayi da bildigini ona nasil gösterecegi sorusu takiliyor. Basit olarak Mehmet mesajin içine bu parolayi da ilave edebilirdi. (Belki de mesajin sonuna bir imza atar, altina da gizli anahtarimiz budur notunu düser). Bu yöntem tabii ki bilgisayar aglarinda giden gelen mesajlarin baskalari tarafinda okunamadigi durumlarda geçerli olabilir. Günümüzde ise maalesef durum böyle degil. Tüm bu mesajlar, üçüncü bir kisi, Önder yüzbasinin da bilgisayarinin bagli bulundugu bir bilgisayar agi üzerinde gidip geliyor. Önder Bey’in ise bilgisayarinda bir ag dinleme yazilimi varsa, ve bu arkadasimiz da bos zamanlarinda bilgisayar agindaki paketleri yakalayip “Içlerinde acaba neler var ?” diye incelemeler yaparak vakit geçiriyorsa isler hiç de bu kadar kolay degil. 

     Kerberos protokolü, bahsettigimiz bu problemi, gizli anahtarlarin kriptolanmasi (sifrelenmesi) teknigi ile çözüyor. Gizli bir sifreyi paylasmak yerine, iki yüzbasi kriptolanmis bir anahtari paylasiyorlar ve bu anahtar sayesinde birbirlerine güveniyorlar. Bu teknigin çalismasi için, paylasilan bu anahtarin simetrik olmasi gerekir. Yani tek bir anahtar hem mesajlari kriptolayabilmeli, hem de açabilmeli. Ahmet yüzbasi mesaji açabilirse, gönderenin de bunu kriptolayabildigine inanmis olur. 

     Bu sekilde gizli kriptolanmis anahtarlari kullanan bir protokolün prensipleri, bir kisinin kapiniza kadar gelip onu çalmasi ile baslar. Ziyaretçinin içeriye girebilmesi için, gelen, ayni zamanda kendisinin de kimligini bir sekilde kapidaki nöbetçiye bildirmek zorundadir. Bunu yaparken kullandigi teknik ise her defasinda farkli olmali ve baskalari tarafinda da kullanilamamalidir. Yoksa, duvarin diger tarafindan konusmalari dinleyen istenmeyen kulaklar, daha sonra ayni teknigi kullanarak nöbetçiyi de kandirabilirler. Ali Baba ve Kirk Haramiler hikaseyinde “Açil Susam Açil” sifresi aynen böyle ögreniliyor degil mi?

Gelin biraz da bu isin detaylarina bakalim: 

1.       Mehmet, Ahmet’e text olarak ismini ve bu ikilinin anlastigi gizli anahtarlari ile kriptolanmis olarak da kimligini içeren mesajini gönderir. Mesajda kullanilan kimlik bilgisinin içinde iki tane alan vardir. Birinci alanda, Mehmet ile ilgili bilgiler bölümü -belki de Mehmet’in soyismi- tutulur, ikinci alanda ise, Mehmet’in saatinin mesaji gönderdigi anda kaç oldugu bilgisi yer alir.

2.       Ahmet yüzbasi, Mehmet oldugunu iddia eden birisinden gelen mesaji alir ve Mehmet ile bastan anlastiklari anahtari kullanarak sifreyi çözer. Mesajin içinden Mehmet’in saatini inceler, ve bunu kendisininki ile karsilastirir. Eger Mehmet’in saati, Ahmet’in saatinden bes dakika geri ya da ileri ise, Ahmet mesaji kesin olarak reddeder.  

Eger Mehmet ile Ahmet’in saatleri bastan birbirleriyle uyumlu olsa, sistem sorunsuz çalisacak gibi görünüyor. Simdilik bilgisayar agimizdaki bilgisayarlarin sistem saatlerinin otomatik olarak senkronize edildigini düsünelim. (Windows 2000’de “time server” servisi var). 

Eger, mesajlarin saatleri birbirlerini tutuyorsa, mesajin gerçekten de Mehmet’ten gelme ihtimali olabilir. Ancak, yine de Ahmet yüzbasi mesajin kesinlikle Mehmet’ten geldigine emin olamaz. Yine de bilgisayar agini sabahtan beri dinleyen birisi, sabah yakaladigi mesajlari ögleden sonra tekrar birilerine göndermek gibi islerle ugrasiyorlarsa, sistem saatlerinin kayit edilmesi teknigi bu gibi atak risklerini ortadan kaldirir.

3.       Ahmet yüzbasi, Mehmet ile bastan anlastigi anahtari kullanarak, çözdügü mesajdan Mehmet’in sistem saatini anlar ve bunu tekrar Mehmet’e geri gönderir. Sadece Mehmet yüzbasinin sistem saati bilgisinin geri gönderilmesi, mesajin içinden Mehmet’in kimlik bilgisinin tamamini kopyalayip birilerine gönderen casuslara karsi iyi bir koruma saglar. Casuslarin tabii ki, anahtarlari olmadigindan mesajlari çözebilmek yerine sadece kopyalabilirler. Sistem saati bilgisini geri gönderme sebebi ise, her mesaj için farkli olmasi garanti olan, tekil bir bilgiye iyi bir örnek olmasidir. 

Tartistigimiz bu teknikle ilgili önemli bir sey akliniza takildi mi? Hala, bu yüzbasi arkadaslarimizin bu islerde kullanilan kod çözücü anahtarlari nasil elde ettiklerini belirtmedik. “Sadece herkesin bir anahtari vardir” kabülünü yaptik. Eger bu sistem günlük hayatta kullanilsa idi, yüzbasilar gizli bir yerde konusarak bu anahtar enformasyonunu degis tokus edebilirlerdi, ancak bizim bilgisayar aglarinda konusan PC’ler devri daha baslamadi bildiginiz gibi. 

Kerberos protokolü, bu sorunu, bize anahtar dagitim merkezini (Key Distribution Center - KDC) tanistirarak çözüyor. Kerberos (Cerberus), eski Yunan mitolojisinde Alt Dünya’nin kapilarinda bekleyen ve geçislere izin veren üç basli bir köpek. Bekçi Kerberos köpegi gibi, güvenlik protokolümüzün de üç tane kafasi var: Bir tane istemci, bir tane sunucu, ve Anahtar Dagitim Merkezi. Iste bu islemlerde arada bulunan güvenilir yere KDC diyoruz.

  

 

Güvenlik protokolümüzün tanimina göre KDC, fiziksel olarak güvenli oldugu kabul edilen bir sunucuda çalisir. Kendi REALM’indaki (Windows 2000’deki domain’in Kerberos karsiligi) tüm PRINCIPAL’lara (Windows 2000 domain’deki kullanicilarin Kerberos karsiligi) ait kullanici bilgilerini bir veritabaninda tutar. Ayrica, kullanicilara ait kimlik bilgileri ile beraber, sadece kullanicinin kendisi ve KDC tarafindan bilinen özel bir anahtari da tutar. Bu anahtar, kullanici ile, KDC arasinda daha sonra yapilacak olan mesaj transferlerinin güvenli bir sekilde kriptolanmasi için kullanilir. Çogu Kerberos implementasyonunda, bu özel anahtar, kullanicinin sifresinden türetilir. 

     Istemci, bir sunucu ile konusmak istediginde, KDC’ye bir istek iletir ve bu ikilinin konusmalari sirasinda kullanacaklari oturum anahtarlari (session key) üretilir. Istemcinin bu istegine karsi getirilen iki oturum anahtari da KDC tarafindan istemciye gönderilir söyle ki: Istemcinin oturum anahtari istemcinin KDC ile paylastigi özel anahtar ile kriptolanir, sunucuya ait oturum anahtari ise istemciye giden bilgi paketinin içine, istemciye ait bilgiler ile birlikte yerlestirilir. Ilgili sunucunun KDC ile paylastigi özel anahtar ile kriptolanan ve içinde istemciyi tanitan bilgiler de olan sunucuya ait bilgiler, en son olarak bir de istemcinin KDC ile paylastigi özel anahtar ile kriptolanip istemciye KDC tarafindan gönderilir. 

     Istemci, KDC’den cevabi aldiginda, kendi anahtari ile verileri okur ve sifresi çözülmüs bu bilgileri hafizasina yazar. (Güvenlik açisindan Kerberos’un Windows 2000’deki uygulamasinda disk bu verileri saklamak için kullanilmiyor). Sunucuya baglanmak istediginde ise, sunucuya, içinde sunucunun KDC ile paylastigi anahtari ile kriptolanmis oturum anahtarinin da bulundugu istegini gönderir. (Istemciye sunucuya gönderilmek üzere KDC tarafindan olusturulmus özel bölümü, sunucuya ait anahtari bilmedigi için çözemez, böylece sunucuya ait, içinde bu oturuma ait sunucu oturum anahtarlarinin oldugu bilgiler de, istemci tarafinda sunucuya gönderilmesine ragmen güvence altina alinmis olur.)  

     Sunucu, istemciden gelen bu istegi aldiginda, kendi özel anahtari ile kimlik bilgilerinin bulundugu bölümü çözer. Istemci, bu haberlesme için karsilikli kimlik ispatlanmasini da sunucudan istemisse, sunucu, istemcinin gönderdigi mesajin içinden, bu mesajin olustugu zamanki sistem saatini de çözüp kriptolayarak istemciye gönderebilir. Eger her sey yolunda giderse, sunucu, istemcinin güvenilen bir KDC’den kimlik bilgilerini aldigini ögrenir ve istemci de sunucuya güvenir. Böylece bu mesajin içinden elde edilen oturum anahtari da kullanilarak  istemci ile sunucu arasindaki oturum baslatilir. Sunucu ile istemcinin bundan sonraki haberlesmelerinde kullanacaklari bu oturum anahtarlari genelde en fazla 8 saat boyunca bilgisayarlarin hafizalarinda dururlar, bu süre içinde kapatilan ya da logoff olunan makinalarda anahtar hafizadan silinir, süre bittiginde ayni islemler yeniden baslatilarak, yenilenir.  

     Oturum sifrelerinin kriptolanmasi ve açilmasi sirasinda kullanilan ve istemci ile sunucularin KDC ile paylastiklari özel anahtarlar da bilgisayarlarin ve kullanicilarin sifrelerinden türetilir. (Kullanicilar için kullanici hesabinin sifresi, sunucular için bilgisayar hesabinin domain’deki sifresi).  

     Herhangi bir kullanici aga ilk baglandiginda (Kullanici Windows 2000 domainine logon oldugunda), kullanicinin bilgisayarindaki Kerberos yazilimi sifreden özel anahtari üreterek, istemciye özel bir kriptolama algoritmasi ile sifreleyerek gönderir. (Teknik olarak DES-CBC-MD5 kriptolamasi tekniginin bu islemde kullanildigini ayrica belirtelim). Bu bilgi KDC’ye geldiginde, KDC, kullanicinin sifresini zaten bildiginden, (Windows 2000 domain sunuculari ayni zamanda KDC görevini üstlenmekteler), gelen bu bilgiyi kendisinin ürettigi ile karsilastirir ve istemcinin logon sifresini onaylar. Bu islem sabah bir kere yapildiktan sonra, KDC, bu istemciye, kendisine ilerde herhangi bir oturum anahtari almak için bir kere basvurmak isterse, giden gelen mesajlari kriptolayarak yollamak için kullanacagi bir  anahtar alma anahtari da gönderir (Ticket Granting Ticket). Bu sayede tüm istemcilerin KDC ile bundan sonraki tüm konusmalarinin da bu oturum anahtari ile kriptolanmasi saglanmis olur.

murat bayraktarin makalesinden dercedilmistir.

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©