Kriptoloji neredeyse 4000 yıldır insanlık tarihinde yer almaktadır. Eski Mısırlılardan başlayan bu serüven hala canlılığını sürdürmektedir. Belki de veri ifşalarının ve güvenlik ihlallerinin sıkça yaşandığı günümüz teknoloji dünyasının en önemli konusudur. Bu kadar yıllık geçmişine rağmen kriptoloji hala alengirli duruşunu sergilemekte ve kriptolojiye duyulan antipati ne yazık ki yerini korumaktadır. Kriptoloji her ne kadar uzun soluklu metodoloji ve yöntemler içerse de anlaşılması çok da kolay bir mesele değildir. Kriptolojiye duyulan bu olumsuz bakış açısının altında yatan sebep belki de çok karmaşık ve grift bir mesele olmasıdır.
Kriptoloji temelde iki kısma ayrılır: Bilginin şifrelenmesi olan Kriptografi ve şifreli bilginin çözülmesi olan Kriptoanaliz. Kriptolojide amaç bilginin şifrelenmesi ve bu şifrenin doğru kişiler tarafından çözülmesi sonucu bilginin ilgili kişilere güvenli bir şekilde ulaştırılmasıdır. Binlerce yıllık tarihi boyunca kriptoloji de hep bu amaç hedeflenmiştir. Ancak zaman içinde bu bilgiyi barındıran sistemlerin değişimi ile yöntem ve metodlar farklılaşmıştır. Kriptolojinin kadim tarihinde bu bilgi piramitlere çizilen resimler iken günümüzde ise eposta mesajları, parolalar, hassas veriler veya sunucu-istemci haberleşmesidir. Dolayısıyla günümüzde bilgisayar sistemleri üzerinde çalışan şifreleme yöntemleri söz konusudur. Bu nedenle Kriptolojinin günümüzdeki karşılığı sayısal şifrelemedir.
Sayısal şifrelemede, veriler bir anahtar (key) ile şifrelenir ve okunamaz hale getirilir. Böylece verilerin mahremiyeti sağlanmış olur. Şifrelenmiş veriler ancak şifreleme anahtarı ile tekrar okunabilir bir hale getirilebilir. Sayısal şifreleme yöntemleri simetrik ve asimetrik olmak üzere ikiye ayrılmaktadır.
Simetrik şifrelemede, şifreleme ve şifrenin çözülmesi için aynı anahtar kullanılır. Asimetrik şifreleme de ise verilerin şifrelenmesi ve şifrenin çözülmesi için farklı anahtarlar kullanılır. Bu anahtarlar açık (public key) ve gizli (private key) anahtar olarak adlandırılmaktadır. Açık anahtar tarafından şifrelenen bir veri sadece gizli anahtar ile çözülmektedir. Bu nedenle açık anahtar herkeste bulunabilir ve güvenlik açısından sorun teşkil etmez. Ayrıca açık anahtar ve gizli anahtar arasında herhangi bir ilişki yoktur.
Başlıca simetrik şifreleme algoritmaları arasında AES, DES, RC4 bulunurken, asimetrik şifreleme algoritmaları arasında ise RSA, ECC, Diffe-Hellman gibi algoritmalar yer almaktadır. Özet şifreleme (hashing) algoritmaları arasında ise MD5 ve SHA gibi algoritmalar öne çıkar. Özet şifreleme algoritmaları, veriye dayanarak sabit uzunlukta bir özet değeri (hash) üretir ve bu değerden tekrar veri elde edilemez. Daha çok dosyaların bütünlük kontrolü ve parolaların saklanması için özet şifreleme algoritmaları kullanılmaktadır.
Asimetrik ve simetrik şifreleme algoritmalar karşılaştırıldığında birçok avantaj ve dezavantaja sahiptirler. Örneğin, simetrik şifreleme algoritmaları performans açısından daha iyi olmasına karşın, en büyük sorunlarından biri anahtarın korunması ve şifreleyen ile şifreyi çözen arasındaki anahtar iletimidir. Anahtarın taraflar arasında iletilmesi güvenlik açısından ciddi bir sorun oluşturabilir. Bu nedenle, özellikle sunucu-istemci teknolojilerinde yani ağ tabanlı veri iletimlerinde asimetrik şifreleme kullanılır.
Şimdi gelelim SSL/TLS meselesine. SSL sunucu-istemci mimarisinde iki tarafın şifreli olarak haberleşmesini sağlayan bir protokoldür. SSL zaman içinde ortaya çıkan güvenlik açıkları nedeniyle TLS protokolüne evrilmiştir. Günümüzde en güncel version olarak TLS 1.3 kullanılmaktadır. SSL/TLS protokolleri hem asimetrik hemde simetrik şifreleme algoritmaları kullanır. Veriyi şifrelemek için simetrik şifreleme algoritmaları kullanılır. Burada şifreleme oturum anahtarı ile yapılır. Oturum anahtarının iletilmesinde ise asimetrik şifreleme algoritmaları kullanılır. Sunucu-istemci mimarisinde şifreleme sürecinin başlatılması için öncelikle SSL Handshaking olarak isimlendirilen bir işlem yapılır. Aşağıdaki şekilde SSL Handshaking işlemi detaylı olarak görselleştirilmiştir.
İstemciler ve sunucular SSL/TLS protokolleri ile güvenli bir şekilde haberleşmektedir.
Ancak bir sorunumuz var!
Sunucu gerçekten istemcinin erişmek istediği sunucu mu?
Bu kadar anafor yetmezmiş gibi karşımıza yeni bir kavram daha çıkıyor: Dijital Sertifika.
Dijital sertifika içinde açık anahtarla birlikte kimlik bilgilerini içeren ITU X.509 standardına göre oluşturulmuş bir dosyadır. Kritik olan kısım ise bu dosyada anahtarın ait olduğu kurum veya organizasyona dair kimlik bilgilerinin yer almasıdır. Yani istemci açık anahtarı dijital sertifikadan temin ederken dijital sertifika sayesinde erişmek istediği sunucu sisteminin de kimliğini doğrulamış oluyor.
Sunucu-istemci mimarisinde, örneğin web uygulaması-tarayıcı, şifreli haberleşme için dijital sertifikalar kullanılır. Sunucu ve istemcilerin şifreli bir şekilde haberleşmesi inkar edilemezlik prensibine göre güvenli bir şekilde sağlanmış olur. Böylelikle dijital sertifikalar Kimlik Doğrulama ve Veri Şifreleme fonksiyonlarını yerine getirmektedirler.
Dijital sertifikalar, eşsiz bir özel ve açık anahtar çiftine sahiptir. Bu sertifikalar, sunucu sistemlerine yüklenirken özel anahtar sadece sunucu sisteminin uhdesinde yer alırken, açık anahtarlar istemcilere dağıtılır.
Ancak bir sorunumuz var!
Dijital sertifika ve içerdiği kimlik bilgileri ne kadar güvenilir?
Dijital sertifikaların güvenliği, onu üreten otorite tarafından garanti edilir. Globalsign, Digicert, Comodo ve Verisign gibi global sertifika üreticileri, dünya genelinde kabul görmüş ve birçok tarayıcı, işletim sistemi ve uygulama tarafından güvenilir olarak tanınmıştır. Dolasıyla, bu otoriteler tarafından üretilen sertifikalara genellikle güvenilmektedir.
Bunun yanında, kurumlara ait otoriteler de vardır. Bu otoriteler tarafından imzalanan farklı türde sertifika üretimleri mümkündür. Ancak, bu otoriteler sadece o kuruma ait olduğu için başkası tarafından güvenilir değildir. Bu nedenle, internal otorite olarak bilinirler ve bunlar tarafından üretilen sertifikalar genellikle kurum içinde kullanıma sahiptir. Otorite kurum bünyesinde olduğundan istenilen nitelikte ve geçerlilik süresine sahip sertifika üretilmesi mümkündür.
Verilerin korunması ve güvenli iletiminde dijital sertifikalar büyük önem taşır. İster sunucular ile istemciler arasındaki trafik olsun (data-in-transit) ister sunucuların ve sistemlerin kendileri (data-in-rest) olsun, veri iletiminin ve verilerin şifreli olması güvenlik açısından artık zorunluluktur. Bir çok güvenlik saldırısı (MITM, Spoofing…vb) için şifreleme ve dijital sertifikalar kritik bir önem ihtiva eder. Dijital sertifikaların belli standarda sahip olması da şifrelemenin güvenliği için oldukça önemlidir.
Her ne kadar şifreleme mevzu bahis olunca huş ağaçlarının içinde kaybolsak da, şifreleme ve dijital sertifikalar sistemlerimiz ve verilerimizin güvenliği için müstahkem bir mevzidir.