SSH
Tatu Ylönen tarafından geliştirilen SSH (Secure shell, Güvenli kabuk) bir bilgisayara uzaktan girmenizi ve orada komutlar çalıştırmanızı sağlayan oldukça basit yapılı bir uygulama. SSH güçlü bir asıllama ve güvenli iletişim gereklerini karşılayarak telnet vb. İletişim kurallarının yerini alıyor. Biri ticari olan iki ayrı isimle piyasada bulunuyor. SSH iletişim kuralının çalışması aşağıdaki şekille özetlenebilir:
İstemcinin gönderdiği asıllama isteğine sunucu açık konak anahtarını ve açık sunucu anahtarını göndererek yanıt verir. Konak anahtar çifti konağa özeldir ve sunucunun kurulması sırasında oluşturulur. Bu anahtar daha sonra değiştirilmez. Sunucu anahtar çifti fazladan güvenlik için eklenmiştir. Genelde saatte bir değişecek şekilde ayarlanır. Konak aldığı bu anahtarlarla yarattığı bir simetrik oturum anahtarını iki kere şifreleyerek sunucuya gönderir. Ayrıca, yaratılan oturum anahtarına şifrelenmeden önce fazladan güvenlik için rastgele sayılar da eklenir. Daha sonra, sunucu oturum anahtarıyla şifrelenmiş bir onay iletisi gönderir. Bu güvenli oturumun ilk iletisidir. Bundan sonraki iletiler oturum anahtarıyla şifrelenmiş olarak iletilecektir.
İstemcinin sunucuyu geçerli sayması için iletişim kuralında herhangi bir tanımlama yoktur. Sunucunun asıllanmasının önceden istemciye yerleştirilmiş bir konak anahtarı - konak adresi listesi ile yapıldığı varsayılır. Listede kayıtlı olmayan bir konak anahtarı ile karşılaşıldığında istemci tarafındaki yazılım kullanıcıyı uyaracaktır. Kullanıcının onayı olursa, istemci yazılım bu yeni konak anahtarıni kaydeder. Sunucu anahtarı hiçbir zaman istemci tarafında kaydedilmez.
Sunucu tarafından kullanıcı asıllaması gerekirse bu iki farklı yolla yapılabilir: Eğer parola ile asıllama yapılacaksa bu parola zaten şifrelenmiş olan hattan gönderilir. Eğer RSA asıllaması yapılacaksa sunucu yarattığı rastgele bir sayıyı kullanıcının açık anahtarı ile şifreleyerek gönderir. İstemci tarafında yazılımın kullanıcının gizli anahtarını kullanabilmesi için bir parola sorulur. Bu parolanın onaylanmasıyla yazılım kullanıcının gizli anahtarı ile metni çözerek yaratılan rastgele sayıyı bulur. Yanıt olarak sunucuya rastgele sayının özü ve bağlantıyla ilgili bazı ek bililer gönderilir.
3. SSL
Netscape Corporation tarafından geliştirilen SSL (Secure sockets layer) iletişim kuralı da SSH’a benzer katmanlara sahiptir. SSH’dan temel farkı, anahtarların elle yönetimi yerine izin belgesi (sertifika) tabanlı kamusal anahtar altyapısını (PKI) kullanabilmesidir. Birçok işletim sisteminde yazılım ile ulaşım katmanı iletişim kurallarının haberleşmesini sağlayan BSD Sockets gibi arayüzler bulunur. SSL, güvenlik düzeneklerini bu arayüzlere taşıyarak tüm TCP/IP iletişimini güvenli kılmak fikri üzerine kuruludur. SSL iletişim kuralının nereye yerleştiği aşağıdaki şekilden görülebilir:
İletişim kuralları yığınında yerleştiği yerden ötürü SSL kullanan yazılımlar ile kullanmayan yazılımların kapı numaraları çakışmaktadır. Bunun çözümü üç şekilde olabilir: SSL destekleyen her bir uygulama iletişim kuralı için yeni bir kapı numarası atanır, alışıldık kapı numaraları kullanılarak güvenlik seçenekleri uygulama iletişim kuralına bırakılır ya da TCP paketlerine SSL kullanılıp kullanılmadığını belirten bir alan eklenir. Şu an için görünen ilk seçeneğin kullanıldığı.
ekilde görüldüğü gibi SSL iki ayrı katmana ayrılır: SSL kayıt katmanı ve SSL tokalaşma katmanı. SSL kayıt katmanı üstündeki iletişim kurallarından aldığı verinin parçalanması, asıllanması ve şifrelenmesi ile ilgilenir. Bu katmanın üzerinde SSL’in diğer katmanları çalışır. Bunların en önemlisi tokalaşma iletişim kuralıdır.
SSL tokalaşma iletişim kuralının ereği sunucu ile istemci arasında bir bağ oluşturmak, şifreleme, sıkıştırma kurallarını belirlemek, gerekirse tarafları asıllamak, oturum için gerekli anahtarları oluşturmaktır.
asıllanıyorsa CERTIFICATE iletisi gönderilir. Asıllama için sadece sunucunun anahtarını denetleyeceksek SERVERKEYEXCHANGE iletisi gönderilir. Sunucu bu aşamanın bittiğini SERVERHELLODONE iletisiyle belirtir. Daha sonra, istemci anahtar değişimini başlatacak iletiyi gönderir. Bu aşamada da seçime bağlı iletiler vardır. Anahtar değişimi genellikle Difie-Hellman yöntemiyle olur. Şifreleme şartları da karşılıklı bildirilerek bağ kurulur.
Eğer daha önceden kurulmuş bir oturum varsa her iki tarafında onayıyla bu oturuma devam edilmesi olasıdır.
Ciddi bir güvenlik açığı barındırmayan SSL, internetin en sık kullanılan güvenlik iletişim kuralıdır. Ticari ve açık geliştirilmiş çeşitlerine kolay erişilebilir. Tek sorun, Amerikan dışsatım yasalarının kriptografiye izin vermemesidir. Bu sebeple uluslararası sürümleri güçsüz anahtarlarla çalışırlar.
4. PCT
PCT (Private communication technology, kişisel iletişim teknolojisi) Microsoft tarafından 1995 yılında Netscape’e karşılık vermek amacıyla çıkarılmış, temelinde SSL 2.0’dan farkı olmayan bir iletişim kuralıdır. Dört ileti ile bağ kurulur. PCT kayıt iletişim kuralı üzerinde çalışan PCT tokalaşma iletişim kuralından oluşan iki katlı bir yapısı vardır.
5. TLS
IETF tarafından SSL 2.0, SSL 3.0, SSH 2.0 ve PCT 1.0 temel alınarak geliştirilmiştir. İlk taslağı SSL 3.0 taslağı kopyalanarak oluşturulmuş, daha sonra üzerinde değişiklikler yapılmıştır. Öncelikle HMAC yapısı geliştirilmiş ve IPSec TLS’de kullanılır şekle getirilmiştir. SSL’de bulunan yayınlanmamış teknolojiler taslaktan çıkarılmıştır. TLS kayıt ve tokalaşma iletişim kuralları ayrılarak geliştirilmiş ve belgeleri hazırlanmıştır. Tüm bunların yanında geriye uyumu sağlamak amacıyla TLS 1.0 SSL 3.0 ile çalışabilecek şekilde tasarlanmıştır. Kerberos asıllamasının ve parola asıllamasının taslağa eklenmesi önerilmiştir.
6. Sonuçlar
Anlatılan iletişim kuralları arasında önümüzdeki günlerde varlığını sürdürecekmiş gibi görünen, SSL’in devamı olan TLS ve SSH. Küresel anlamda SSL’in bügün dahi yaygın kullanıldığını görüyoruz. SSH ise daha küçük ağlarda da olsa aynı seviyede yaygın kullanılıyor. İlginç bir çalışmada SSH’in sunucu anahtarlarını karşıdan yüklemek ya da karşıya yüklemek için SSL ya da TLS kullanılıyor. Yaygın olmamakla birlikte ilk örneği UNIX dizgeler için deneme amaçlı çalıştırılmakta.
SSL ve TLS’nin uygulama iletişim kurallarının yapılarını değiştirmediğini ve bu sebeple ancak geçici bir çözüm olarak ele alınması gerektiğini savunanlar da olduğunu söylemek gerek. Bundan başka bu iletişim kurallarının bağ merkezli olması dolayısıyla karşılaşılan götürüleri var. Örneğin, UDP ile iletişim kurmak olası değil. Dahası, vekil sunucular kullanıldığında bu iletişim kuralları işlerliklerini yitireceklerdir çünkü bu iletişim kuralları ortadaki adam saldırılarını engellemek üzerine kuruludur. Bunu engellemek için vekil sunucular yerine güvenlik duvarları, paket süzgeçleri getirilebilir ya da tünelleme yapılabilir. Bu hâlde de aynı kapı numarasıyla güvenlik mekanizması içermeyen bir hizmete saldırı yapılabilecektir.
Tamamına bakıldığında, bu katmandaki iletişim kurallarının hiçbirinin trafik çözümlemesine ya da sel (flooding) saldırılarına karşı savunması olmadığı gözden kaçmamalıdır.