Bilginin Adresi Ana Sayfa
Forum Anasayfası Forum Anasayfası > Bilgisayar Güvenliği / Computer Security > Güvenlik / Security Makaleleri
  Aktif Konular Aktif Konular RSS - Kerberos Güvenlik Protokolu
  SSS SSS  Forumu Ara   Events   Kayıt Ol Kayıt Ol  GiriÅŸ GiriÅŸ

Kerberos Güvenlik Protokolu

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
megabros Açılır Kutu Gör
Security Professional
Security Professional
Simge

Kayıt Tarihi: 08-06-2009
Konum: Turkey
Status: Aktif DeÄŸil
Points: 752
Mesaj Seçenekleri Mesaj Seçenekleri   Thanks (0) Thanks(0)   Alıntı megabros Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Kerberos Güvenlik Protokolu
    Gönderim Zamanı: 18-04-2010 Saat 11:25

MIT’de çalışan bir grup mühendis tarafından üzerinde çalıştıkları Athena projesi sırasında geliştirildi. Protokolün kabul gören ve kullanılan ilk sürümü versiyon 4 olarak kendini göstermiş. IT sektöründe bazı sistem üreticileri tarafından kabul gören protokol daha sonra yazarları tarafından daha da geliştirilip versiyon 5’e yükseltilmiş. Daha sonra bu versiyon IETF tarafından bilgisayar ağlarının kaynaklarını kullanmak için ağa bağlanmak sırasında maksimum güvenlik sağlamak amacıyla kullanılabilir şeklinde standardize edildi. (RFC 1510 ).

Kerberos, iki istemci arasında paylaştırılan gizli anahtarları kullanma esasına göre hazırlanmış bir protokol. Dayandığı temel esasen çok basit: Eğer gizli bir anahtar sadece iki insan tarafından bilinirse, bu durumda iki insan da karşısındakinin kim olduğu konusunda söylediği bilgilere, bu anahtarı kullanarak inanabilir. (Askerlikte nöbetlerde kullanılan parola gibi).

Örnek olarak Mehmet yüzbaşının Ahmet yüzbaşıya bir mesaj göndermesi gerektiğini düşünelim. Bu mesajın Ahmet tarafından Mehmet’ten geldiğine inanılması lazım ki, gereken tedbirler alınabilsin, işler yapılabilsin. Bu durumda iki mehmetçik arkadaşımız, aralarında baştan bir anlaşma yaparak bir parola seçerler ve bu parolayı da başka kimseye söylemezler. Eğer Mehmet’in Ahmet’e gönderdiği mesaj bir şekilde parola bilgisini içinde taşıyorsa, Ahmet mesajı aldığında gerçekten de Mehmet’ten geldiğini anlayabilir.

Bu işlem sırasında aklımıza hemen Ahmet’e mesajı gönderen Mehmet’in parolayı da bildiğini ona nasıl göstereceği sorusu takılıyor. Basit olarak Mehmet mesajın içine bu parolayı da ilave edebilirdi. (Belki de mesajın sonuna bir imza atar, altına da gizli anahtarımız budur notunu düşer). Bu yöntem tabii ki bilgisayar ağlarında giden gelen mesajların başkaları tarafında okunamadığı durumlarda geçerli olabilir. Günümüzde ise maalesef durum böyle değil. Tüm bu mesajlar, üçüncü bir kişi, Önder yüzbaşının da bilgisayarının bağlı bulunduğu bir bilgisayar ağı üzerinde gidip geliyor. Önder Bey’in ise bilgisayarında bir ağ dinleme yazılımı varsa, ve bu arkadaşımız da boş zamanlarında bilgisayar ağındaki paketleri yakalayıp “İçlerinde acaba neler var ?” diye incelemeler yaparak vakit geçiriyorsa işler hiç de bu kadar kolay değil.

 

Kerberos protokolü, bahsettiğimiz bu problemi, gizli anahtarların kriptolanması (şifrelenmesi) tekniği ile çözüyor. Gizli bir şifreyi paylaşmak yerine, iki yüzbaşı kriptolanmış bir anahtarı paylaşıyorlar ve bu anahtar sayesinde birbirlerine güveniyorlar. Bu tekniğin çalışması için, paylaşılan bu anahtarın simetrik olması gerekir. Yani tek bir anahtar hem mesajları kriptolayabilmeli, hem de açabilmeli. Ahmet yüzbaşı mesajı açabilirse, gönderenin de bunu kriptolayabildiğine inanmış olur.

Bu şekilde gizli kriptolanmış anahtarları kullanan bir protokolün prensipleri, bir kişinin kapınıza kadar gelip onu çalması ile başlar. Ziyaretçinin içeriye girebilmesi için, gelen, aynı zamanda kendisinin de kimliğini bir şekilde kapıdaki nöbetçiye bildirmek zorundadır. Bunu yaparken kullandığı teknik ise her defasında farklı olmalı ve başkaları tarafında da kullanılamamalıdır. Yoksa, duvarın diğer tarafından konuşmaları dinleyen istenmeyen kulaklar, daha sonra aynı tekniği kullanarak nöbetçiyi de kandırabilirler. Ali Baba ve Kırk Haramiler hikaseyinde “Açıl Susam Açıl” şifresi aynen böyle öğreniliyor değil mi?

Gelin biraz da bu işin detaylarına bakalım:

1. Mehmet, Ahmet’e text olarak ismini ve bu ikilinin anlaştığı gizli anahtarları ile kriptolanmış olarak da kimliğini içeren mesajını gönderir. Mesajda kullanılan kimlik bilgisinin içinde iki tane alan vardır. Birinci alanda, Mehmet ile ilgili bilgiler bölümü -belki de Mehmet’in soyismi- tutulur, ikinci alanda ise, Mehmet’in saatinin mesajı gönderdiği anda kaç olduğu bilgisi yer alır.

2. Ahmet yüzbaşı, Mehmet olduğunu iddia eden birisinden gelen mesajı alır ve Mehmet ile baştan anlaştıkları anahtarı kullanarak şifreyi çözer. Mesajın içinden Mehmet’in saatini inceler, ve bunu kendisininki ile karşılaştırır. Eğer Mehmet’in saati, Ahmet’in saatinden beş dakika geri ya da ileri ise, Ahmet mesajı kesin olarak reddeder.

Eğer Mehmet ile Ahmet’in saatleri baştan birbirleriyle uyumlu olsa, sistem sorunsuz çalışacak gibi görünüyor. Şimdilik bilgisayar ağımızdaki bilgisayarların sistem saatlerinin otomatik olarak senkronize edildiğini düşünelim. (Windows 2000’de “time server” servisi var).

Eğer, mesajların saatleri birbirlerini tutuyorsa, mesajın gerçekten de Mehmet’ten gelme ihtimali olabilir. Ancak, yine de Ahmet yüzbaşı mesajın kesinlikle Mehmet’ten geldiğine emin olamaz. Yine de bilgisayar ağını sabahtan beri dinleyen birisi, sabah yakaladığı mesajları öğleden sonra tekrar birilerine göndermek gibi işlerle uğraşıyorlarsa, sistem saatlerinin kayıt edilmesi tekniği bu gibi atak risklerini ortadan kaldırır.

3. Ahmet yüzbaşı, Mehmet ile baştan anlaştığı anahtarı kullanarak, çözdüğü mesajdan Mehmet’in sistem saatini anlar ve bunu tekrar Mehmet’e geri gönderir. Sadece Mehmet yüzbaşının sistem saati bilgisinin geri gönderilmesi, mesajın içinden Mehmet’in kimlik bilgisinin tamamını kopyalayıp birilerine gönderen casuslara karşı iyi bir koruma sağlar. Casusların tabii ki, anahtarları olmadığından mesajları çözebilmek yerine sadece kopyalabilirler. Sistem saati bilgisini geri gönderme sebebi ise, her mesaj için farklı olması garanti olan, tekil bir bilgiye iyi bir örnek olmasıdır.

Tartıştığımız bu teknikle ilgili önemli bir şey aklınıza takıldı mı? Hala, bu yüzbaşı arkadaşlarımızın bu işlerde kullanılan kod çözücü anahtarları nasıl elde ettiklerini belirtmedik. “Sadece herkesin bir anahtarı vardır” kabülünü yaptık. Eğer bu sistem günlük hayatta kullanılsa idi, yüzbaşılar gizli bir yerde konuşarak bu anahtar enformasyonunu değiş tokuş edebilirlerdi, ancak bizim bilgisayar ağlarında konuşan PC’ler devri daha başlamadı bildiğiniz gibi.

Kerberos protokolü, bu sorunu, bize anahtar dağıtım merkezini (Key Distribution Center - KDC) tanıştırarak çözüyor. Kerberos (Cerberus), eski Yunan mitolojisinde Alt Dünya’nın kapılarında bekleyen ve geçişlere izin veren üç başlı bir köpek. Bekçi Kerberos köpeği gibi, güvenlik protokolümüzün de üç tane kafası var: Bir tane istemci, bir tane sunucu, ve Anahtar Dağıtım Merkezi. İşte bu işlemlerde arada bulunan güvenilir yere KDC diyoruz.

Güvenlik protokolümüzün tanımına göre KDC, fiziksel olarak güvenli olduğu kabul edilen bir sunucuda çalışır. Kendi REALM’ındaki (Windows 2000’deki domain’in Kerberos karşılığı) tüm PRINCIPAL’lara (Windows 2000 domain’deki kullanıcıların Kerberos karşılığı) ait kullanıcı bilgilerini bir veritabanında tutar. Ayrıca, kullanıcılara ait kimlik bilgileri ile beraber, sadece kullanıcının kendisi ve KDC tarafından bilinen özel bir anahtarı da tutar. Bu anahtar, kullanıcı ile, KDC arasında daha sonra yapılacak olan mesaj transferlerinin güvenli bir şekilde kriptolanması için kullanılır. Çoğu Kerberos implementasyonunda, bu özel anahtar, kullanıcının şifresinden türetilir.


İstemci, bir sunucu ile konuşmak istediğinde, KDC’ye bir istek iletir ve bu ikilinin konuşmaları sırasında kullanacakları oturum anahtarları (session key) üretilir. İstemcinin bu isteğine karşı getirilen iki oturum anahtarı da KDC tarafından istemciye gönderilir şöyle ki: İstemcinin oturum anahtarı istemcinin KDC ile paylaştığı özel anahtar ile kriptolanır, sunucuya ait oturum anahtarı ise istemciye giden bilgi paketinin içine, istemciye ait bilgiler ile birlikte yerleştirilir. İlgili sunucunun KDC ile paylaştığı özel anahtar ile kriptolanan ve içinde istemciyi tanıtan bilgiler de olan sunucuya ait bilgiler, en son olarak bir de istemcinin KDC ile paylaştığı özel anahtar ile kriptolanıp istemciye KDC tarafından gönderilir.

İstemci, KDC’den cevabı aldığında, kendi anahtarı ile verileri okur ve şifresi çözülmüş bu bilgileri hafızasına yazar. (Güvenlik açısından Kerberos’un Windows 2000’deki uygulamasında disk bu verileri saklamak için kullanılmıyor). Sunucuya bağlanmak istediğinde ise, sunucuya, içinde sunucunun KDC ile paylaştığı anahtarı ile kriptolanmış oturum anahtarının da bulunduğu isteğini gönderir. (İstemciye sunucuya gönderilmek üzere KDC tarafından oluşturulmuş özel bölümü, sunucuya ait anahtarı bilmediği için çözemez, böylece sunucuya ait, içinde bu oturuma ait sunucu oturum anahtarlarının olduğu bilgiler de, istemci tarafında sunucuya gönderilmesine rağmen güvence altına alınmış olur.)

Sunucu, istemciden gelen bu isteği aldığında, kendi özel anahtarı ile kimlik bilgilerinin bulunduğu bölümü çözer. İstemci, bu haberleşme için karşılıklı kimlik ispatlanmasını da sunucudan istemişse, sunucu, istemcinin gönderdiği mesajın içinden, bu mesajın oluştuğu zamanki sistem saatini de çözüp kriptolayarak istemciye gönderebilir. Eğer her şey yolunda giderse, sunucu, istemcinin güvenilen bir KDC’den kimlik bilgilerini aldığını öğrenir ve istemci de sunucuya güvenir. Böylece bu mesajın içinden elde edilen oturum anahtarı da kullanılarak istemci ile sunucu arasındaki oturum başlatılır. Sunucu ile istemcinin bundan sonraki haberleşmelerinde kullanacakları bu oturum anahtarları genelde en fazla 8 saat boyunca bilgisayarların hafızalarında dururlar, bu süre içinde kapatılan ya da logoff olunan makinalarda anahtar hafızadan silinir, süre bittiğinde aynı işlemler yeniden başlatılarak, yenilenir.

Oturum şifrelerinin kriptolanması ve açılması sırasında kullanılan ve istemci ile sunucuların KDC ile paylaştıkları özel anahtarlar da bilgisayarların ve kullanıcıların şifrelerinden türetilir. (Kullanıcılar için kullanıcı hesabının şifresi, sunucular için bilgisayar hesabının domain’deki şifresi).

Herhangi bir kullanıcı ağa ilk bağlandığında (Kullanıcı Windows 2000 domainine logon olduğunda), kullanıcının bilgisayarındaki Kerberos yazılımı şifreden özel anahtarı üreterek, istemciye özel bir kriptolama algoritması ile şifreleyerek gönderir. (Teknik olarak DES-CBC-MD5 kriptolaması tekniğinin bu işlemde kullanıldığını ayrıca belirtelim). Bu bilgi KDC’ye geldiğinde, KDC, kullanıcının şifresini zaten bildiğinden, (Windows 2000 domain sunucuları aynı zamanda KDC görevini üstlenmekteler), gelen bu bilgiyi kendisinin ürettiği ile karşılaştırır ve istemcinin logon şifresini onaylar. Bu işlem sabah bir kere yapıldıktan sonra, KDC, bu istemciye, kendisine ilerde herhangi bir oturum anahtarı almak için bir kere başvurmak isterse, giden gelen mesajları kriptolayarak yollamak için kullanacağı bir anahtar alma anahtarı da gönderir (Ticket Granting Ticket). Bu sayede tüm istemcilerin KDC ile bundan sonraki tüm konuşmalarının da bu oturum anahtarı ile kriptolanması sağlanmış olur.

Saygılar.


Düzenleyen megabros - 18-04-2010 Saat 11:25
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör



Bu Sayfa 0.156 Saniyede Yüklendi.