[TR] Kriptoloji ve Kriptografi nedir?
Herkese merhaba. Bugünkü yazımda, varlığı 4000 yıl önce Mısırlıların iletişim kurmak için kullandıkları hiyerogliflerde yer alan yönteme kadar dayanan Kriptografi kavramından ve bu Kriptografi kavramının alt dalında bulunduğu Kriptoloji biliminden bahsedeceğim.
- Kriptoloji nedir?
Kriptoloji bilimi, aslında temel olarak Kriptografi ve Kriptanaliz kavramlarını da içerisinde bulundurur ve Matematik bilimini kullanarak şifreleme (encryption) & şifreyi çözme (decryption) işlemlerinin arkasındaki mantığı araştırır. Kriptolojiye en basit tabirle şifre bilimi diyebiliriz.
- Kriptografi nedir?
Kriptografi tekniği alt dalında bulunduğu Kriptoloji biliminin aksine, matematiği direkt olarak kullanmadan kriptoloji tekniklerini ve uygulamalarını kullanarak herhangi bir veriyi şifreleme, yani encrypt etme işlemidir.
- Kriptanaliz nedir?
Kriptografinin aksine, Kriptanaliz işlemi Kriptografi kullanılarak encrypt edilmiş bir verinin şifresini çözme, yani decrypt etme ve veriyi analiz etme işlemidir.
Yazının devamında kullanacağımız kavramların tanımını yaptığımıza göre, artık daha özel kavramlardan bahsedip bunlarla ilgili örnekler gösterebiliriz.
- Şifreleme (Encryption) işlemi
Bir veriyi şifrelemek istediğimizde, Kriptoloji bilimi bize bu işlemi yapabilmek için iki adet seçenek sunmaktadır, bunlar Simetrik (Symmetric) ve Asimetrik (Asymmetric) encryption yöntemleridir. Bu kavramların ne anlama geldiğine hızlıca değinelim:
- Simetrik Şifreleme (Symmetric Encryption):
Symmetric Encryption işlemi, aslında yukarıdaki figürden de görebileceğimiz şekilde, bir veri şifrelenirken (encryption) ve şifresi çözülürken (decryption) iki aşamada da aynı Secret Key’in, yani aynı Şifreleme Anahtarı’nın kullanıldığı şifreleme türüdür. Buradan aslında sizlerin de tahmin edebileceği gibi, iki aşamada da aynı anahtarın kullanılması paylaşılan verinin gizliliği ve güvenliği açısından bazı problemler doğurabilir. Simetrik Şifreleme işleminin artılarından veya eksilerinden bahsetmeden önce, öncelikle Simetrik Şifreleme yapan şifreleme algoritmalarına örnek vermemiz gerekirse, bunlara:
- Blowfish Encryption
- AES Encryption
- RC4 Encryption
- DES Encryption
gibi popüler olan ve yaygın şekilde kullanılan şifreleme algoritmaları örnek verilebilir.
- Simetrik Şifreleme’nin avantajları nelerdir?
Simetrik Şifreleme’nin ilk ve belki de en önemli avantajı, son derece güvenli olmasıdır. Örnek olarak AES algoritmasını ele alalım; AES şifreleme algoritması kullanılırken şifrelemek istediğimiz veriye eğer 256-bit seviyesinde bir şifreleme işlemi uygularsak, gerçekten çok çok güçlü bir bilgisayarın bile bu şifreyi brute-force attack yöntemiyle elde etmesi milyonlarca yıl sürebilir. Simetrik Şifreleme yönteminin bu kadar güçlü ve güvenli olmasının sebebi, temelindeki algoritmasının güvenli olmasından kaynaklanmaktadır.
Simetrik Şifreleme’nin ikinci avantajı, çok büyük miktarlarda olan verileri Asimetrik Şifrelemeye göre çok daha hızlı işleyerek şifreler ve şifresini tekrar geri çözer. Bu da yapmak istediğimiz bir şifreleme işleminde performansı arttırmaktadır.
- Simetrik Şifreleme’nin dezavantajları nelerdir?
Simetrik Şifreleme çok güçlü ve güvenli bir algoritmaya sahip olabilir, ancak maalesef bu işlemi yaparken kullanılan şifreleme anahtarı yukarıdaki figürde de görülebileceği gibi encryption ve decryption işlemleri için aynıdır ve bu anahtar encrypt edilmiş veriyi decrypt etmek isteyen karşı taraftaki birine iletilirken ele geçirilirse, gönderilmekte olan veri çok kolay bir şekilde decrypt edilerek ele geçirilebilir. Bu da Simetrik Şifreleme yönteminin en büyük dezavantajıdır.
- Asimetrik Şifreleme (Asymmetric Encryption)
Simetrik Şifreleme yönteminde her şey daha basitti, en azından ilk şemada görülene göre :) Asimetrik Şifreleme yönteminde, Simetrik Şifreleme yönteminden farklı olarak verinin encryption aşamasında bir şifreleme anahtarı (Public Key), decryption aşamasında ise başka bir şifreleme anahtarı (Private/Secret Key) kullanılmaktadır. Peki, nedir bu Public ve Private Key?
- Public Key
Public Key, şifrelemek istediğimiz verinin şifrelemesi aşamasında üretilen anahtardır. Bu anahtar her yerde veya herhangi birinin elinde bulunabilir, Public Key’in başkası tarafından ele geçirilmesi verinin güvenliği / gizliliği bakımından bir problem teşkil etmemektedir çünkü bu anahtar şifrelenmiş verinin decryption işlemi için kullanılamaz. “Madem bu Public Key decryption işlemi için kullanılamaz, o zaman neden var?” sorusu kafanızda canlanmış olabilir, buna da Private Key’i açıklarken değineceğiz.
- Private Key
Private Key, Public Key’in aslında karşıt görevini gerçekleştiren, şifrelenmiş verinin şifresinin çözülme aşamasında, yani decryption aşamasında kullanılan anahtardır. Burada, hem Public Key’in açıklamasının son kısmında akıllarda oluşabilecek soruya yanıt olarak hem de dikkat etmemiz gereken önemli bir nokta olarak, bir Public Key kullanılarak şifrelenmiş bir verinin decryption işlemi sadece o Public Key’e ait Private Key ile çözülebilir, yani buradan bu iki şifreleme anahtarının aslında birlikte kullanıldığını anlayabiliriz çünkü Private Key bir nevi Public Key’i decrypt ediyor. Hepimizin buradan anlayabileceği gibi, Asimetrik Şifreleme ile şifrelenmiş bir veri transferinde asıl korumamız gereken şifreleme anahtarı Private Key’dir.
Public ve Private Key validation işlemine dair daha spesifik bir örnek olarak SSH bağlantısını gösterebiliriz. Hedef bir sunucuya karşı bir SSH bağlantısı açmak istediğimizde, bunu gerçekleştirebilmek için ya bağlantı sağlamak istediğiniz kullanıcının şifresini bilmeniz gerekmektedir ya da hedef sunucu içerisinde tanımlanan ve genellikle “id_rsa” ismiyle yer alan SSH Private Key değerine sahip olmanız gerekmektedir. Aynı işlemi yine genellikle “id_rsa.pub” şeklinde bulunan Public Key dosyasıyla gerçekleştiremezsiniz çünkü sunucu içerisinde bulunan Private Key’i dışarıdan gönderdiğiniz bir Public Key ile validate edemezsiniz, ancak sizin elinizde olan bir Private Key değerini içeride bulunan Public Key değeri ile validate edebilir ve bağlantınızı sağlayabilirsiniz.
Asimetrik Şifreleme algoritmalarına örnek olarak:
- RSA
- Diffie-Hellman
- ECC
gibi çokça kullanılan şifreleme algoritmaları örnek gösterilebilir.
- Asimetrik Şifreleme’nin avantajları nelerdir?
Asimetrik Şifreleme ile Gönderici’den Alıcı’ya gönderilen bir mesajın gerçekten doğru Gönderici tarafından gönderildiği doğrulanabilir.
Asimetrik Şifreleme ile Simetrik Şifreleme’nin en büyük problemi olan anahtar gizliliği problemi çözülmektedir.
En önemli avantajlarından biri ise transfer edilen şifrelenmiş verinin transfer aşamasında herhangi bir şekilde bir değişikliğe uğrayıp uğramadığı alıcı tarafından teyit edilebilir.
- Asimetrik Şifreleme’nin dezavantajları nelerdir?
Asimetrik Şifreleme, Simetrik Şifreleme’ye göre verileri daha yavaş işlemektedir.
Şifrelenen verinin şifresinin çözülmesi için, kullanıcı o verinin Public Key’ine ait Private Key’ine de sahip olmalıdır ancak kullanıcı bu Private Key’i kaybederse şifrelenen veri hiçbir şekilde geriye döndürülemeyebilir.
Günümüzde yaygın bir şekilde kullanılan modern kriptografi methodlarından bahsettiğimize göre, yazımıza son vermeden önce antik çağlarda bile kullanılıp hala günümüzde de kullanılabilen encryption algoritmalarından bahsedebiliriz. Bunlara örnek olarak Roma Hükümdarı Julius Caesar’ın adını taşıyan Caesar Cipher veya 16. yy’da Fransız Kriptoloji Bilimcisi Blaise de Vigenère tarafından geliştirilen Vigenère Cipher’ı örnek verebiliriz.
- Caesar Cipher
Caesar Cipher, algoritması en basit olan encryption algoritmalarından bir tanesidir çünkü aslında bir yer değiştirme algoritmasıdır. En basit haliyle, şifrelenmesi için verilmiş bir metin içerisindeki her karakterin şifreleme içerisinde verilen şifreleme anahtarına göre kaydırılması ile şifrelenir ve şifre çözülürken de aynı işlemin tersi uygulanır.
Örneğin, aşağıdaki figürde “caesar cipher is so easy” şeklindeki bir veriyi “ABCD…XYZ” şifreleme anahtarı ile Caesar Cipher kullanarak encrypt etmeye çalışalım:
Şifreleme işlemi tamamlandığında, aşağıdaki sonucu göreceğiz:
Şimdi tekrar bu mesajı alıp decrypt etmeye çalışalım:
Burada şifreleme işlemini gerçekleştirirken 3 bitlik bir shift işlemi uyguladığımız için direkt olarak “Knowing The Shift” opsiyonunu seçebiliriz, bilmediğimiz durumlarda ise “Brute-Force Attack” opsiyonu seçilebilir:
Görüldüğü gibi, çok basit bir şekilde decryption işlemini gerçekleştirdik.
- Vigenère Cipher
Vigenère Cipher da Caesar Cipher’a benzer olarak bir yer değiştirme algoritmasına sahip olsa da, bu cipher’ı Caesar Cipher ve diğer yer değiştirme algoritmasına sahip encryption algoritmalarından ayıran en önemli farkı, şifreleme işleminin Caesar Cipher’da olduğu gibi her harfe yapılmasındansa bunun yerine şifreleme işlemi her bir karakter bloğuna uygulanmaktadır. Örneğin Caesar Cipher’da yapmış olduğumuz “caesar cipher is so easy” mesajında şifreleme algoritması ilk kelime olan “caesar” da ve diğer kelimelerde de her harf için çalışırken, Vigenère Cipher’da “caesar” kelime bloğu için tek seferde çalışacak ve şifreleme işlemi bütün bloğa uygulanacaktır.
Caesar Cipher’da yapmış olduğumuz gibi, bu sefer de “vigenere cipher is so easy” mesajını Vigenère Cipher kullanarak şifrelemeye çalışalım:
Yine görmüş olduğumuz gibi şifreleme işleminde kullanılacak anahtar olarak “ABCD…XYZ” anahtarını kullanmaktayız. Şifreleme işlemi tamamlandığında, aşağıdaki sonucu görmekteyiz:
Ve son olarak yine encrypt edilmiş mesajı decrypt ettiğimizde, ilk baştaki sonuca ulaşacağız:
Gördüğümüz gibi, encrypt edilen mesajı basit bir şekilde decrypt ettik.
Bu yazı ile ilgili bahsetmek istediklerim bu kadardı, yazımı okuduğunuz için teşekkür ederim.
Kaynaklar: