Kriptoloji yazı dizisinin üçüncü yazısında üç farklı algoritmayı işleyeceğiz. Bunlar mono alphabetic, one time pad, ve vigenere algoritmaları.
Yazı dizisin diğer yazılarına aşağıdan ulaşabilirsiniz.
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 karakterler, 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.
A | B | A XOR B |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
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 ikili 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 oluşturulan 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, metni yukarıdan, anahtarı soldan seçelim :
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
Z
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
U
|
J
|
K
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
T
|
U
|
V
|
W
|
X
|
Y
|
X
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
U
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
V
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
W
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
X
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
Y
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Z
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
X
|
Y
|
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:
https://www.dcode.fr/vigenere-cipher
Hepinize iyi çalışmalar, sorularınızı yorum olarak iletebilirsiniz.