Kriptografiye Giriş ve Basit Şifreleme Algoritmaları

Standard

2015031623173367372

1970 lere kadar kriptografi, paylaşılan bir ana anahtara dayanıyordu. Yani şifreleyen bir kişi var şifreleme bu anahtar sayesinde oluyor. Şifrelenen mesaj yine bu ana anahtar tarafından çözülmekteydi. Bu anahtar ayrıca  (secret-key / shared-key / symmetric-key) şeklinde de ifade ediliyor.

Düşündüğünüz üzere anahtar şifrelemesi 3 temele dayanıyordu:

  • Anahtarı oluşturan algoritma (çıktısı sadece anahtar)
  • Şifreleme algoritması( parametre olarak  anahtar ve metin  alır- çıktısı ise şifrelenmiş metin(ciphertext) )
  • Şifre Çözme algoritması (  parametre olarak anahtar ve şifrelenmiş metni alır – çıktısı metin yada hata olur.Tahmin edildiği üzere hatanın sebebi metin veya anahtar da oluşan hatalardır. )

Shift Cipher Algorithm( Sezar Algoritması)

Bu şifreleme metodundaki temel amaç harfin alfabedeki sırasına göre bellirli ölçüde kaydırmaktır. Mesala anahtar olarak c yi seçelim bu durumda her harf, 3 harf ilerletilecektir(shift).(Örnekte ingilizce harfler baz alınmıştır.)

egemenciritoglu

ccccccccccccccc

_______________

hjhphqflulwrjox

Şifreyi çözmek içinse yapılması gereken sadece 3 harf geriye gitmektir.

The Vigenere Cipher Algorithm

Bu algoritmada ise anahtar bir kelime veya cümle olarak seçilir.Tekrar edilerek bütün metin sezar algoritmasındaki gibi çevirilir.Mantıklı olarakta, sezar algoritmasına göre kırılması daha güçtür. Sezar algoritmasında her harf birebir eşleşirken yani metinde her “a” harfine karşılık bir harf vardır. Fakat Vigenere metotunda ise “a” harfine karşılık “e” ve “c” gelebilir çünkü her harfine kaydırma oranı farklı olacaktır.(bknz Sezar Algoritmasında sadece belirli bir miktar kaydırıyorduk.) Tabi anahtarınız ne kadar büyükse(uzunsa) “a” birden çok harfe karşılık gelicek bu yüzden kaydırma oranı arttığından kırılma ihtimali de artacaktır. Örnek olarak anahtar olarak deneme seçelim. Şifrelenecek metin yine egemenciritoglu olsun bu durumda aşağıdaki gibi bir şifreleme oluşacaktır.

şifrelenecek metin : egemenciritoglu

anahtar:                 : denemedenemeden

________________

şifrelenmiş metin:    ilsrrsgnfngtkqi

Peki gerçekten bu algoritmalar güvenli mi ? Sezar algoritması tamamiyle güvensiz çünkü belirli bir kural var her harfi bellirli bir şekilde ilerlettiğimiz için aynı şekilde geri alınabilir. İngilizce metinler için 26 ihtimal türkçe metinler ise 29 ihtimal.Tabi yeterli değil.

Sezar algoritmasında her harfi rastgele kaydırarak mesala bütün a ları e, b leri v ile değiştirerek rastgele bir sıralama ile şifreleyebiliriz. Böyle olunca teorik olarak 29! gibi bir olasılık ortaya çıkacak tabi sadece teorik olarak kalmakta, eğer kırmaya çalıştığımız şifrelenmiş metinin hangi dilde olduğunu bilirsek mesala türkçe olsun. Türkçede kullanılan harf sıklığı bellidir.(bknz: Vikipedi: harf sıklığı)”Türk alfabesinde en yüksek dereceye sahip olan yani en sık kullanılan harfler A, E, İ, N, R, L, üst-orta derecede olanlar I, D, K, M alt-orta derecede olanlar U, Y, T, S, B, O, düşük dereceli olanlar Ü, Ş, Z, G, Ç, H, Ğ, V, C, Ö, P, F, J’dir.” Böyle olunca eğer metin uzunluğu yeteri kadarsa(fazlaysa) tekrar sıklıklarını karşılaştırarak kırmamız çok daha kolay olucaktır.

Vigenere algoritması nispeten daha güvenli çünkü anahtar olarak kelime ne kadar uzun seçildikçe o kadar kaydırılacak olan tekrar oranı azalacaktır. Bu da algoritmayı daha güvenli hale getirecektir. Bir sonraki yazımda Vigenere nin ne zaman ve  neden güvensiz olduğundan bahsedeceğim.

Bizim için şifrelemeyi yapan java kodlarını yazdım. Aşağıda bulabilirsiniz:

Bilgisayar şifrelemesi olunca düşünmemiz gereken ASCII kodları da olmalı bu sebepten yukarıdaki java kodu ingilizce harfleri yine baz almıştır.


 

  1. http://tigger.uic.edu/~jleon/mcs425-s05/handouts/Vigenere-Cipher.pdf
  2. https://en.wikipedia.org/wiki/Caesar_cipher
  3. Enigma

  4. Şifrelerin Matematiği: Kriptografi