Merhaba arkadaşlar bu yazımızda verilerimizi şifrelemek istiyoruz fakat nasıl yapacağımız bilmiyoruz. Bu sorumuzun cevabını arıyoruz. Yazımız biraz programlama ve şifreleme bilimleri bilgisi gerektirmektedir. İlk yazımızda kriptolojiyi biraz tanımlamış ve bir örnek vermiştik. İkinci yazımızda temel kriptolojiye giriş yapmıştık ve bir kaç temel algoritmalardan bahsetmiştik. Kriptografik algoritmaların tasarımının nasıl olmasını gerektiği hakkında bahsedeceğim.
Öncelikle en temelde aşağıdaki maddeleri karşılayabiliyor olmalıdır. Her bir madde kriptolojide çok önemlidir. Çünkü şifreleme biliminde her bir bitin bile bir önemi vardır.
- Algoritma iyi tanımlı, anlaşılabilir ve sonlu olmalıdır.
Kullanılan algoritmalar performansı etkileyeceği için iyi tanımlanmış her adımında hangi olayların gerçekleşeceği ve bir başkasının anlayabileceği kadar basit olmalıdır. Her algoritma da olduğu gibi sonlu olmalıdır.
- Giriş/çıkış boyutu mantıklı olmalıdır.
Algoritmamıza giren veri ile çıkan veri arasında sayısal olarak değil mantıksal olarak bir bağ olmalıdır. Burada anlatılmak istenen örnek olarak LFSR algoritmaların da giren veri 5 bit veya 150 bit olması farketmez. Çünkü sonuçta her iki verinin çıkışı da örnek olarak 500 bit olacaktır.
- Anahtar uzunluğu, anahtar uzayı ve anahtar uzayının boyutu mantıklı olmalıdır.
Anahtar uzunlukları verilerimizi güvenli bir şekilde şifrelemek için yeterli olmalıdır. Tam güvenli olabilmesi için anahtar uzunluğu en az 80 bit olmalıdır. Anahtar uzayımız ise tekrar edilemez, tahmin edilemez olmamalıdır. Anahtar uzayımız boyutu kullanılacak sisteme göre ölçülü olmalıdır.
- Yazılım/donanım birlikteliğine dikkat edilmelidir.
Algoritmamızı hazırlarken hangi donanım üzerinde koşacağı ve donanım üzerinde ne kadar performanslı olacağını tahmin edebilmeliyiz. Örnek olarak DES algoritması en iyi performansı kendisi için özel hazırlanmış olan donanım üzerinde vermektedir ve mühendislik harikası olarak görülmektedir. Diğer bir algoritmamız ise AES’tir. AES ise matematik harikası olarak görülmektedir ve bilgisayar veya az donanımlı olan her türlü cihazda iyi bir performans gösterebilmektedir. AES donanı bağımsız bir algoritmadır. Bizde algoritmamızı hazırlarken bunlara dikkat etmeliyiz.
- Performans konularına dikkat edilmelidir.
Bir şifreleme algoritması için en önemli parametrelerden birisi performansıdır. Örnek olarak DES algoritmasını orta seviye donanımlı bir bilgisayar üzerinde çalıştırdığınızda çok iyi bir performans alamazsınız. AES algoritması ise aynı donanımda daha iyi bir performans gösterecektir. Burada DES algoritmasını böyle bir donanımla çalıştığında kötü performans verdi diye kötü bir algoritma olarak anlaşılmamalıdır.
- Uygulamalı kriptoloji kavramına odaklanılmalıdır.
Tüm malzemelerimizi önümüze koyduk. Algoritmamız mükemmel fakat uygulanabilir değil. Böyle bir durumla karşılaşmamak adına düşündüğümüz tasarım hayata geçirilebilir olmalıdır.
- Kriptanaliz ön plana çıkmalıdır.
Kriptanaliz tasarladığımız sistemi analiz ederek sistemin açıklıklarını veya daha iyi bir duruma nasıl getirebileceğimiz konusunda bize yol göstereceği için sistem geliştirilirken sürekli ön planda kalmalıdır.
Sonraki yazılarımızda kriptoloji hakkında daha üst seviye bilgiler aktarmaya çalışacağım. Şifreli günler 🙂
Kaynak: Yrd. Doç. Dr. Fatih Özkaynak