Yeni tadlar yeni algoritmalar – Kriptoloji Yazı Dizisi 3

Mono Alphabetic Algoritması

Türkçe’sine bir şey bulamadığım için,  yerine koyma algoritması diyelim bu algoritmaya, zira algoritmada belli karakterler yerine, yine belli karakteler, kelimeler veya kelime grupları (ne isterseniz yani) gelebiliyor. Hemen bir örnek, hemen bir örnek;

A  B  C  Ç  D  E  F  G  Ğ  H  I  İ  J  K  L  ….

J  H  N  M  A  F  C  V  T  Q  P  E  R  T  Y

Yukarıdaki örnek hangi harf yerine hangi harfin geleceğini bize bildiren anahtarımız.

Bu anahtara göre aşağıdaki kelimeyi şifreleyelim,

a ç ı k f i k i r

j m p t c e t e j

jmptcetej olarak şifrelenmiş metini, yine aynı anahtar ile tersten giderek çözmek mümkün.

Aynı yöntemle kelimeleri de şifrelemek mümkün, örneğin, A= Ben, C = EVE, L= GELECEĞİM şeklinde harf – kelime tanımlaları yapılabilir. Bu durumda “ACL” şifrelenmiş metnini “Ben eve geleceğim” şeklinde okuyabiliriz.

Peki bu algoritma ne kadar güvenli ? Sezardan daha güvenli olduğu kesin, çünkü sezarda her harf belli bir sayıda kaydığı için deneme yanılma yöntemiyle çözmek mümkündü. Bu şifreleme de ise deneme yanılma baya bir zaman alacaktır. Bu algoritmanın zayıf yani kullanılan dilde gizli. İstatistiklere göre bir dile ard arda gelen kelime ve harf kombinasyonu çok fazla değil, bu yüzden yerine koyma algoritması çok güvenli bir şifreleme yöntemi değil.

Tek Kullanımlık Şifre (One time pad)  – Vernam Şifrelemesi

Benim hayran olduğum bir şifreleme yöntemi. Birinci Dünya savaşında Almanların çözemeyeceği bir şifre yaratmak amacıyla, AT&t Bell Labs ‘da çalışan Gilbert Sandford Vernam amcamız bulmuş ( Allah razı olsun ).  Bu algoritma basitçe, şifrelenecek metin ile aynı uzunlukta rastgele bir metin yaratıp ikisi arasında xor yapılmasıdır.  Her şifreleme işlemi için farklı bir anahtar yaratığından dolayı, algoritmanın adı one-time-pad yani tek kullanımlık şifre. Xor işlemi kullanacağımız için bir hatırlayalım.

Sağda gördüğünüz gibi xor işlemi aynı bitler için 0, farklı bitler için 1 sonucu dönmekte. Diğer bir deyişle mod 2′ye göre toplama işlemi yapmakta. Biz harfleri binary olarak yazmak yerine ingiliz alfabesindeki sırasını alıp mod 26′ya göre toplama işlemi yapalım. (a=1, b=1 ) gibi.

Şifrelenecek metnimiz yine aynı ama bu sefer türkçe karakter kullanmadan: acikfikir

Aynı uzunluktaki (9 karakter ) rastgele yaratırlan anahtarımız ise, şansımıza anlamlı:  karikatur

a (1) + k (11)  = l (12 mod(26))

c (3) + a ( 1)   = d  (4 mod(26))

i (9) +  r(18)   = a  (27 mod(26))

k (11) + i (9) = t (20mod(26))

f (6) + k (11) = q (17 mod(26))

i (9) + a (1)    = j (10mod(26))

k (11) + t (20) =  e (31 mod(26))

i (9)  + u (21) = d (30 mod(26))

r(18) +  r(18) = j (36 mod(26))

Evet, üşüenmedim neden 8 karakter olarak seçtiğimi bilmediğim metni şifreledim ve sonuç: ldatqjedj

Her ne kadar içinde aynı harflerin geçtiği bir anahtar kullanmaya çalışsamda sonlara doğru sıkıldım gerçekten. Neyse, ne  yaptığımızı anlatalım hemen, metnimizin (açıkfikir) ilk harfi olan “a” ile anahtarımızın (karikatur) ilk harfi olan “k”harflerini önce yukardaki tabloya göre sayıya çevirip, (ingiliz alfabesindeki yerlerini sayıp) topladık. Sonra o sayıya karşılık gelen harfi yine tablodan bulup yazdık.  “k” ve “t” harflerini şifrelemek istediğimizde 26 sayısından fazla (31) bir sayı geldi. Bu durumda ise mod 26 işlemi yaparak, karşılık gelen sayıyı ve sonra da harfi bulduk.

Tek kullanımlık şifreleme algoritması kırılamaz olarak nitelendirilir. Bunun sebebi ise her anahtar rastgele ve bir kere yaratıldığından dolayı, şifrelenmiş metin “ldatqjedj” ele geçse bile bu teorik olarak 9 karakterlik bütün kelimeler olabilir. Eh bununla kocaman bir metni şifrelediğimizi düşünürsek, gerçek metni elde etmek bir hayli (çok çok çok) zor olur.  Gilbert amcamız o zaman harfleri binary olarak çevirip, xor işlemi yapmış. Çok kullanışlı, kolay ve mantıklı öyle değil mi ?

Vigenere Şifrelemesi

Sezar ile tek kullanımlık şifre arasında sıkışmış, yine de saygı duyulması gereken bir şifreleme yöntemi. Blaise de Vigenère tarafından geliştirilmiş. Sezar ile benzerliği harfleri belli sayıda ileri iteklemesi, ama burda her harfi sabit sayıda ilerlemek yerine, bir anahtar kullanarak yapıyoruz bu işi. Tek kullanımlık şifre algoritmasında olduğu gibi anahtarı metin ile  toplayıp mod alma işlemine dayalı. Ama anahtar belli uzunlukta ve sabit. Metnimiz acikfikir , anahtarımız onur ise, a harfini o’sayısı kadar alfabede ileri taşıyoruz. Bu işlemi metinde ki her harf için yapıyoruz. Anahtar biterse baştan kullanıyoruz yani

a  c  i  k  f  i  k  i  r

o  n  u r  o  n  u r  o

a ile o ,  c ile n ‘yi topluyoruz. Bunun için aşağıdaki tabloyu kullanalım, met’ni yukarıdan, anahtarı soldan seçelim

a – o = o

c – n = p

i – u = c

k – r  = b

f – o = t

i – n = v

k – u =  e

i – r = z

r – o = f

Şifrelenmiş metnimiz şu oluyor = opcbtvezf çözmek şifreli metinden anahtarı çıkartıp mod almanız yeterli. İşlemi tersten yapın yani. Bu arada bunun için tek tek uğraşmadım, şu sitede online olarak bu işlemi yapmak mümkün: http://sharkysoft.com/misc/vigenere/

İşimiz gücümüz yok , biz de bir algoritma geliştirelim, “açıkfikir”  şifreleme algoritması

Şimdi şöyle olsun, hıms, bir saniye, tamam tamam olsun. Bu şifrelemede renkleri kullanalım, şöyleki her rengin RGB renk sistemine göre 6 adet hex sayıdan oluşan bir gösterimi vardır. (toplam 24 byte, bir işimize yaramayacak, niye belirttim bilmiyorum.). Sırasıyla ilk iki hex kırmızı yoğunluğunu, diğer iki sayı yeşil, diğer iki sayıda mavi yoğunluğunu belli eder. Bu durumda #FF0000 kırmızı 00FF00 yeşil 0000FF mavi oluyor.

Her harfin ascii tabloda bir hex karşılığı vardır. A 41  C 43 ‘tür. Biz şöyle yapacağız, bu harflerin ascii tablodan hex karşlığını bulup renk kodunun ilk karakterine yerleştireceğiz.

kelimemiz yine acikfikir olsun.

A’nın hex karşılığı 41

Renk kodunun ilk karakterine 41 koyalım geri kalanını rastgele dolduralım yani 41FF0B bu bizim ilk şifrelenmiş metnimiz.

Renk olarak şöyle bir şey:

Şimdi sırayla diğerlerini yapalım

c hex karşılığı 43 – > geri kalanını dolduralım rastgele 4 hex sayıyla 43FCBA

i hex karşılığı 49  -> 49FFFF

k hex karşılığı 4B -> 4B56F1

f hex karşılığı 46 -> 46BCDE

i hex karşılığı 49  -> 493598

k hex karşılığı 4B -> 4B2300

i hex karşılığı 49  -> 49BD5E

r hex karşılığı 52 -> 521FF4

Aslında her seferinde 2 hex sayı kaydırarak yapsaydık daha iyi olurdu, neyse şimdi şifrelenmiş metnimizden bir resim üretelim.

Yukarı ki resmin her bir bloğu acikfikir kelimesinin harflerinden ürettiğimiz rastgele resimlere denk geliyor. Şöyle ;

Yani eğer, her bloğun renk kodunu blup, ilk iki hex sayısının ascii karşılığınu bulursanız şifreyi çözmüş olursunuz …

Böyle bir algoritma aklıma geldiği ve bir de bunu üşenmeden yazıya döktüğüm içim kendimi çok gereksiz hissetim bir an. Belki de ben öldükten sonra değeri anlaşılır ?

Şimdi , en iyisi biraz kitap okuyayım …

Bir daha ki yazıda Des algoritmasının internetteki en güzel anlatılmış şeklini, yazardan iznim dahilinde,  Türkçe’ye çevireceğim.

Hepinize iyi çalışmalar, sorularınızı yorum olarak iletebilirsiniz.

Bu yazı toplam 339 kere görüntülenmiştir.

0saves
Eğer yazıyı beğendiyseniz lütfen yorum bırakın veya diğer yazılardan haberdar olmak için RSS'e üye olun..

İlgili Yazılar:

Yazar Hakkında


Yazar:

Hakkında / İlgi Alanları: Php, Python, Java, Güvenlik, Algoritmalar, Fotoğraf, Kitap, Sinema
Kategori: Güvenlik, August 3rd, 2011

Yazarlarımızdan , bu yazı dahil toplam 30 adet yazı yazmış.

Bir yanıt



Cevap yaz