Blog

Kriptografi Algoritmaları: Vigènere

Kriptografi Algoritmaları: Vigènere

Hatırlanacağı gibi Sezar şifrelemesinde, her bir harf belli sayıda kaydırılarak bir şifre alfabe elde ediliyordu. Şifreleme işlemi boyunca tek bir şifre alfabe kullanıldığı için bu aileden algoritmalar tek alfabeli, düz metindeki her bir harf bir şekilde başka bir harf ile yer değiştirildiği için bu aileden algoritmalar ikame algoritmaları olarak isimlendirilmişti.

 Tek alfabeli ikame algoritmaları için genel şifreleme fonksiyonu

En=x+n (mod 29)

deşifre fonksiyonu

Dn=x-n (mod 29)

şeklinde verilmişti. Kaydırma değeri 3 olduğu durumda, orijinal Sezar şifrelemesi elde ediliyordu. İlginç olan şu ki, Türkçe alfabe ile tekil alfabeli üretilecek şifrelerin sayısı 10 üzeri 30 mertebesindedir (milyar kere trilyon kere trilyon). Fakat bütün tekil alfabeli bütün şifreleme metodlarının en zayıf noktası, frekans analizidir. Şifre kırarken frekans analizinden ilk bahseden, Risale fî İstihrâc’ul Muammâ (Şifreli Mesajların Deşifre Edilmesi Hakkında Kitapçık) adlı el yazmasında, Kindî’dir. Şöyle diyor:

“Şifreli bir mesajı çözmenin yollarından biri de, eğer hangi dilde yazıldığını biliyorsak, aynı dilde yazılmış bir yaprak veya yaklaşık uzunlukta başka bir metin bulmak ve harflerin bulunma sıklıklarını saymaktır. En sık geçen harfi birinci, ikinci en sık geçeni ikinci… olarak işaretleriz ve böylece düz metindeki bütün harfleri işaretlemiş oluruz.

Daha sonra çözmek istediğimiz şifreli mesajı alırız ve ondaki sembolleri sınıflandırırız. En sık geçem sembolü alır ve düz metinde en sık geçen harf ile yer değiştiririz ve böylece bütün harfleri eşleştirmiş oluruz.”

Farklı dillerde harflerin geçme sıklıklarına dair çok fazla çalışma yapılmıştır. Türkçe metinler için Serengil ve Akın’ın şu çalışmasına bakılabilir: http://www.wseas.us/e-library/conferences/2011/Cambridge/NEHIPISIC/NEHIPISIC-20.pdf. Veya daha iyisi, Zemberek sözlüğü üzerinde yazılacak kısa bir programla, harf sıklıkları hesaplanabilir. Bu çalışma, bir adım ileri götürülerek, sözlük çeşitli internet siteleriyle (mesela haber siteleri) beslenerek daha doğru ve güncel bir frekans listesi oluşturulabilir.

Frekans analizine karşı geliştirilmiş metodlardan biri, çoklu alfabe kullanımıdır ve bu aileden algoritmaların atası Vigènere şifrelemesidir.   

 

Klasik Vigènere tablosu şu şekildedir:

 

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

b

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

c

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

ç

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

d

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

e

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

f

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

g

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

ğ

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

h

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

ı

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

i

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

j

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

k

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

l

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

m

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

n

n

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

o

o

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

ö

ö

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

p

p

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

r

r

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

s

s

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

ş

ş

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

t

t

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

u

u

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

ü

ü

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

v

v

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

y

y

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

z

z

a

b

c

ç

d

e

f

g

ğ

h

ı

i

j

k

l

m

n

o

ö

p

r

s

ş

t

u

ü

v

y

 

Dikkat edilirse bu, alfabedeki harf sayısı kadar, kaydırma değeri bir olan Sezar şifre alfabenin oluşturulması işlemidir. Daha sonra bir anahtar seçilir. Anahtarımız “cezeri” olsun.

Anahtar

c

e

z

e

r

i

c

Düz Metin

m

e

r

h

a

b

a

Şifrelenmiş Metin

o

ı

p

l

r

j

c

 

Eğer anahtar düz metinden kısaysa, anahtar düz metinle aynı boya gelene kadar tekrar tekrar yazılır. Daha sonra şifreleme şu şekilde yapılır: Aynı sırada, anahtardaki harf satır, düz metindeki harf sütun olacak şekilde kesişimi bulunur ve şifrelenmiş harf elde edilir.

Çoklu alfabeler için şifreleme fonksiyonu

EnMn+Kn mod l (mod 29)

Deşifre fonksiyonu

Dn=EnKn mod l (mod 29)

Burada M düz metin mesajı, K anahtarı, l anahtar uzunluğunu belirtir.

Çoklu alfabe şifrelemelerinin deşifresiyle ilgili ilk yayını Kasiski yapmıştır. İlgili kitaba şuradan ulaşılabilir: https://www.amazon.com/Die-Geheimschriften-Dechiffrirkunst-Ber%C3%BCcksichtigung-franz%C3%B6sischen/dp/0543790460.

Kasiski İncelemesinin (Kasiski Examination) amacı, anahtar uzunluğunu bulabilmektir. Şifrelenmiş mesajda 3 veya daha fazla karakter uzunluklu tekrarlı harf gruplarına bakılır. İki beliriş arasındaki uzunluk, mesaj uzunluğunun tam katıdır. Tekrarlar arası uzunlukların en büyük ortak böleni, mesaj uzunluğudur. Mesaj uzunluğu bir kere elde edildikten sonra mesaj şu şekilde deşifre edilir: Şifrelenmiş mesajın her n. harfi aynı grup altında toplanır ve tekli alfabe ile şifrelenmişçesine (ki öyledir) muamele edilir; mesela frekans analizi uygulanır.

Kasiski İncelemesi’nin elle yapılması çok zordur, bilgisayar programı kullanılması neredeyse zorunludur. Kriptanalist, tekrarlı yapılara bakarken çok dikkat etmesi gerekir zira bazı tekrarlar tamamen tesadüf olabilir.

Dikkatli bir okuyucunun gözünden şu kaçmayacaktır: Anahtar uzunluğu ile mesaj uzunluğu aynıysa, Kasiski İncelemesi hiçbir işe yaramaz. Fakat bu durum, pratiklikten çok uzaktır.

Kaynak kod:

#include <iostream>

#include <string>

 

using namespace std;

 

char alfabe[30] = "abcçdefgğhıijklmnoöprsştuüvyz";

 

char alfabeler[30][30];

 

string Vigenere(string metin, string anahtar) {

 

       for (int i = 0; i < 29; i++) {

             for (int j = 0; j < 29; j++) {

                    alfabeler[i][j] = alfabe[(i + j) % 29];

             }

       }

      

       string sifreli_metin;

 

       int satir, sutun;

       for (int m = 0; m < metin.length(); m++) {

             for (int n = 0; n < 29; n++) {

                    if (metin[m] == alfabe[n]) {

                          sutun = n;

                    }

                    if (anahtar[m % anahtar.length()] == alfabe[n]) {

                          satir = n;

                    }

             }

            

             sifreli_metin += alfabeler[satir][sutun];

       }

 

       return sifreli_metin;

      

}

 

int main()

{

      

       string anahtar = "cezeri";

       string metin = "merhaba";

       string sifreli_metin = Vigenere(metin, anahtar);

 

       setlocale(LC_ALL, "Turkish");

       cout << sifreli_metin;

 

}

Not: Dekripsiyon kodu alıştırma olarak bırakılmıştır. 

 




Yazar Hakkında

 

İstanbul Teknik Üniversitesi Kimya-Metalurji Fakültesi’nden mezun oldu. Lisansüstü çalışmalarını TÜBİTAK ve İTÜ bünyesinde süperiletkenlik teorisi, computational quantum ve computational science alanında yaptı. Kuantum mekaniği, süperiletkenlik teorisi ve matematik konusunda akademik veyarı-akademik yayınlar yaptı. Medikal görüntüleme ve TV yayıncılığı alanında birçok özel sektör firmasında mühendis olarak çalıştı. Halen TRT-World bünyesinde Ar-Ge mühendisi olarak çalışmaktadır.







Yorum Yapmak İçin Giriş Yapın.