Kriptografi Algoritmaları-Atbeş

Erdinç 05 May 2019 Kriptografi/Kriptoloji  0

Kriptografi Algoritmaları-Atbeş

Algoritmanın ismi İbrani alfabesinin ilk iki harfiyle (Alef, Bet) son iki harfinin (Tau, Şin) birleşiminden geliyor. Bu algoritmada alfabenin ilk harfi son harfiyle, ikinci harfi sondan ikinci harfle değiştirilir. Günümüz Türk alfabesi için bu algoritma uygulandığında:

ç ğ ı ö ş ü 
ü ş ö ı ğ ç   

Dolayısıyla “merhaba dünyalı ben dostum” mesajı “ktğpzyz uçjbzlö ytj uigedk” olarak şifrelenir ve tersi yolla dekript edilir.

Atbeş (Atbash), ikame (substitution) algoritmaları[1] ailesindendir ve Eski Ahit’in bazı ayetlerinde kullanılmıştır. Mesela: “Şeşah’ın kralı onlardan sonra içecek” (Yeremya Kitabı, 25. bab, 26. ayet). İbrani alfabesine Atbeş algoritması uygulandığında, Şeşah’ın karşılığı Babil’dir. 

Bilinen en eski ve ilkel şifreleme algoritmalarındandır. Frekans analizi yapılarak, eğer elde yeterince mesaj birikmişse, elle dahi deşifre edilebilir. Mesajlaşma dili biliniyorsa, şifreli mesajlarda en sık geçen harf yerine, o dilde en sık kullanılan harf denenerek şifre çözülmeye başlanabilir. Benzeri şekilde, şifreli mesajdaki bir kelimenin yapısı analiz edilerek, başlangıç tahminleri kolaylıkla yürütülebilir. Yukarıdaki örnekteki şifrelenmiş ktğpzyz kelimesinde, sondan ikinci ve sıfırıncı pozisyonlarda z harfi yer alıyor. Basit bir sözlük taramasıyla 6 harften oluşan, sondan sıfırıncı ve ikinci harfi aynı olan kelimeler denenebilir. Veya yazılacak bir bilgisayar programı yardımıyla, kaba kuvvet (brute force) kullanılarak, şifreli mesajdaki bir veya birkaç harf için tek tek bütün harfler denenerek anlamlı bir mesaj elde edilene kadar deneme devam ettirilebilir.

Algoritma her bir harf için başka bir harf karşılığı kullandığından ve bu karşılıklılık ilişkisi sabit olduğundan (yani: aynı mesajın içinde her zaman mesela a için z kullanılıyor), eğer mesajlaşma dili biliniyorsa, o dildeki harfin kullanılma sıklığı mesajı deşifre etmek isteyene çokça veri sağlar. Mesela Türkçe bir metinde a harfinin geçme sıklığı yaklaşık % 12 civarındayken, Almanca bir metinde % 6 civarındadır. Veya başka bir açıdan bakıldığında, Türkçe bir metinde en sık geçen harf a iken, İngilizce bir metinde e’dir. Sadece bu veri bile, frekans analizi ile deşifre işlemine başlamak için yeterli olabilir. Aşikâr bir şekilde, eğer alfabe tek sayıda harften oluşuyorsa, bir ve yalnızca bir harf ile o harfin şifrelenmiş hali aynı olacaktır (mesela Türkçe alfabe için l harfi). Algoritmanın bir başka ve belki de en zayıf noktası ise, algoritma bir kez elde edildiğinde, bütün mesajlaşmanın çözülebilmesidir. Mesajlaşmanın güvenliği, eğer varsa, algoritmanın gizli olmasındadır.  Atbeş algoritması, afin şifrelerin[2] özel bir durumu olarak da görülebilir.

02. Avgad
Atbeş’ten farklı olarak, her harf bir sonraki harfle değiştirilir.

03. Albam

İlk harf onikinci harfle, ikinci harf onüçüncü harfle… değiştirilir.
Bu üç şifreleme metodu da, Yahudi ruhani geleneğinde, Kabbala alimleri tarafından kelimelerden gizli anlamlar çıkartmak için kullanılır. Bu üç metoda topluca Temura denir. Bunlardan başka, aynı amaçla kullanılan Notarikon metodunda, kelimelerin ilk harflerinin alınarak başka bir kelime oluşturulur (Bu, bizim akrostiş şiirlerden aşina olduğumuz bir metoddur). Bu bağlamda, Yahudi geleneğinde Gematria diye bilinen ve aslında Asur-Babil-Yunan geleneğinden türetilen, İslam dünyasında ebced hesabı ismiyle bilinen sistematik içerisinde yer alır[3]. Bu sistemde, her harfin bir sayı karşılığı vardır. Böylece bir kelime, bir sayıya dönüştürülür veya tersinden bir sayının anlamlı kelime karşılıkları aranır.

Atbeş Şifrelemesi için Kod Örneği:

#include <iostream>
#include <string>
using std::string;
char alfabe[30] = “abcçdefgğhıijklmnoöprsştuüvyz”;
string Atbes ( string metin ) {        string sifreli_metin;        for (int j = 0; j < metin.size(); j++) {               for (int k = 0; k < 29; k++) {                      if (metin[j] == alfabe[k])                            sifreli_metin += alfabe[28-k];               }        }        return(sifreli_metin); }   int main() {        string metin = “baba”;        string sifreli_metin = Atbes(metin);        std::cout << sifreli_metin; }

 

Kaynak: CEZERİ SGA

Kriptografi Algoritmaları-Giriş

Bir Cevap Yazın