En Eski İlkel Şifreleme Yöntemleri (Kriptoloji)

En eski zamanlardan beri insanlar iletişim kurarken mesajlarını gizleme ihtiyacı duymuşlardır. Çok daha ilkel şifreleme yöntemleri kullanan bu dönemler, mekaniğin ve elektronik cihazların hayatımıza girmesiyle epey bir yol katedmiştir. Öyleki ilk başlarda mekanik düzeneklerle oluşturulan şifreleme methodları artık bilgisayarlar tarafından oluşturulmakta, çözümü için yine hızlı bir bilgisayara ihtiyaç duymaktadır.

Günümüzde şifreli metinleri çözebilmenin yöntemi süper bilgisayarlar tarafından bile yıllar alabilecek sürelere ulaşmışken, bilgisayar tarihçesinin başlarında şimdiye kıyasla daha ilkel ve basit yöntemler kriptografinin temelini oluşturmuştur. Bizde bu yazımızda kriptografide yer alan ve en çok kullanılan ilkel şifreleme yöntemlerini inceleyeceğiz ve halen nasıl kullanılabileceğinizi anlatacağız. Kim bilir, belki de günlük işlemlerinizde basitliği dolayısıyla kullanmak isteyebilirsiniz.

İlkel (klasik) şifreleme yöntemlerini kullandığı methodlara yönelik ikiye ayırabiliriz. Bunlar yer değiştirme (transposition) ve yerine koyma (substitution) methodlarıdır.

Yer Değiştirme (Transposition) Yöntemi

Bu yöntem genelinde elimizde mevcut olan açık bir mesaj, mesajın içerisindeki karakterler dahilinde bir miktar kaydırma veya yer değiştirme işlemine tabi tutularak şifrelenir. Bu yöntemde önemli olan nokta, mevcut karakterlerin hem şifreleme hem de şifre çözme aşamasında aynı kalmasıdır. Nasıl yani?

Örneğin elimizde Kerteriz metni olsun ve bunu şifrelemek istiyoruz. Öyleyse sadece k,e,r,t,e,r,i,z harflerini kullanmamız gerekiyor. Bu harfler dışında başka karakterler işin içine giremez ve yardımcı olamaz. Bu yüzden Kerteriz kelimesini uyduruk bir şekilde şifrelersek rizkerte gibi bir şifrelenmiş mesaj oluşturabiliriz. Ama rizokerte veya kerüterizo gibi sonuçlar oluşturamayız. Özetle ne kadar ekmek o kadar köfte diyoruz ve elimizdeki karakterler dışında hiçbir ek yapmıyoruz (ek sayılamayacak istisnalar dışında).

İlkel şifreleme yöntemlerinden yer değiştirme methodunun mantığını anladıysak şimdi bu kategoride yer alan şifreleme yöntemlerini incelemeye başlayabiliriz.

1.Rail Fence Cipher

Demiryolu çitleri şifreleme yöntemi gibi bir çeviriye sahip olsada biz bunu direkt Rail Fence Cipher olarak öğrenelim ve orjinalini bozmayalım. Özüne baktığımızda ise bu yöntem, elimizdeki açık metni aynı bir yol çizer gibi kutucuklara dizmekten ibaret.

Örnek olarak metnimiz “Kerteriz Blog ile şifreleme” olsun. Şimdi öncelikle kaç yolluk bir ray dizeceğimizi seçiyoruz. Bu değeri 3 olarak belirleyelim ve hemen şifreleme işlemini yapalım.

K . . . E . . . B . . . İ . . . İ . . . E . . . E
. E . T . R . Z . L . G . L . Ş . F . R . L . M .
. . R . . . İ . . . O . . . E . . . R . . . E . .

Örnekte gördüğünüz gibi kelimeler arasındaki boşlukları koymadan, önce aşağı çapraza, sonra yukarı çapraza doğru tüm kutucukları kullanarak metnimizi yerleştiriyoruz. Burdaki 3 değeri sütunumuzun yüksekliğini belirtiyor. Sonuç olarak şifrelenmiş metnimiz her satırı yan yana birleştirmemiz sonucu ortaya çıkan metin olmuş olur ve oda şu şekildedir:

Şifreli metin: KEBİİEEETRZLGLŞFRLMRİOERE

Aynı işlemi 4 satır yüksekliğiyle yaparsak şifreleme işlemimiz ve şifrelenmiş metinimiz şu şekilde olur:

K . . . . . İ . . . . . İ . . . . . R . . . . . .
. E . . . R . Z . . . G . L . . . F . E . . . E .
. . R . E . . . B . O . . . E . İ . . . L . M . .
. . . T . . . . . L . . . . . Ş . . . . . E . . .

Şifreli metin: KİİRERZGLFEEREBOEİLMTLŞE

Bu şifreleme yönteminde metni çözmek için satır yüksekliğini bilmelisiniz veya bilmiyorsanız hard force kullanarak anlamlı bir sonuç oluşana kadar tüm yükseklik değerlerini denemelisiniz.

NOT: Minimum yükseklik 2 dir ve şifreli metini oluştururken kelimeler arasındaki boşlukları atmalısınız. Ayrıca yükseklik değerini istediğiniz bir değer olarak belirleyebilirsiniz.

2.Route Cipher

Yer değiştirme yöntemlerinden biri olan Rota Şifrelemesi, yani nam-ı değer Route Cipher ise mantık olarak yine benzer yöntemler içermektedir.

Route cipher, belirttiğimiz yatay uzunluğa sahip bir dörtgene metnimizi yerleştirmemiz ve doğrultusunu seçmemiz ile kelimeleri spiral bir şekilde yan yana koyarak şifreli metini oluşturma aşamalarını kapsar. Kutucuklarda boş kalan yerler X veya belirlediğiniz bir karakter ile doldurulur. Örneklerini hemen yapalım.

Metnimiz yine “Kerteriz Blog ile şifreleme”, dikdörtgen yatay uzunluk birimimiz ise 5 olsun. Hemen karemizi çizip metnimizi içine sırasıyla yerleştirelim.

KERTE
RİZBL
OGİLE
ŞİFRE
LEMEX

Gördüğünüz gibi yatay 5 birim kare olacak şekilde metnimizi yerleştirdik. Şimdi şu iki rotadan birini seçerek spiral şekilde kelimelerimizi yan yana koyacağız.

Saat yönünde spiral -> Bu seçenekte dikdörtgenin sağ en üst köşesinden, yani E harfinden başlayarak saat yönünde spiral bir şekilde harflerimizi yan yana koyalım. Sonuç olarak şifrelenmiş metnimiz şu olur:

Şifreli Metin: ELEEXEMELŞORKERTBLRFİGİZİ

Saat yönünün tersine spiral -> Bu seçenekte ise dikdörtgenin yine sağ en üst köşesinden, yani E harfinden başlayarak saat yönünün tersine doğru spiral bir şekilde harflerimizi yan yana koyacağız. Sonuç olarak şifrelenmiş metnimiz şu olur:

Şifreli Metin: ETREKROŞLEMEXEELBZİGİFRLİ

Öyleyse pekiştirmek için birde yatay 10 birim kutuluk şeklimizi çizip şifremizi oluşturalım.

KERTERİZBL
OGİLEŞİFRE
LEMEXXXXXX

Saat yönünde spiral şifreli metin -> LEXXXXXXEMELOKERTERİZBRFİŞELİG

Saat yönü tersine spiral şifreli metin -> LBZİRETREKOLEMEXXXXXXERFİŞELİG

NOT: Yatay birim kutu sayınızı az tutmanız şifreli metinin zorluğunu artırır. Bunu bir üstteki örnekten anlayabilirsiniz.

3.Columnar Transposition

İlkel şifreleme methodlarında ilerledikçe ve işin içine farklı farklı değişkenler girdikçe hem şifreli metinlerimizin zorluğu artmakta hem de iş eğlenceli bir hale gelmektedir 🙂 Şimdi ki yöntemimiz olan Sütunlu Kaydırmada işin içine farklı bir anahtar kelime girmektedir. Böylece şifreli metini çözmek için birde bilmemiz gereken bir kelime olması gerekiyor. Hemen örneğimize geçelim.

Diyelim ki rastgele belirlediğimiz anahtar kelimemiz pruva olsun. Siz buna elma, armutta diyebilirsiniz. Tamamen size kalmış bir durum. Ama şurasını unutmayın ki seçtiğiniz kelimenin karakter sayısı sizin yatay birim kare adetinizi belirler. Yani pruva seçtiğim için benim yatay kare adetim 5 olacaktır. Elma seçseydim 4 olacaktı.

Son durumda metnimiz yine “Kerteriz Blog ile şifreleme”, yatay kare birimimiz ise 5 dir.

Şimdi ise seçtiğimiz kelimenin karakterlerini alfabedeki öncelik sırasına göre sıralayalım. Yani:

a -> 1
p -> 2
r -> 3
u -> 4
v -> 5

Bu kısım bildiğiniz harfleri sıralamaya koymak, önceliğine göre rakam vermekten ibaret. Oldukça basit bir işlem. Artık metinimizi 5 birimlik kareye yerleştirebiliriz.

Ardından ise rastgele belirlediğimiz kelimemizi en üste koyup harflerin sıralamasını altına yerleştirelim. Yani şu şekilde:

PRUVA
23451
KERTE
RİZBL
OGİLE
ŞİFRE
LEMEX

Artık şifreli metnimizi oluşturabiliriz. Bunun için küçük sayıdan büyüğe doğru sütunları tek tek alıp yan yana dizmemiz kaldı. Yani 1. sütun ELEEX, 2.sütun KROŞL şeklinde devam eder. Şimdi tüm bu sütunları yan yana koyarsak:

Şifreli metin -> ELEEXKROŞLEİGİERZİFMTBLRE

NOT: Rastgele belirleyeceğiniz kelimenin uzunluğu kadar yatay birim kareniz olur. Boş kalan yerleri X gibi rastgele harflerle doldurabilirsiniz.

4.Double Transposition

Daha birini yapamadan ikincisi nereden geldi diyenler iyi dinleyin lütfen 🙂 Bir üstte anlattığımız Columnar T. yöntemini anahtar kelimeyi bilmesek bile şifreli metini çözmemiz oldukça kolay. Çünkü her sütuna sırasıyla rakamları vererek deneyebiliriz. Özellikle günümüzdeki brute force hızlarını göz önüne alırsak gerçekten komik sürelerde şifremiz çözülebilir. İşte tam burada şifreyi güçlendirmek için Double Transposition devreye giriyor.

Yeni yöntemimiz aslında bir üstteki yöntemin sadece iki kere yapılmış hali. Başka hiçbir değişen yanı yok. Burda amaçlanan ise rastgele denemelerle şifre çözme işlemini biraz daha zorlaştırmak. Bunun dışında farklı olan bir yöntem değil. Örneğimizi yapalım hemen:

Anahtar kelimemiz yine pruva ve yatay uzunluğumuz 5 dir. Şifrelenecek metnimiz ise “Kerteriz Blog ile şifreleme” metnimizin Columnar Transposition ile şifrelenmesi sonucu oluşturduğumuz şifreli metin olan ELEEXKROŞLEİGİERZİFMTBLRE metni olacak. Başlayalım:

PRUVA
23451
ELEEX
KROŞL
EİGİE
RZİFM
TBLRE

Aynı şekilde şifrelersek şifreli metinimiz şu şekilde olacak:

Şifreli Metin -> XLEMEEKERTLRİZBEOGİLEŞİFR

5.Myszkowski Transposition

Yeni yöntemimiz yine Columnar T. dan esinlenerek hazırlanmış bir şifreleme yöntemidir. Diğerlerinden farkı ise belirlediğimiz rastgele anahtar kelimede tekrar eden harflerin olmasıdır.

Şimdi yapacağımız örnekte rastgele belirlediğimiz anahtar kelimemiz makina olsun. Geri kalan herşeyi Columnar Transposition ile aynı yapıyoruz. Sadece sıra tekrar eden harflere geldiğinde o sütunlardaki karşılıklı harfleri birleştirmek olacak. Örneğimiz üzerinde açıklayalım.

MAKİNA
413251
KERTER
İZBLOG
İLEŞİF
RELEME

Şimdi baktığımızda A harfleri tekrar ediyor. Öyleyse bu sütunlardaki harfleri karşılıklı birleştirelim.

MAKİNA
413251
.E...R
.Z...G
.L...F
.E...E

Sonuç -> ERZGLFEE olur.

Bu şifrenin parçası zaten 1. sırada olduğu için en başa koyalım ve diğer sütunları sıradan eklemeye devam edelim. Bu durumda şifreli metin:

Şifreli metin -> ERZGLFEETLŞERBELKİİREOİM

SONUÇ: İlkel olarak birden çok şifreleme yöntemi olmakla beraber sizde bu tür şifreleme methodları oluşturabilirsiniz

Yerine Koyma (Substitution) Yöntemi

Sıradaki ana yöntemimiz ise yerine koyma yöntemidir. Bu tür yöntemlerde amaç bazı karakterler yada karakter grupları yerine başka karakterler koyarak metni şifrelemeye dayanır. Farkettiyseniz ilk yöntemimiz olan kaydırma methodunda sadece elimizdeki karakterlerle işlem yaparken, şimdi elimizdeki bütün karakterleri değiştirerek yerine alakasız karakterler, sayılar ve noktalama işaretleri koyabiliyoruz.

1. Caesar (Sezar) Cipher

Adından da anlayacağınız üzere tarihte ünlü Sezar tarafından kullanılan bu şifreleme yönteminde (diğer adıyla shift cipher diyede geçer) elimizde bir alfabe tablosu bulunmakta. Bu kendiniz için Türkçe alfabe tablosuda olabilir ki örneğimizde bunu kullanacağınız. Şifrelemek istediğimiz metini ise tablomuza karşılık gelecek şekilde eşleştirdiğimizde her harfin karşılığını alıp orjinaliyle yer değiştiriyoruz. Lakin tablomuzu yerleştirmeden önce belirlediğimiz bir değer kadar tüm harfleri kaydırıyoruz. Örneğimize bakarsak:

Tablomuz:

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

Şifrelemek istediğimiz metin:

Kerteriz Blog

Kaydırma değerimiz 4 olsun. Bu tablomuzdaki tüm karakterleri 4 karakter kaydıracağız demek oluyor. Yani şöyle:

Ü V Y Z A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U

Şimdi orjinal ve kaydırılmış tabloyu alt alta koyalım:

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z
Ü V Y Z A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U

Artık şifrelenecek metindeki karakterlerin karşılığına gelen harfleri sırasıyla yazarsak şifrelenmiş metnimiz şu şekilde olur:

H B N P B N G U V I K Ç

Böyle bir şifrelemede, şifreyi çözmek için kaydırma sayısını bilmemiz ve karakterlerin yer aldığı karakter tablosunu elde etmemiz gerekir.

Günümüzde bu şifreleme yöntemi frekans dağılımı ile kolaylıkla çözülebilmektedir.

1. Vigenere Cipher

Sezar şifreleme yönteminin basitliğini gözlerinizle gördünüz. Şifreli metini çözmek kolay olduğu için artık bir tık üzerine çıkılması gerekiyordu ki buda Vigenere Cipher ile gerçekleşti. Temelde mantık aynı ama bu sefer elimizde Vigenere tablomuz var. Buna ek olarak birde rastgele oluşturduğumuz bir anahtar kelimemiz sayesinde güvenliği artırmış olacağız. Öyleyse örneğe başlayalım:

Şifrelenecek metin: Kerteriz Blog
Rastgele metin: Pruva
Tablomuz:

X 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 I İ J K L M N O Ö P R S Ş T U Ü V Y Z A B C Ç D E F G Ğ H
İ İ J K L M N O Ö P R S Ş T U Ü V Y Z A B C Ç D E F G Ğ H I
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

Şimdi şifrelenecek metnimizi ve anahtar kelimemizi karşılıklı dizelim (eğer anahtar kelimenin uzunluğu yetersiz kalırsa tekrarlayan şekilde yan yana dizebilirsiniz):

K e r t e r i z B l o g
P r u v a p r u v a p r

Artık her karşılıklı kelimeyi tabloda eşleştirerek ortaya çıkan şifreli metnimizi göze alalım:

K x P -> Ç
E x R -> Ü
..
..
şeklinde devam edersek sonucumuz:

Ç Ü M R E H C T Y L G Y

Gördüğünüz üzere elimizdeki bir tablo ve anahtar kelime ile şifrenin zorluğunu artırdık. Ve tabi yine bu metni çözmek için elimizde anahtar kelime ve tablo olmak zorundadır.


SONUÇ: Yazımızda ilkel şifreleme yöntemlerini detaylıca inceledik. Sizlerde kendi şifreleme algoritmalarınızı bu yöntemleri baz alarak oluşturabilirsiniz. Aklınıza takılan bir soru olursa veya eklemek istediğiniz bir husus varsa yorum yazabilirsiniz. Diğer yazımızda görüşmek üzere..