Çalışma mantığını en basite indirgeyecek olursak, birbirini mantıksal olarak tamamlayan iki parçadan oluşan anahtarın parçalarından biri (public) encyption ve verify yaparken; diğer anahtar parçası (private) decryption ve signing yapmaktadır. Public anahtar ile encrypt ettiğiniz veriyi sadece private anahtar decrypt edebiliyor iken; private anahtar ile sign ettiğiniz veriyi sadece public anahtar ile verify edebilmektesiniz.
Süreç ise; güvenli iletişime başlayabilmek için istemci, sunucudan ona ait public anahtarını kendisiyle paylaşmasını ister. Public anahtar adından da anlaşılacağı üzere herkes ile paylaşılabilir yapıdadır. Sunucunun public anahtarını alan istemci kendine ait simetrik anahtarı, sunucunun public anahtarıyla encypt edip şifrelenmiş halde sunucuya gönderir. İletişim hattı üzerinden bu şifrelenmiş veriye herhangi yetkisiz biri erişse bile sunucunun private anahtarına sahip olmadığından bu veriyi decrypt edemeyecektir. Sunucu, istemci ile paylaştığı public anahtarın eşleniği olan private anahtarı ile bu veriyi decrypt eder ve istemcinin simetrik anahtarını elde eder. İletişimin geri kalanı istemcinin simetrik anahtarı ile encryption-decryption yapılarak devam edecektir. İletişimin simetrik anahtar ile devam etmesinin sebebi, RSA gibi asimetrik anahtarlar her ne kadar güvenli bir iletişim kurulmasına olanak sağlasa da simetrik anahtarın encrypt-decrypt hızını yetişememektedir.
CPU : i5 8400 (has the AES-NI)
Memory : 16G DDR4
Disk : Inter SSD 1T
OS : CentOS Linux release 7.6.1810 (Core)
OpenSSL : OpenSSL 1.0.2k
Simetrik algoritmaların hız avantajına karşılık, taraflar arasında paylaşılma sorununu gidermiş olması RSA algoritmasını günümüz güvenlik dünyasında en çok kullanılan algoritmalar arasına sokmuştur.
Neden RSA anahtarların key size larında binlerce bit kullanılırken, AES gibi simetrik anahtarlarda birkaç yüz bit fazlasıyla güvenlik sağlamakta?
Öncelikle neden RSA ve AES algoritmaları kullanılan bit size ları arasında fark olduğu ile başlayalım. Bit in alabileceği iki lojik değer olduğu hepimizin malumu 1 ya da 0, dolayısıyla eğer algoritma içerisinde bir açık yoksa bir anahtar ile şifrelenmiş veriyi kırabilmek için 2n adet deneme yapılması gerekmektedir. Ancak asimetrik anahtarlardan olan RSA altyapısı simetrik anahtarlardan farklı olarak rastgele seçilmiş iki prime sayının çoğullanmasına dayandığı için 128-bit lik RSA anahtar, AES-128 de olduğu gibi 2128 anahtar uzayı sağlamaz. AES-128 ile aynı seviyede güvenlik sağlayabilmesi için RSA anahtarın uzunluğunun 15360-bit olması gerekmektedir.
US National Institute of Standards and Technology (NIST) ye göre 112-bit ve üstü uzunluğa sahip simetrik anahtarlar 2030’un sonuna kadar güvenli sayılacaklar. Ancak simetrik anahtarlarda kullanılan 112-bit güvenlik katmanının, asimetrik anahtarlardaki karşılığı 2048-bit tir. Bu yüzden 2013 yılında Google HTTPS bağlantılarında 1024-bit anahtar uzunluğunu 2048-bit e çıkardı. 2031 yılından itibaren kullanılacak anahtarların güvenli sayılabilmesi için; simetrik anahtarların minumum 128-bit, RSA anahtarların minimum 3072-bit key uzunluğuna sahip olması gerekecek. Key uzunluğu arttıkça donanımların kriptografik operasyonlar için ayırması gereken kaynak doğal olarak artacak.
Alışılagelen sunucular üzerinde bu süreçlerin devam ettirilmesi güçleşeceğinden, günümüzde bankacılık sektöründe yaygın kullanılan, kriptografik süreçler için özelleştirilmiş Hardware Security Module (HSM) lerin kullanımının artması ve Elliptic Curve gibi Quantum Computing ataklarına karşı geliştirilen algoritmaların yaygınlaşması beklenmektedir.
-