Ana içeriğe atla

Kriptoloji Serisi - 2: Yer Değiştirme Şifrelemesi


26/02/2024

Merhaba, tekrardan hoş geldiniz! 

Umarım ilk yazım kriptolojinin temel terminolojisini size iyi bir şekilde tanıtmıştır. Artık ufaktan şifrelemeye ve şifre çözmeye başlıyoruz, fakat tarihten özel algoritma örneklerini incelemeye hemen başlamak yerine başlangıçta önemli temel kavramların oturtulması üzerine daha çok çalışacağız. 

Gelecekteki yazılarda birçok algoritma örneğini inceleyeceğiz, ancak bahsettiğim kavramların anlaşılması ile bu çok daha kolay olacaktır. Bu yüzden ilk yazılarda kavramsal bir başlangıç yapmayı uygun gördüm.

Hazırsanız, kaldığımız yerden devam edelim. Buradan itibaren anlatımlarımı kod parçacıkları ile destekleyeceğim. Tüm kodlara aşağıdaki GitHub deposundan erişebilirsiniz:

https://github.com/altugbeyhan/KriptolojiBlogSerisi/


Yer Değiştirme Şifrelemesi (Transposition/Permutation Cipher): Düz metnin harflerinin kendi içinde sıralanması ilkesine dayanır. Harflerin nasıl sıralanacağını sıralama anahtarı belirler. Aşağıda bazı yer değiştirme yöntemleri verilmiştir (bu yöntemlerin bazılarına sonraki yazılarda değineceğiz):

  • Scytale Yöntemi (Scytale Cipher)
  • Rota Yöntemi (Route Cipher)
  • Zikzak Yöntemi (Rail Fence Cipher)
  • Sütun Yöntemi (Columnar Transposition Cipher)
  • Myszkowski Yöntemi (Myszkowski Transposition Cipher)
  • Çift Yer Değiştirme Yöntemi (Double Transposition Cipher)


Şimdi, yer değiştirme şifrelemesinin mantığını veren iki adet örneği inceleyelim.


Örnek 1 (Şifreleme): Alice, "VERİ" düz metnini yer değiştirme ile K=(3421) sıralama anahtarını kullanarak şifrelemek istiyor. Bunun için düz metnin harflerini sayılar ile

V    E    R    İ

1    2    3    4

şeklinde eşleyecektir. Ardından, eğer Alice harflerin yerini anahtara göre değiştirirse

R    İ    E    V

3    4    2    1

olur. Dolayısıyla şifreli metin "RİEV" şeklinde bulunur. Alice bu metni Bob'a gönderiyor.

Örnek 1 (Şifre Çözme): Bob, Alice'ten "RİEV" metnini aldı. Ayrıca bu metnin yer değiştirme ile K=(3421) sıralama anahtarının kullanılarak elde edildiğini biliyor. O halde Bob, bu metnin harflerini sayılar ile

R    İ    E    V

3    4    2    1

şeklinde eşleyecektir. Böylece, düz metni elde etmek için harfleri (1234) şeklinde sıralarsa

V    E    R    İ

1    2    3    4

düz metnini elde edecektir.


Bu oldukça basit bir örnekti. Şimdi benzer bir örneği daha uzun bir metin ile ele alalım.


Örnek 2 (Şifreleme): Alice, "İSTANBUL TEKNİK" metnini yer değiştirme ile K=(35214) sıralama anahtarını kullanarak şifrelemek istiyor. Bunun için, öncelikle metni beş harfli bloklara ayırmalıdır (genellikle boşlukları ihmal edip düz metni boşluksuzmuş gibi görmeyi tercih edeceğiz):

İSTAN    BULTE    KNİK_

Görüldüğü üzere beş harfli bloklara ayırma işleminde son grubun harf sayısı beşten az olabilmektedir. Alice, bu eksikliği gidermek için doldurma (padding) işleminden yararlanacaktır. Bu işlem ile son blokta boş kalan yerlere rastgele harfler atanır:

İSTAN    BULTE    KNİKX

Burada X yerine herhangi bir karakter yazılabilir. Yapılan bu işleme doldurma denir ve özellikle blok şifreleme algoritmalarında sıkça kullanılan bir işlem olduğundan bu örnekte yer verdim. Devam edelim.

Şimdi Alice, her bir bloğu K=(35214) sıralama anahtarını kullanarak şifreleyecek:



Böylece Alice, "TNSİALEUBTİXNKK" şifreli metnini elde etmiştir. Alice bu metni Bob'a gönderiyor.

Örnek 2 (Şifre Çözme): Bob, Alice'ten "TNSİALEUBTİXNKK" şifreli metnini aldı. Bob bu metnin yer değiştirme ile K=(35214) sıralama anahtarı kullanılarak elde edildiğini biliyor. O halde Bob, bu metni beş harfli bloklara aşağıdaki şekilde ayıracak ve ardından her bir bloğu (12345) şeklinde sıralayarak düz metne ulaşacaktır:



Böylece Bob, "İSTANBUL TEKNİK" düz metnine ulaşır.


PYTHON KODU

Bu kodu kopyalayıp OnlineGDB (https://www.onlinegdb.com) sitesinde çalıştırabilirsiniz: 

https://github.com/altugbeyhan/KriptolojiBlogSerisi/blob/main/Ders2-YerDegistirme.py

ÇIKTI:

ŞİFRELİ METİN: TNSİALEUBTİXNKK

DÜZ METİN: İSTANBULTEKNİKX


Şimdi siz deneyin! Adınız soyadınızı yer değiştirme ile K=(321) sıralama anahtarını kullanarak şifreleyin. Ardından, elde ettiğiniz şifreli metni çözerek tekrar adınız soyadınıza ulaşın (Bu örneği önce mutlaka elle yapınız, daha sonra kod ile teyit edebilirsiniz).


Not: Yer değiştirme şifrelemesinde dikkat edilmesi gereken, düz metnin karakterlerinin yalnızca kendi içinde sıralandığı, başka karakterler ile değiştirilmediğidir. Başka karakterlerle değiştirme işlemi, "yerine koyma" altında bir sonraki yazıda ele alınacaktır.


Bir sonraki yazıda görüşmek üzere!

Bu blogdaki popüler yayınlar

MATEMATİK OLİMPİYATLARINA HAZIRLIK: SAYILAR TEORİSİ DERS VİDEOLARI

Matematik Olimpiyatları için Sayılar Teorisi video eğitimine hoş geldiniz! Bu eğitim serisi Prof. Dr. Mustafa Özdemir tarafından yazılmış Matematik Olimpiyatlarına Hazırlık 3 - Sayılar Teorisi kitabından olimpiyatlara ilk adımı birlikte atabilmemiz için özenle seçtiğim çeşitli ülkelerin olimpiyat sorularının çözümlerini içermektedir. Sayılar teorisini 8 başlıkta ele alıyoruz: Bölünebilme Asal Sayılar ve Çarpım Fonksiyonları En Büyük Ortak Bölen ve En Küçük Ortak Kat Modüler Aritmetik Modüler Aritmetiğin Özel Teoremleri: Fermat, Euler, Wilson ve Çin Kalan Teoremleri Denklikler Tam Sayılarda Denklem Çözümleri Tam Değer Fonksiyon Bu videolar özellikle TÜBİTAK, AÜMO gibi matematik olimpiyatlarına yönelik olsa da matematik bölümü öğrencileri de bu videolardan elbette yararlanabilir.   Eğer bu videoların hepsini doğru bir şekilde bitirirseniz, Matematik olimpiyatlarının sistemini ve bu sistemin günümüz matematik eğitimine göre farklarını görecek, gerçek matematiği yapabilmenin tadını çıkar

Kriptoloji Serisi - 1: Temel Kriptoloji Terminolojisi ve Kitap Tavsiyeleri

25/02/2024 Herkese merhaba! Serinin ilk yazısında temel kriptoloji terminolojisini tanıtacağım. Ayrıca literatürü kolaylıkla takip edebilmeniz adına kavramları İngilizceleriyle birlikte vereceğim. Yazının sonunda bazı kitap tavsiyelerim bulunmaktadır. Faydalı olmasını dilerim. İsterseniz kriptoloji hakkında hazırlamış olduğum yoğun içerikli videoyu da izleyebilirsiniz:  https://www.youtube.com/watch?v=_Xc84ISoG1w Hazırsanız başlayalım! Kriptoloji (Cryptology):   Matematiğin gizli yazılar veya şifreli belgeler ile ilgilenen alt dalıdır (kısaca şifrelerin bilimi diyebiliriz). İki alt başlık altında incelenmektedir: Kriptografi (Cryptography): Verilerin güvenli bir şekilde şifrelenmesi ile ilgilenir ve bu amaca yönelik çözümler önerir.  Kriptanaliz (Cryptanalysis): Şifreli verilerin çözülmesi, kırılması ve önerilen çözümlerin güvenlik analizi ile ilgilenir. Not 1:  Kriptoloji kelimesinin yerine kriptografi kelimesinin kullanılabildiğini görebilirsiniz. Doğru kullanıma dikkat ediniz. Not

PYTHON PROGRAMLAMAYA ÇOK HIZLI BİR GİRİŞ

Python Kodlama Platformları OnlineGDB:  https://www.onlinegdb.com/ Google Colab:  https://colab.research.google.com/ Eğer bilgisayarınıza yazılım kurmak isterseniz: PyCharm:  https://www.jetbrains.com/pycharm/download/  (OnlineGDB alternatifi) Anaconda:  https://www.anaconda.com/products/distribution  (Google Colab alternatifi) Ücretsiz Python Eğitimleri (Sertifikalı) BTK Akademi Eğitimleri: https://www.btkakademi.gov.tr/portal/course/sifirdan-ileri-seviye-python-programlama-5877 https://www.btkakademi.gov.tr/portal/course/veri-bilimi-icin-python-ve-tensorflow-11705 Turkcell Geleceği Yazanlar Eğitimleri: https://gelecegiyazanlar.turkcell.com.tr/konu/egitim/python-programlama-101/pythona-giris https://gelecegiyazanlar.turkcell.com.tr/konu/ileri-python Global AI Hub Eğitimi: https://globalaihub.com/courses/introduction-to-python-turkish/ Diğer Bağlantılar Python Türkçe Dokümantasyon:  https://docs.python.org/tr/3/index.html ChatGPT:  https://chat.openai.com/chat/