Kerberos (iletişim kuralı)

Kerberos / kərbərəs / güvenli olmayan bir ağ üzerinde haberleşen kaynakların,  bilet mantığını kullanarak kendi kimliklerini ispatlamak suretiyle iletişim kurmalarını sağlayan bir bilgisayar ağı kimlik doğrulama protokolüdür. Protokolün tasarımcıları, ilk başta istemci-sunucu modelini hedef almış ve bu doğrultuda hem kullanıcının hem de sunucunun birbirlerinin kimliklerini doğrulamasını sağlayan karşılıklı kimlik doğrulama özelliğini sunmuşlardır. Kerberos protokol mesajları, izinsiz dinlemelere ve yansıtma ataklarına karşı dayanıklıdır.

Kerberos kuralının iletişim cihazları üzerindeki gösterimi.

Kerberos simetrik anahtar şifreleme üzerine inşa edilmiştir ve güvenilir bir üçüncü doğrulayıcıya (trusted third party) ihtiyaç duyar, isteğe bağlı olarak kimlik doğrulamanın belli aşamalarında açık anahtar şifreleme modelini de kullanabilir. Kerberos varsayılan port olarak UDP 88. portu kullanır.

Tarihçe ve gelişim değiştir

MIT, Kerberos'u Project Athena isimli projenin sunduğu ağ servislerini korumak için geliştirdi ve mitolojideki Kerberos'tan esinlenerek protokole bu isim verildi. Protokolün birkaç sürümü bulunmaktadır, 1-3 arası sürümleri sadece MIT'de kullanıldı.

Kerberos sürüm 4'ün başlıca tasarımcıları olan Steve Miller ve Clifford Neuman, söz konusu sürümü "Project Athena" projesine hedeflemelerine rağmen 1980'lerin sonlarında çıkardılar. John Kohl ve Clifford Neuman tarafından tasarlanan 5. sürüm, 4. sürümün bazı kısıtlamalarını ve güvenlik problemlerini aşarak 1993'te RFC 1510 olarak ortaya çıkarıldı.

Windows NT ve sonrası Windows sürümleri kimlik doğrulama metodu olarak Kerberos'un bir çeşidini kullanırlar. Apple Mac OS X de Kerberos'u hem istemci hem sunucu tarafta kullanır.

Birleşik Devletler yetkilileri, Kerberos protokolünü askeri destek teknolojisi olarak sınıflandırmış ve 56-bit DES (Data Encryption Standard) şifreleme algoritmasını kullandığı için ihracatını yasaklamıştır. ABD kaynaklı olmayan Kerberos 4 tasarımı KTH-KRB, İsveç’teki Royal Teknoloji Enstitüsü, Birleşik Devletler, kriptografi ihracat mevzuatını değiştirmeden önce sistemi Birleşik Devletler harici kullanıma hazır hale getirmiştir (circa 2000).  İsveç tasarımı, eBones adında kısıtlı bir veriyonu temel alır. eBones ise Kerberos 4 yama seviye 9’u temel alan MIT Bones yayınından derlenmiştir. 

2005’te, IETF (Internet Engineering Task Force) Kerberos çalışma grubu spesifikasyonları güncellemiştir. Güncellemeler: 

  • Şifeleme ve sınama toplamı spesifikasyonları.
  • Kerberos 5 için AES (Advanced Encryption Standard) şifreleme (RFC 3962).
  • Kerberos 5 spesifikasyonunun yeni bir sürümü: “Kerberos Ağ Kimlik Doğrulama Servisi” (The Kerberos Network Authentication Service V5), RFC 1510’u kullanım dışı bırakmış, protocol ve kullanım amacınının aytrıntılarını daha detaylı ve daha anlaşılır bir şekilde açıklamıştır.
  • GSS-API (Generic Security Services Application Program Interface) spesifikasyonunun yeni bir sürümü: “The Kerberos Version 5  Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2." (RFC 4121).”

MIT, BSD için kullanılanlara benzer kullanım hakları ile tamamen bedava ulaşılabilen bir Kerberos geliştirmiştir. 2007’de, MIT, geliştirme sürecini teşvik etmek amacıyla Kerberos Konsorsiyumunu kurmuştur. Aralarında Oracle, Apple Inc., Google, Microsoft, Centrify Corporation and TeamF1 Inc. gibi sponsorlar, Royal Institute of Technology in Sweden, Stanford University, MIT, gibi akademik kurumlar ve CyberSafe gibi oluşumların ticari versiyonları oluşmuştur.

Microsoft Windows değiştir

Windows 2000 ve sonrası sürümler Kerberos’u temel kimlik doğrulama metodu olarak kullanmaktadır. Kerberos protocol ailesine yönelik bazı Microsoft eklentileri, RFC 3244 "Microsoft Windows 2000 Kerberos Change Password and Set Password Protocols" olarak yazılı hale getirilmiştir. RFC 4757 Microsoft’un RC4 şifre kullanımını anlatır. Microsoft Kerberos protokolünü kullanmakla beraber, MIT yazılımını kullanmaz.

Kerberos, birincil kimlik doğrulama metodu olarak kullanılır: Genel manada, istemci olarak bir Windows alanına (domain) bağlanmak, istemciden ilgili Windows alanına ve bu alan ile ilintili bütün doğrulanmış alanlara yönelik kimlik doğrulama servisleri için Kerberos’u varsayılan protocol olarak ayarlamak anlamına gelmektedir.

Bu durumun aksine, istemci veya sunucudan biri veya ikisi birden bir alana katılmamış ise (veya aynı güvenilen alan ortamının parçası değilse), Windows istemci ve sunucu arasındaki kimlik doğrulamasını gerçekleştirmek için Kerberos yerine NTLM kullanır.

UNIX tabanlı işletim sistemleri değiştir

Birçok Unıx tabanlı işletim sistemi, FreeBSD, Mac OS X, Red Hat Enterprise Linux, Oracle's Solaris, IBM AIX and Z/OS, HP OpenVMS dahil olmak üzere, kullanıcı ve servislerin Kerberos kimlik doğrulaması için yazılımlar barındırırlar. Gömülü platformlarda çalışan istemciler ve ağ servisleri için gömülü Kerberos V kimlik doğrulama vesiyonları TeamF1, Inc gibi firmalar tarafından sunulmaktadır.

Protocol değiştir

Tanım değiştir

İstemci kendisini, KDC (Key Distribution Center) adı verilen anahtar dağıtım merkezine istemciden aldığı kullanıcı adını gönderen bir kimlik doğrulama sunucusuna (AS) tanıtır. KDC doğrulanmış bileti (TGT) zaman damgası ile birlikte onaylar, kullanıcının parolası ile şifreler ve şifrelenmiş halini kullanıcının ortamına gönderir. Gönderim işlemi çok sık olmamakta, genellikle kullanıcı girişi sırasında; TGT'nin belli bir süre sonra zaman aşımına uğraması sonucu, kullanıcıya hissettirilmeden kullanıcının oturum yöneticisi tarafından yenilenir.

İstemci, başka bir kaynağa (Kerberos dilinde "principal") ulaşması gerekirse, TGT'sini (ticket-granting ticket) KDC ile aynı sunucuyu paylaşan TGS'ye (ticket-granting service) gönderir. TGT'nin geçerliliği doğrulandıktan ve kullanıcı talep ettiği servise ulaşım izni aldıktan sonra TGS bileti ve oturum anahtarlarını imzalar ve istemciye geri gönderir. İstemci daha sonra bileti servis sunucusuna servis isteği ile beraber gönderir.

Protokol detayları şöyle açıklanabilir:

İstemci tabanlı kullanıcı girişi değiştir

  1. Kullanıcı istemci tarafında kullanıcı adı ve parola girer. Pkinit (RFC4556) gibi diğer parola mekanizmaları parola yerine açık anahtar kullanımına izin verir.
  2. İstemci parolayı gizli anahtara çevirir. Şifre ailesinin kullanımına bağlı olarak anahtar sıralama veya tek yönlü özet fonksiyonları kullanılır.

İstemci kimlik doğrulaması değiştir

  1. İstemci sunucuya (AS) kullanıcı adını açık mesaj olarak gönderir ve kullanıcı adına servisleri talep eder. (Not: Ne gizli şifre ne de parola sunucuya gönderilmez.) Kimlik doğrulama sunucusu gizli şifreyi, veri tabanında (örn. Windows sunucuda Active Directory) bulunan kullanıcıya ait parolayı özetlemek sureti ile oluşturur.
  2. Kimlik doğrulama sunucusu (AS) istemcinin veri tabanında olup olmadığını kontrol eder. Eğer veri tabanında varsa, AS istemciye şu iki mesajı yollar:
    • Mesaj A: İstemci/kullanıcı gizli anahtarı kullanılarak üretilen şifrelenmiş İstemci/TGS Oturum Anahtarı.
    • Mesaj B: TGS'nin gizli anahtarı kullanılarak üretilmiş şifrelenmiş istemci adı, istemci ağ adresi, geçerlilik süresi ve istemci/TGS oturum anahtarını içeren bir TGT.
  3. İstemci, A ve B mesajlarını alır almaz, kullanıcı tarafından girilen parolayı kullanarak A mesajını açmaya çalışır. Eğer kullanıcının girmiş olduğu parola ile veri tabanında bulunan parola aynı değilse, istemcinin gizli anahtarı farklı olacak ve bunun sonucunda A mesajını açmayı başaramayacaktır. Geçerli bir parola ve gizli anahtar ile istemci A mesajını çözecek ve İstemci/TGS Oturum Anahtarını alabilecektir. Bu oturum anahtarı daha sonra TGS ile yapılacak iletişimlerde kullanılacaktır. (Not: B mesajı, TGS'nin gizli anahtarı kullanılarak şifrelendiğinden istemci tarafından çözülemez.) Bu noktada, istemci kendi kimliğini TGS'ye tanıtma konusunda yeterli bilgiye sahiptir.

İstemci Servis Yetkilendirme değiştir

  1. Servis talep edilirken, istemci TGS'ye aşağıdaki mesajları yollar:
    • Mesaj C: B mesajından alınan TGT ve talep edilen servis adı.
    • Mesaj D: İstemci/TGS Oturum Anahtarı ile şifrelenmiş Kimlik doğrulayıcı(içinde istemci adı, istemci ağ adresi, geçerlilik periyodu ve İstemci/Sunucu Oturum Anahtarı barındırır)
  2. C ve D mesajını alır almaz, TGS C mesajından B mesajını çıkarır. TGS'nin gizli anahtarını kullanarak B mesajını çözer. Bu ona istemci/TGS oturum anahtarını verir. Bu anahtarı kullanarak, TGS, D mesajını (Kimlik denetçisi) çözer ve istemciye şu mesajları yollar:
    • Mesaj E: İstemci-Sunucu bileti (içinde istemci adı, istemci ağ adresi, geçerlilik periyodu ve İstemci/Sunucu Oturum Anahtarını barındırır).
    • Mesaj F: İstemci/TGS Oturum Anahtarı ile şifrelenmiş İstemci/Sunucu Oturum Anahtarı.

İstemci Servis Talebi değiştir

  1. TGS'den E ve F mesajlarını alır almaz, istemci kendisini Servis Sunucuya tanıtmak için gerekli yeterli bilgiye sahip olmuş olur. İstemci SS'ye bağlanır ve şu mesajları yollar:
    • Mesaj E: Bu bir önceki adımda üretilen E mesajının aynıdır.
    • Mesaj G: İstemci kimliğini, zaman damgasını içeren ve İstemci/Sunucu Oturum Anahtarı kullanılarak şifrelenen yeni bir kimlik denetleyici (Authenticator).
  2. SS, İstemci/Sunucu Oturum Anahtarını elde etmek için kendi gizli anahtarını kullanarak bileti çözer. Bu oturum anahtarını kullanarak, SS kimlik denetleyicisini çözer ve istemcinin gerçek kimliğini doğrulamak ve servis hizmeti sunmak konusundaki karalılığını doğrulamak için istemciye şu mesajı yollar:
    • Mesaj H: İstemci/Sunucu Oturum Anahtarını kullanarak şifrelenmiş, istemcinin kimlik doğrulayıcıda bulunan zaman damgasının bir fazlası.
  3. İstemci, İstemci/Sunucu Oturum Anahtarını kullanarak doğrulama mesajını çözer ve zaman damgasının doğru güncellenip güncellenmediğini denetler. Eğer doğru güncellenmiş ise, istemci, sunucuya güvenebilir ve servis taleplerini sunucuya göndermeye başlayabilir.
  4. Sunucu, istemciye talep edilen servisleri sunar.

Sorunlar ve Kısıtlamalar değiştir

  • Tek noktadan çökme (Single point of failure): Kerberos merkezi bir sunucunun sürekli erişimine ihtiyaç duyar. Kerberos sunucuları çalışmaz halde olduğunda, yeni kullanıcılar giriş yapamaz. Bu sorun, birden fazla Kerberos sunucusu kullanılarak ve geriye dönük kimlik denetimi mekanizmaları ile giderilebilir.
  • Kerberos, çok sıkı zaman gereksinimlerine sahiptir ki sürece dahil olan tarafların zamanlarının tanımlanmış limitlere uyması gerekir. Biletler, zaman aşımına sahiptir ve eğer sunucu saati, Kerberos Sunucu saati ile ayarlı değilse, kimlik doğrulaması yapılamaz. Varsayılan zaman kayması 5 dakikadan fazla olmamalıdır. Pratikte, Ağ Zamanlayıcı Protokol (Network Time Protokol) servisleri genelde sunucuların zamanlarını senkronize olmasını sağlar. Hatırlatmak gerekir ki; bazı sunucular (Microsoft tasarımı da bunlardan biridir) sunucuların ayarlanan değerden daha fazla zaman kaymasına sahip olma ihtimaline karşı, şifrelenmiş sunucu zaman bilgisini içeren bir KRB_AP_ERR_SKEW döner. Bu durumda, istemci, sunucu saatini öğrenerek aradaki farkı hesaplama şansına sahip olur. Bu davranış, RFC 4430 kodlu belgede kayıt altına alınmıştır.
  • Yönetici protokolü henüz standartlaştırılmamıştır ve sunucudan sunucuya değişkenlik gösterir. Parola değişimleri RFC 3244 16 Nisan 2015 tarihinde Wayback Machine sitesinde arşivlendi. kodlu belgede tanımlanmıştır.
  • Simetrik şifreleme benimsenmesi durumunda (Kerberos hem simetrik hem de asimetrik şifreleme ile çalışabilir), KDC bütün kimlik doğrulamalarını kontrol ettiğinden, bu altyapının ele geçirilmesi saldırganın kendini kullanıcıların yerine koymasına olanak sağlar.
  • Farklı bir sunucu ismine ihtiyaç duyan her bir ağ servisinin kendine ait Kerberos anahtar kümesine ihtiyacı olacaktır. Bu durum, sanal sunucu ve sunucu kümeleri oluşturmayı zorlaştırmaktadır.
  • Kerberos, Kerberos sembol(token) sunucusu ile tam bir güven ilişkisi içinde bulunan, kullanıcı hesaplarına, istemcilere ve sunucu üzerinde çalışan servislere ihtiyaç duyar (Hepsi birden aynı Kerberos alanı(domain) içinde bulunmalı ya da birbirleri ile güvenli iletişimi olan alanların içinde olmalıdır). Kerberos, kimlik denetimi sağlayan mekanizmaların istemciler hakkında bilgiye sahip olmadığı klasik internet veya bulut senaryolarında kullanılmak için uygun değildir.
  • Güvenilir istemci gereksinimi, önceden hazırlanmış ortamların (örn., test ortamında kurgulanmış birbirinden bağımsız alanlar, ön-üretim ortamları ve asıl üretim ortamları ) kurulamasını güçleştirebilmektedir, ki bu durumu aşmak için ya alanların birbirinden tamamen ayrılmasını engelleyen güvenli alan iletişimleri kurmak ya da her bir ortam için fazladan istemciler tanımlamak gereklidir.

Açıklıklar değiştir

Kasım 2014'te, Microsoft, KDC(Key Distirbution Center)'deki sömürülebilecek bir açıklığı onaran bir yama(MS14-068) yayınladı. Öyle görünüyor ki açılık, kullanıcıların alan(domain) seviyesine çıkacak kadar, haklarını yükseltmelerine(kötüye kullanmalarına) olanak sağlamaktadır.

Ayrıca değiştir

Kaynakça değiştir

  1. RFC 4556, abstract
  2. http://www.zdnet.com/details-emerge-on-windows-kerberos-vulnerability-7000035976/ 11 Nisan 2015 tarihinde Wayback Machine sitesinde arşivlendi.

Genel değiştir

  1. Resource Kit Team. "Microsoft Kerberos (Windows)" 24 Ağustos 2015 tarihinde Wayback Machine sitesinde arşivlendi.. MSDN Library.
  2. B. Clifford Neuman and Theodore Ts'o (September 1994). "Kerberos: An Authentication Service for Computer Networks" 5 Nisan 2007 tarihinde Wayback Machine sitesinde arşivlendi.. IEEE Communications 32 (9): 33–8. doi:10.1109/35.312841.
  3. John T. Kohl, B. Clifford Neuman, and Theodore Y. T'so (1994). "The Evolution of the Kerberos Authentication System". In Johansen, D.; Brazier, F. M. T. Distributed open systems[ölü/kırık bağlantı] (Postscript). Washington: IEEE Computer Society Press. pp. 78–94. ISBN 0-8186-4292-0.
  4. "Kerberos Overview: An Authentication Service for Open Network Systems" 8 Şubat 2014 tarihinde Wayback Machine sitesinde arşivlendi.. Cisco Systems date=19 January 2006. Retrieved 15 August 2012.
  5. "How Kerberos Authentication Works" 2 Nisan 2015 tarihinde Wayback Machine sitesinde arşivlendi.. learn-networking.com. 28 January 2008. Retrieved 15 August 2012

RFC değiştir

  • RFC 1510 The Kerberos Network Authentication Service (V5) [Obsolete]
  • RFC 1964 The Kerberos Version 5 GSS-API Mechanism
  • RFC 3961 Encryption and Checksum Specifications for Kerberos 5
  • RFC 3962 Advanced Encryption Standard (AES) Encryption for Kerberos 5
  • RFC 4120 The Kerberos Network Authentication Service (V5) [Current]
  • RFC 4121 The Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Mechanism: Version 2
  • RFC 4537 Kerberos Cryptosystem Negotiation Extension
  • RFC 4556 Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
  • RFC 4557 Online Certificate Status Protocol (OCSP) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
  • RFC 4757 The RC4-HMAC Kerberos Encryption Types Used by Microsoft Windows [Obsolete]
  • RFC 5021 Extended Kerberos Version 5 Key Distribution Center (KDC) Exchanges over TCP
  • RFC 5349 Elliptic Curve Cryptography (ECC) Support for Public Key Cryptography for Initial Authentication in Kerberos (PKINIT)
  • RFC 5868 Problem Statement on the Cross-Realm Operation of Kerberos
  • RFC 5896 Generic Security Service Application Program Interface (GSS-API): Delegate if Approved by Policy
  • RFC 6111 Additional Kerberos Naming Constraints
  • RFC 6112 Anonymity Support for Kerberos
  • RFC 6113 A Generalized Framework for Kerberos Pre-Authentication
  • RFC 6251 Using Kerberos Version 5 over the Transport Layer Security (TLS) Protocol
  • RFC 6448 The Unencrypted Form of Kerberos 5 KRB-CRED Message
  • RFC 6542 Kerberos Version 5 Generic Security Service Application Program Interface (GSS-API) Channel Binding Hash Agility
  • RFC 6560 One-Time Password (OTP) Pre-Authentication
  • RFC 6649 Deprecate DES, RC4-HMAC-EXP, and Other Weak Cryptographic Algorithms in Kerberos
  • RFC 6784 Kerberos Options for DHCPv6
  • RFC 6803 Camellia Encryption for Kerberos 5
  • RFC 6806 Kerberos Principal Name Canonicalization and Cross-Realm Referrals
  • RFC 6880 An Information Model for Kerberos Version 5

Konuyla ilgili yayınlar değiştir

  1. "Novell Inc's Comment to the Proposed Settlement between Microsoft and the Department of Justice, pusuant to the Tunney Act" 4 Mayıs 2007 tarihinde Wayback Machine sitesinde arşivlendi.. Civil Action No. 98-1232 (CKK): United States of America v. Microsoft Corporation. Department of Justice. 29 January 2002. Retrieved 15 August 2012.
  2. Bryant, Bill (February 1988). "Designing an Authentication System: A Dialogue in Four Scenes" 29 Mart 2007 tarihinde Wayback Machine sitesinde arşivlendi.. Humorous play concerning how the design of Kerberos evolved. MIT.
  3. Hornstein, Ken (18 August 2000). "Kerberos FAQ, v2.0" 6 Aralık 2006 tarihinde Wayback Machine sitesinde arşivlendi.. Secretary of Navy. Archived from the original on 21 May 2006. Retrieved 15 August 2012.

Dış bağlantılar değiştir