SSL (Secure Sockets Layer) sertifikaları aracılığıyla kullanılan SSL protokolü, internet veya bir bilgisayar ağı üzerinde güvenli bilgi akışını sağlayabilen bir teknolojidir.
SSL sertifikası, bağlanılan web sitesinin kimliğini doğrulayan ve SSL protokolü kullanılarak sunucuya gönderilen ve alınan bilgilerin şifrelenerek aktarılmasını sağlayan dijital bir belgedir. SSL bağlantısı üzerinden paylaşılan bilgiler sadece uygun şifre ve anahtarlar ile okunabilir. Dışarıdan müdahale ile bu bilgilere ulaşılsa bile, bu bilgiler şifreli olduklarından tamamen okunamaz haldedirler.
Bir SSL sertifikası temel olarak aşağıdaki bilgileri içerir:
• Sertifika sahibinin adı/unvanı
• Sertifikanın seri numarası ve son kullanma tarihi
• Sertifika sahibinin açık anahtarı (“public key”)
• Sertifikayı veren kurumun dijital imzası
SSL teknolojisini daha iyi anlayabilmek için, aşağıda açıklayacağımız ve SSL kullanılmadan yapılan bir internet bağlantısını inceleyelim.
SSL kullanılmayan internet bağlantısı: Belirsizlik
Kolay anlaşılması amacıyla, bilgisayarlar arasında internet üzerinde kurulan bir bağlantıyı, iki insan arasında geçen bir telefon konuşması olarak örnekleyelim:
Gerçekte kiminle konuşuyorsunuz?
Telefonla aradığınız kişinin gerçekten aradığınız kişi olduğunu nasıl kontrol edebilirsiniz? Özellikle bu kişiyle daha önce hiç konuşmadıysanız bunu anlamanız imkansızlaşır. Eğer gerçekte aradığınız kişi yerine onun yerine geçmiş biriyle konuşmaya başladıysanız, vereceğiniz bilgilerin kime veya kimlere gideceğini bilemezsiniz.
Konuşmalarınızı başka bir kimse dinliyor mu?
Artık bilindiği üzere bir telefon konuşmasının, konuşan kişiler fark etmeden dinlenmesi mümkündür. İnternet üzerinde ise durum bundan farklı değildir. Belki de internet üzerinde yazdığınız ve gönderdiğiniz pek çok bilgi bazıları tarafından görülebilmekte ve kaydedilmektedir. Böylece kullanıcı bilgileriniz, şifreleriniz, özel bilgileriniz, banka bilgileriniz ve hatta kredi kartı bilgileriniz gibi sizin için en önemli ve hassas bilgileriniz güvenli olmayan bir ağ bağlantısı ile tehdit altına girecektir. Şifrelenmemiş bir internet bağlantısı ile sağlanacak bilgi akışı, özellikle önemli ve hassas verilerin belirsiz bir şekilde aktarılması demektir.
Burada görüldüğü üzere internet üzerinde yapılan bilgi alışverişinde iki temel güvenlik açığı doğmaktadır:
1. Gerçekten doğru bilgisayar veya sunucuya bağlanıp bağlandığımızı bilememek; gerçekten bankacılık işlemleriniz için kendi bankanızın web sitesine mi bağlanmaktasınız? Yoksa aynı bankanın çok benzeri sahte bir siteye önemli bilgilerinizi mi vermek üzeresiniz?
2. İnternet üzerinde paylaşacağınız bilgilerin muhatabınız dışındaki kişilerce ele geçirilip geçirilmediğini bilememek. Acaba girdiğiniz kullanıcı numarası ve internet bankacılığı şifresi kendi bankanıza giderken aynı zamanda da kötü niyetli kişilerin eline ulaşıyor mu?
SSL Teknolojisinin Çalışma Mekanizması
SSL teknolojisi açık anahtarlı altyapılar (PKI), bir başka deyişle çift anahtarlı şifreleme tekniğiyle amacına ulaşır. Normal şifreleme yöntemlerinde, bağlantıya geçen iki taraf birbirleriyle bir şifre veya bir anahtarı önceden paylaşır. Buna istinaden bu şifre veya anahtar hem mesajın şifrelenmesinde hem de mesajın deşifre edilmesinde kullanılır. Ama bu sürekli ve tam bir güvenlik protokolü oluşturmaz; keza kötü niyetli kişiler tarafından ele geçirilebilecek olan bu ortak şifre veya anahtar ile tüm iletilen bilgiler kolayca çözülebilir.
SSL bağlantısı kurulurken, bu şifreleme anahtarının güvenli bir şekilde, tek kullanımlık olarak oluşturulması ve sadece tek bir bağlantı için taraflarca paylaşılması sağlanır. SSL sertifikası sahibi olan sunucuya ait farklı iki anahtar bulunur; açık anahtar (“public key”) ve gizli anahtar (“private key”). Açık anahtar, sertifika içeriğinde yer alan açık bir veridir, gizli anahtar ise sadece sunucunun erişebileceği şekilde güvenli olarak saklanan ve mutlaka gizli kalması gereken bir veridir. Bilgilerin aktarılmaya başlanmasından hemen önce, kurulacak olan anlık bağlantıya özel, tek kullanımlık bir bağlantı anahtarı (“session key”) oluşturulur ve bu tek kullanımlık bağlantı anahtarı, iletişim sağlayacak istemci tarafından sunucunun açık anahtarı ile şifrelenerek sunucuya gönderilir. Sunucu ise, gizli anahtarı ile bu şifreyi çözerek tek kullanımlık bağlantı anahtarını elde eder. Daha sonra her iki taraf, paylaşacakları verileri bu tek kullanımlık bağlantı anahtarıyla şifreleyerek birbirlerine göndermeye başlarlar. Bu işlem karşılıklı olarak bağlantı süresince tekrarlanır.
SSL Bağlantısının Oluşması
Bu noktada konuyu, aşağıdaki şema üzerinden ve adım adım teknik ayrıntılarıyla irdeleyelim:
Adım 1: İstemci, bilgisayar ağı üzerinde bağlanmak istediği sunucuya güvenli olarak bağlanma talebi (https) gönderir. Bu işlem, varsayılan ayarların etkin olduğu durumda, SSL portu olarak tabir edilen 443 portu üzerinden yapılır. Sunucu yapılandırmasına bağlı olarak farklı bir port numarası da kullanılabilir.
Adım 2: Ardından, sunucu SSL sertifikasını istemciye gönderir. Bunun üzerine istemci bu sertifikayı üreten kurumun sağladığı çevrimiçi doğrulama servislerini kullanarak bu sertifikanın geçerliliğini kontrol eder. Ayrıca, bağlantı sırasında kullanılmakta olan web tarayıcısı da bu sertifikayı üreten kurumun güvenilirliğini tarayıcıda önceden tanımlı olan kurumlarla kıyaslayarak kontrol eder. Bu aşamada sunucu, açık anahtarını istemciyle SSL sertifikası aracılığıyla paylaşmış olur.
Adım 3: Eğer tüm kontroller doğrulanırsa, istemci sunucuya tek kullanımlık bağlantı anahtarını (“session key” veya “encryption key”), sunucunun açık anahtarıyla şifreleyerek gönderir.
Adım 4: Sunucu, gizli anahtarını kullanarak şifreyi çözer ve tek kullanımlık bağlantı anahtarını alarak, istemciyle arasında güvenli bir SSL bağlantısı kurar. Böylece, bağlantı süresince bu iki cihaz arasındaki tüm iletişim güvenli bir şekilde devam eder.