SSL,KERBEROS VE DYNAMIC KEY GENERATION KAVRAMI -1
Merhaba Arkadaşlar...
Daha önceki yazımızda kriptography e kısa bir giriş yapmıştık.. O girişten sonra henüz bir uygulaması bulunmayan olasılığa dayalı kriptolamadan biraz bahsetmiştik.. Bu yazımızda ise önceki yazımızdaki girişi kullanarak popüler mevcut güvenlik sistemlerinden,web dünyasının ünlülerinden, SSL\TLS ve operating systemlerimizde kullandığımız KERBEROS dan biraz bahsedip onların ortak zaaf noktaları olan "long term cyrptographic keys" yani uzun zamanlı anahtar paylaşmalarına parmak basıyor olacağız.
SSL(Secure Socket Layer): SSL veya yeni adıyla TLS (Transport Layer Security) web dünyasında sıkça gördüğümüz banka işlemlerinde,kredi kartı ile alışverişlerinde çoğu zaman HTTPS ile karşımıza çıkan browserımızın sol-sağ alt köşesindeki sevimli kilit diye tabir etsek olur herhalde... Tabii ki bundan ibaret değil... Basamak basamak bu güvenlik sisteminde neler oluyor bundan bahsetmeden önce algoritmamızın ilk olarak SSL adıyla 1995 yılında Netscape firması tarafından kullanıldığını söyleyelim. 1999 yılında ise isim değiştirerek TLS olarak adlandırıldı.. Bu süreçte çeşitli ataklara karşı önlemler alınarak geliştirildi. (TLS v 1.0,1.1,1.2)..

Basamak 1: Negotiation(Görüşme,İlk Tanışma): Bu basamağı server ile clientımız arasında ilk etkileşimin başlangıcı olarak kabul edebiliriz. Anlaşmamız client tarafından gönderilen hello mesajı ile başlamakta.. Burda kullanılabilecek en yüksek TLS versiyonu, haberleşmede kullanılması öngörülen şifre dizinleri ve sıkıştırma metodları ve serverın hangi client ile konuştuğunu bilmesi için bir session id mesaj içerisinde bulunmakta..
Serverımız da tabii boşdurmuyor.. ServerHello ile karşılık verip versiyon,şifre dizini ve sıkıştırma metodunu belirleyip client a veriyor... Genel olarak bu işlemlerin kontrolleri yapıldıktan sonra şifreli konuşmaya başlangıç olarak client ChangeCipherSpec (savulun şifreli paketler geliyor!!!! paketi) ile şifreli Finished paketi gönderiyor. Server finished paketini çözmeye çalışıyor çözerse aynı ikiliyi bu sefer client a yolluyor...
Basamak 2: Key exchange : Burda TLS in kuvvetli olduğu kısmı görüyoruz... Man in the middle ataklarına karşı bir önlem olarak pre_master_key paylaşımı olarak düşünebiliriz.. Burda gerçek kullanıcı ile konuşulduğundan emin olunması için sertifika onaylanması ve daha önceki finished paketlerinden haberdarlığı(!) sorgulanmaktadır..
Basamak 3: Symmetric data encryption: Symmetric olarak public-private key ikililerin sahne aldığı serverlar için biraz yorucu kısım başlamıştır...(DOS atakları maalesef hala problem..)

KERBEROS : Athena projesi olarak MIT tarafından geliştirildi.. Güçlü bir authentication sistemi ile işlerini yöneteğini söyleyebiliriz.. Özellikle işletim sistemlerinin ve SESAME güvenliğinde (Secure European System for Applications in a Multi-Vendor) kullanılmaktadır.
Authentication; Key Distribution Center denilen bir merkezden yönetilir. 3 başlıklı yaratık misali(!) sistemimiz KDC (yani Authentication Server ve Ticket Granting Server) nin de dahil edilmesi ile 3 oyuncundan oluşuyor (Client-KDC(AS-TGT)-Server).. Hemen neler oluyor bir bakalım..
GİRİŞ YAPIYORRRUUZZZ..
1-) Client username and password un girişi yapar. Client passwordunu tek yönlü hashing yapar ve gizli anahtarını oluşturmuştur.
2-) Client userID sini AS (e.g Active Directory) server a yollar.. AS userID yi kendi database'inde kontrol eder. User ID and password u bulmaya çalışır. Bulursa;
Mesaj A: Client/TGS Oturum anahtarı(Session Key) kullanıcı gizli anahtarı ile şifreli bir şekilde gönderilir. Bu mesaj client tarafından açılabilir..
Mesaj B: Ticket-Granting Ticket bu mesaj ise TGS nin kendi gizli anahtarı ile şifrelenmiştir. İçerisinde client ID,client network adresi, bilet geçerlilik süresi gibi bilgiler vardır. Client bunu açamaz :)
SERVIS E BAĞLANACAAZZZZ.
Client olarak bir servise bağlanmak istiyoruz diyelim.. Bu yüzden isteklerimizi İki mesaj halinde TGS ye yolluyoruz.
Mesaj C: Mesaj B de TGT ve erişelecek sunucu
Mesaj D: İstemci bilgisi ve zaman bilgisi TGS session key gizli anahtarı ile şifrelenir.
ELCEVAP TGS DEN GECİKMEZ...
Mesaj D client secret key serverımızda olduğu için kolaylıkla açılır ve iki mesaj yollanır..
Mesaj E: Client-to-sunucu ticket (İstemci-Sunucu bileti) içerir. Bu bileti ulaşamaya çalıştığı servisin gizli anahtarı şifrelemiştir. (İçinde istemci gizli anahtarı da vardır..)
Mesaj F: İstemci-sunucu oturum anahtarı gönderilir. Bu mesaj client gizli anahtarı ile şifrelenmiştir..
BAĞLANIYOZZZ..
İstemci servis e bağlanmak için;
Mesaj E yi forwardlar..
Mesaj G: İstemci Id ve zaman bilgisi vardır. İstemci gizli anahtarı ile şifrelenmiştir.
Sunucu Mesaj E yi kendi gizli anahtarı ile açar... İçinden istemci gizli anahtarını alır. Akabinde Mesaj G yi de açar ve son olarak onay mesajı olması amacı ile
Mesaj H: Mesaj G deki zaman kullanılır. İstemci gizli anahtarı ile şifrelenir ve istemci gönderilir.
İstemci bu mesajı aldıktan sonra artık servis ile çalışabilir durumdadır..
Evet şimdi yavaş yavaş "Dynamic Key Generation" kavramına geçiş yapmadan önce
bu karmaşık sistemlerin dahi hala zayıf noktaları olduğunu hatta bu fikrin bu zayıf yönlerinden birinden doğduğunu belirtelim.
SSL li konuşurken belirtiğimiz gibi RSA tabanlı işlem yaparken ciddi manada bir kaynak ayrılması mevzuu bahis oluyor. Ama burdaki asıl problem uzun zamanlı anahtar paylaşımları olmakta.. Bunun anlamı şifrenin bir kere elde edilmesi halinde tüm sistemin savunmasız kalacağı... Key elde edilmesi ise ünlü plaintext atakları ile mümkün olmakta..(Known-Chosen).. Bu noktada ele geçen şifreli parça üzerinden plaintext e gidiş (Chosen Plaintext Attack) yada belirli plain textlerin cryptolu hallerinin sistem içerisinde aranması (Known Plain Text Attack)..
Kerberos için ise Man in the Middle Attacklarının ve Wireless sistemlerindeki zaaf yönlendirinden bahsedilmektedir.
İkinci yazımızda devam ediyor olacağız..
Kaynaklar : Kerberos Nedir?
SSL wiki
Design&Implementation of a Secure Sensitive Information System for Wireless Mobile
Daha önceki yazımızda kriptography e kısa bir giriş yapmıştık.. O girişten sonra henüz bir uygulaması bulunmayan olasılığa dayalı kriptolamadan biraz bahsetmiştik.. Bu yazımızda ise önceki yazımızdaki girişi kullanarak popüler mevcut güvenlik sistemlerinden,web dünyasının ünlülerinden, SSL\TLS ve operating systemlerimizde kullandığımız KERBEROS dan biraz bahsedip onların ortak zaaf noktaları olan "long term cyrptographic keys" yani uzun zamanlı anahtar paylaşmalarına parmak basıyor olacağız.
SSL(Secure Socket Layer): SSL veya yeni adıyla TLS (Transport Layer Security) web dünyasında sıkça gördüğümüz banka işlemlerinde,kredi kartı ile alışverişlerinde çoğu zaman HTTPS ile karşımıza çıkan browserımızın sol-sağ alt köşesindeki sevimli kilit diye tabir etsek olur herhalde... Tabii ki bundan ibaret değil... Basamak basamak bu güvenlik sisteminde neler oluyor bundan bahsetmeden önce algoritmamızın ilk olarak SSL adıyla 1995 yılında Netscape firması tarafından kullanıldığını söyleyelim. 1999 yılında ise isim değiştirerek TLS olarak adlandırıldı.. Bu süreçte çeşitli ataklara karşı önlemler alınarak geliştirildi. (TLS v 1.0,1.1,1.2)..

Basamak 1: Negotiation(Görüşme,İlk Tanışma): Bu basamağı server ile clientımız arasında ilk etkileşimin başlangıcı olarak kabul edebiliriz. Anlaşmamız client tarafından gönderilen hello mesajı ile başlamakta.. Burda kullanılabilecek en yüksek TLS versiyonu, haberleşmede kullanılması öngörülen şifre dizinleri ve sıkıştırma metodları ve serverın hangi client ile konuştuğunu bilmesi için bir session id mesaj içerisinde bulunmakta..
Serverımız da tabii boşdurmuyor.. ServerHello ile karşılık verip versiyon,şifre dizini ve sıkıştırma metodunu belirleyip client a veriyor... Genel olarak bu işlemlerin kontrolleri yapıldıktan sonra şifreli konuşmaya başlangıç olarak client ChangeCipherSpec (savulun şifreli paketler geliyor!!!! paketi) ile şifreli Finished paketi gönderiyor. Server finished paketini çözmeye çalışıyor çözerse aynı ikiliyi bu sefer client a yolluyor...
Basamak 2: Key exchange : Burda TLS in kuvvetli olduğu kısmı görüyoruz... Man in the middle ataklarına karşı bir önlem olarak pre_master_key paylaşımı olarak düşünebiliriz.. Burda gerçek kullanıcı ile konuşulduğundan emin olunması için sertifika onaylanması ve daha önceki finished paketlerinden haberdarlığı(!) sorgulanmaktadır..
Basamak 3: Symmetric data encryption: Symmetric olarak public-private key ikililerin sahne aldığı serverlar için biraz yorucu kısım başlamıştır...(DOS atakları maalesef hala problem..)
KERBEROS : Athena projesi olarak MIT tarafından geliştirildi.. Güçlü bir authentication sistemi ile işlerini yöneteğini söyleyebiliriz.. Özellikle işletim sistemlerinin ve SESAME güvenliğinde (Secure European System for Applications in a Multi-Vendor) kullanılmaktadır.
Authentication; Key Distribution Center denilen bir merkezden yönetilir. 3 başlıklı yaratık misali(!) sistemimiz KDC (yani Authentication Server ve Ticket Granting Server) nin de dahil edilmesi ile 3 oyuncundan oluşuyor (Client-KDC(AS-TGT)-Server).. Hemen neler oluyor bir bakalım..
GİRİŞ YAPIYORRRUUZZZ..
1-) Client username and password un girişi yapar. Client passwordunu tek yönlü hashing yapar ve gizli anahtarını oluşturmuştur.
2-) Client userID sini AS (e.g Active Directory) server a yollar.. AS userID yi kendi database'inde kontrol eder. User ID and password u bulmaya çalışır. Bulursa;
Mesaj A: Client/TGS Oturum anahtarı(Session Key) kullanıcı gizli anahtarı ile şifreli bir şekilde gönderilir. Bu mesaj client tarafından açılabilir..
Mesaj B: Ticket-Granting Ticket bu mesaj ise TGS nin kendi gizli anahtarı ile şifrelenmiştir. İçerisinde client ID,client network adresi, bilet geçerlilik süresi gibi bilgiler vardır. Client bunu açamaz :)
SERVIS E BAĞLANACAAZZZZ.
Client olarak bir servise bağlanmak istiyoruz diyelim.. Bu yüzden isteklerimizi İki mesaj halinde TGS ye yolluyoruz.
Mesaj C: Mesaj B de TGT ve erişelecek sunucu
Mesaj D: İstemci bilgisi ve zaman bilgisi TGS session key gizli anahtarı ile şifrelenir.
ELCEVAP TGS DEN GECİKMEZ...
Mesaj D client secret key serverımızda olduğu için kolaylıkla açılır ve iki mesaj yollanır..
Mesaj E: Client-to-sunucu ticket (İstemci-Sunucu bileti) içerir. Bu bileti ulaşamaya çalıştığı servisin gizli anahtarı şifrelemiştir. (İçinde istemci gizli anahtarı da vardır..)
Mesaj F: İstemci-sunucu oturum anahtarı gönderilir. Bu mesaj client gizli anahtarı ile şifrelenmiştir..
BAĞLANIYOZZZ..
İstemci servis e bağlanmak için;
Mesaj E yi forwardlar..
Mesaj G: İstemci Id ve zaman bilgisi vardır. İstemci gizli anahtarı ile şifrelenmiştir.
Sunucu Mesaj E yi kendi gizli anahtarı ile açar... İçinden istemci gizli anahtarını alır. Akabinde Mesaj G yi de açar ve son olarak onay mesajı olması amacı ile
Mesaj H: Mesaj G deki zaman kullanılır. İstemci gizli anahtarı ile şifrelenir ve istemci gönderilir.
İstemci bu mesajı aldıktan sonra artık servis ile çalışabilir durumdadır..
Evet şimdi yavaş yavaş "Dynamic Key Generation" kavramına geçiş yapmadan önce
bu karmaşık sistemlerin dahi hala zayıf noktaları olduğunu hatta bu fikrin bu zayıf yönlerinden birinden doğduğunu belirtelim.
SSL li konuşurken belirtiğimiz gibi RSA tabanlı işlem yaparken ciddi manada bir kaynak ayrılması mevzuu bahis oluyor. Ama burdaki asıl problem uzun zamanlı anahtar paylaşımları olmakta.. Bunun anlamı şifrenin bir kere elde edilmesi halinde tüm sistemin savunmasız kalacağı... Key elde edilmesi ise ünlü plaintext atakları ile mümkün olmakta..(Known-Chosen).. Bu noktada ele geçen şifreli parça üzerinden plaintext e gidiş (Chosen Plaintext Attack) yada belirli plain textlerin cryptolu hallerinin sistem içerisinde aranması (Known Plain Text Attack)..
Kerberos için ise Man in the Middle Attacklarının ve Wireless sistemlerindeki zaaf yönlendirinden bahsedilmektedir.
İkinci yazımızda devam ediyor olacağız..
Kaynaklar : Kerberos Nedir?
SSL wiki
Design&Implementation of a Secure Sensitive Information System for Wireless Mobile
Yorumlar
Yorum Gönder