Encription & Decription Şifreleme Algoritmaları

Tarih: Pazartesi, Ocak 11, 2010 Kategori: Genel
Algoritma konusunu en iyi şifreleme teknikleri ile işleyebileceğimi düşündüm.
Bu nedenle şifrelemeye kısaca göz atmak istiyorum.II. Dünya savaşında Alman denizaltı şifresi enigma’nın çözülebilmesi savaşın dengesini değiştirmişti. Bu düşünce lise yıllarında bana kendi şifreli dilimi geliştirmeye itmişti. Her harfin yerine başka harfler oluşturmuştum. Harfler tamamen kendime özel olduğu için yazdığımın çözüleceğine olanak tanımıyordum. Yıllar sonra kendi günlüğüme almış olduğum bu şifreli alfabedeki notları (alfabeyi unuttuğum için) okumakta zorlandığımda kendim çözmek için çaba sarfettiğimde çözülebileceğini keşfetmiş oldum.

Klasik harf değiştirme yöntemleri ile elde edilen şifreli dillerin çözümü için. O dil’in yapısı hakkında bilgi sahibi olmanız yetiyor. (Örneğin Türkçe de en çok A, E kullanılır sesli olduğu ve seslilerin sessizlere oranla az olduğu için). Ve bu kısa bilgi sayesinde cümle içinde en çok kullanılan karakteri aratıyorsunuz. Ve bu harf’in A olduğunu varsayıp okumaya çalışıyorsunuz. Nihayetinde bir kaç denemeden sonra diğer harfler kendini ele veriyor.

Yüz yıllar öncesinden beri gelen harf kaydırma teknikleri de aynı şekilde çözülür.

yusuf turan fırat yerine harf kaydrıma ile (kendinden bir ya da x sonraki harfi yazma)
zyşyg uvsbo gisbu kullanılarak harf kaydırma şifresi oluşturuluyordu.

Oysa bu gün SSL dediğimiz güvenli şifreleme sistemlerinde ise özet olarak;

RSA Public Key Sistemi Örnek
Hem p’nin hem de q’nun asal olduğu p ve q seçilir. P =11; q=13;
Mod alınacak değer hesaplanır n = pq. N = 11*13 = 143.
Euler’s totient fonksiyonu uygulanır t = (p-1)(q-1). t = (11-1)*(13-1) = 120.
T değeri ile en büyük ortak böleni 1 olan bir e değeri hesaplanır. e = 7. (7<120, ve 7 ve 120 nin en büyük ortak böleni 1 dir
e*d = 1 mod t olacak şekilde d değeri hesaplanır 7*d = 1 mod 120 => d = 103,
çünkü
7*103 = 721 = 1 mod 120.
public key (e, n). public key (7, 143).
Private key (d, n). private key (103, 143).
Plaintext M olsun. M = 5 kabul edelim.
ciphertext C = M^e mod n. Ciphertext:
C = 5^7 mod 143= 47
Şifre çözme işlemi =>
plaintext = C^d mod n = (M^e)^d mod n = M.
Plaintext:
47^103 mod 143 = 5
47^103 = (5^7)^103 = 5^721
= 5*[5^720] =5*[(5^120)^6]
= 5*[ 1^6] = 5.

5^120 = 5^t = 1 mod 143 (Euler teoremi)veya,
daha basitçe,
x^(e*d) = x; bu sebepten, 5^721 = 5’tir.

Bunun gibi 64 bit, 128 bit ya da 256 bit gibi şifreleme yöntemleri uygulanmaktadır.
Bu tür şifreleme yöntemlerinde işlemci şifrelemek yada çözmek için gönderilen her tür veri için zaman kaybetmekte ve şifreleme şifre çözme işi sunucuyu bu oranda zorlamaktadır.
Ancak şifre algoritması ne kadar yüksekse çözülme kırılma olasılığıda o düzeyde zor olacaktır. Ticari işlemler, bankacılık işlemleri, özel mesajlaşma yöntemleri, ulusal güvenlik kuruluşları, uluslar arası gizli kuruluşlar bu yöntemle bilgi alışverişini kullanmaktadır.

 Ben Algoritma’mı kendim oluşturduğum ve anahtarlarının, çözümünün daha da kolay ve anlaşılır olduğu bir yöntem kullanacağım. Ancak metin şifrelendikten sonra anahtarları ele geçirmeden şifrenin çözülmesinin mümkün olmayacağı bir yöntem olacak.

Öncelikle algoritmamı anlatayım;

Yine her harf’e bir numara vererek bu işe başlayacağız. Bu işi ileride geliştirmek isteyenler, harflere 256 ascii karakterlere, karakter numarasına başvurarak çalışma yapabilir.

x grubu : A=1 ‘dir
y grubu : B=2 ‘dir

Cümlemiz ALİ olsun

Cümle grubu: A=1 , L=15 , İ =12
Şifreleme tekniğimiz şu olsun: Cümle grubu1 + x grubu1 – ygrubu1 , Cümlegrubu2+xgrubu1-ygrubu1 ….

Buna göre formülümüz

A+A-b = 1+1-2=0
L+A-b = 15+1-2=14
İ+A-b = 12+1-2= 11

ALİ = 1,15,12 olarak tanımlıyken şimdi şifreli olarak 0,14,11 oldu
anahtar harflerimiz A ve B eğer bu iki harfi biliyorsak çözüm çok kolay olacaktır.
0 +2 -1 = 1 = A
14 +2-1=15 = L
11+2-1= 12 = İ

Sonucu elde edilir.
Ancak, bu çok ta basit bir yöntem oldu farkedeceğiniz gibi. Zaten bende basit olsun kolay anlaşılsın diye kısa yoldan anlattım. Şimdi algoritmamıza biraz zorluk katalım.

Bunun için anahtar’ın dişlilerini artırmamız gerekecek.

Diyelimki x grubu anahtarımız FIRAT y grubu anahtarımız ise İSTANBUL olsun.
x grubu : FIRAT
y grubu : İSTANBUL
Cümle Grubu : KULLANICI ADINIZ STURK

Buna göre şifreleme yapacak olursak
cümle grubu1 + x grubu1 – ygrubu1 = K+F-İ = 14+7-12 = 9
cümle grubu2 + x grubu2 – ygrubu2 = U+I-S = 26+11-23=14
cümle grubu3 + x grubu3 – ygrubu3 = L+R-T = … şeklinde giderse sonuç şu olur.

K + X - Y = S    
K + F - İ = 14+7-12 9 Ğ
U + I - S = 26+11-23 14 K
L + R - T = 15+22-25 12 İ
L + A - A = 15+1-1 15 L
A + T - N = 1+25-17 9 Ğ
N + F - B = 17+7-2 22 R
I + I - U = 11+11-26 -4  
C + R - L = 3+22-15 10 H
I + A - İ = 11+1-12 0  
  + T - S = 0+25-20 5 D
A + F - T = 1+7-25 -17  
D + I - A =     … şeklinde devam eder.
I + R - N =      
N + A - B =      
I + T - U =      
Z + F - L =      
  + I - İ =      
S + R - S =      
T + A - T =      
U + T - A =      
R + F - N =      
K + I - B =      

Burada dikkat edilmesi gereken noktalar,

1. sıradaki K harfinin karşılığı Ğ çıktığı gibi 5. sıradaki A harfinin karşılığı’da Ğ harfi çıkmıştır.

2. dikkat edilmesi gereken nokta ise -4, -17 gibi çıkan negatif değerlerdir.

- (negatif) çıkan değerlerin’de çözülebilir bir değer olabilmesi için Mod alma yönetmini uygulayacağız. (Bu tür yöntemleri işi daha da karıştırmak, zorlaştırmak için uyguladım) Örneğin -4 değerini aldığımız I+I-U : 11+11-26 = -4 değerini aldığımız formül üzerinden gidelim. Bunun için önce mod alacağımız bir sayı bulmamız gerek. Ben bu örnekte mod alınacak sayı olarak 32 sayısını buldum. a-z’ye kadar 29 , 0=’boşluk’, 30=’:’ 31=’ ” ‘ 32=’.’
Bu karakterleri de katarak 32 karakterden oluşan bir alfabe kullanmış oldum.

Mod 32 kabul ederek işlemimize devam edelim.
I+I-U formülünü mod((I+I-U),32) şeklinde yeniden kurgulayalım. Mod((11+11-26),32)
sonuç olarak 28 rakamını elde ederiz. Ancak burada dikkat etmemiz gerekn şudur.
Biz cümlemizde hangi kelimenin – sonuç hangisinin + sonuç vereceğini tahmin edemediğimiz için tüm formülü Mod içine alarak yeniden yapmamız gerekecektir.

DECRYPTION YÖNTEMİ
Formülü tersten uygulamamız sonucu verecektir. Yeterki anahtar kelimeleri ve sırasını (hangi anahtar kelime x hangi anahtar kelime y) bilelim.
Şifreleme yöntemimiz S = K+X-Y ‘idi. (S=Şifre, K= Kelime, X = Anahtar1, Y= Anahtar2)
Şimdi S’yi biliyoruz K ‘yı bilmiyoruz, X ve Y’yi biliyoruz.
örneğin ilk harf için;
Şifrede elimizde olan harf = Ğ, X= F, Y=İ ‘dir
Ğ=9 , F=7, İ=12
Ğ= K + F – Y
9 = K + 7 – 12 olduğuna göre K’yı yalnız bırakmak için K=S-X+Y
K= -7 + 12 + 9 olur.
K= 14 tür. Yani K = K ‘dır. (K(Kelime) = K (Kullanıcı adınızın ilk harfi olan K) ‘dır.
Ancak çözüm yolu içinde de mod alma yöntemini aynen uygulamak durumundayız. Çünkü şifrelerken mod alarak şifreleme yapmıştık.
Bu durumda formül
K= MOD(S) – X + Y ‘dir.

Bu formülü daha da zorlaştırmanın bir yolu’da şudur.

FIRAT ve İSTANBUL gibi kullanılan anahtarların yanına rakamlar koymaktır. Örneğin FIRAT4578 gibi. Bu da şu anlama getirilerek kullanılmalıdır.
FIRATFIRATFIRATFIRATFIRAT şeklinde yan yana kullanılacak şifreleme anahtarı’nda
1. seferde FIRAT 4 ile toplanacak. F= 7 + 4= 11 , I=11+4=15, R=22+4=26 gibi.
2. FIRAT yazılımında 4578′in ikinci karakteri olan 5 ile toplnacak böylece anahtar her seferinde farklı değerlerle çarpılmasını sağlayacaktır.
Bu yöntemle de daha da karmaşık hal alan şifrenin anahtarlar olmadan çözülebilmesi milyonda bir ihtimal bile değildir.

Şifreleme ve çözme konusunu ileride daha derinlemesine belkide örnekleriyle ele alabilirim. Şimdilik bu kadar yeter.

[Not: Bu metin tamamen Yusuf FIRAT tarafından oluşturulmuştur. İzinsiz alınması, kullanılması yasaktır. Yusuf FIRAT]

 

—————————————–

İşte gelişimini anlatmış olduğum yukarıdaki yöntemin üzerine şöyle bir yöntem düşün ki, 128 bitlik ya da 256 bitlik şifrelemeler nasıl olduğu hakkında yorumlarınız daha net oluşsun.

Örneğin : Kimsenin bilmesini duymasını istemediğimiz ve sadece parolayı bilecek kişinin bilmesini istediğimiz gizli kelime : “aba baba” olsun. Ve bu şifrenin çözülmesi için gerekli parola ise, Adivar Super Gazi olsun.

Şifreleme yukarıdaki algoritmaya göre şöyle yapıldığını düşünün.

1. Parola’yı mod alma sayısı olarak kullanacağız. Örn: Adivar = A+D+İ+V+A+R = 1+5 + 9 + 27+ 1+20 = 63 = 6+3 = 9 yani mod 9 üzerinden işlem yapacağız.

2. Parola olan Süper ve 3. parola olan Gazi kelimelerinin ilk harflerine göre mod 9 cinsinden gizlenmesi gereken cümleyi analiz edelim.

Önce aba ‘yı analiz edelim.

a = 1  (aba’nın 1. harfi olan a ‘nın alfabedeki sırası)
S= 21 (Mod 9′a göre 3)
G= 9 (mod 9′a göre 9)
a+S+G= 1+3+9 = 13

şimdi ekranda 13 yazınca biz onun a olduğunu anlayacağız.

Ancak aba kelimesinin 3. harfi olan a için tekrar aynı motoru çalıştırdığımızda ise sonuç farklı çıkacak.
Hemen analizi başlatalım
a = (Aba’nın 3. harfi olan a ‘nın alfabedeki sırası)
P= 19 (Mod 9′a göre 1) (Süper in  3. harfi P)
Z= 29 (mod 9′a göre 9) (Gazi’nin 3. harfi Z)

a+p+z = 1+ 1 + 9 = 11
Görebileceğiniz gibi, yukarıdaki örnekte a = 13 idi şimdi ise a = 11  işte aynı harfin bile başka başka sonuçlarla yazıldığı bu algoritmaların çözülme olasılığı bu nedenle çok çok daha düşmektedir.

(Not: Bu makale yusuffirat.com için Yusuf FIRAT tarafından yazılmıştır. Link (Bağlantı) verilmeksizin alınması ve kullanılması yasaktır.)

Yorumlar

Henüz yorum yok.İlk yorumu siz yapamak ister misiniz?

Yorum Yap,Fikrini Paylaş!