Merhaba, tekrar hoş geldiniz. Hazırsanız başlayalım!
Şimdi birlikte tarihin ilk kriptografik cihazı olarak anılan "Scytale (veya Skytale) Sarmalı" yöntemini ele alacağız. Scytale sarmalı, milattan önce 500'lü yıllarda yapılan Peloponez Savaşlarında Spartalılar tarafından Atinalılara karşı kullanılmıştır.
Şimdi şifreleme yönteminin detaylarını ele alalım:
Şifreleme:Şerit sarmala sarılır ve düz metin satırlar boyunca yazılır. Şerit açılınca şifreli metin elde edilir.
Şifre Çözme: Üzerinde şifreli metin olan şerit, aynı boyutlardaki sarmala sarılarak düz metne ulaşılır.
Not: Scytale sarmalı, dikkat edeceğiniz üzere bir "yer değiştirme" yöntemi örneğidir. Çünkü düz metnin harfleri kendi arasında sarmala göre sıralanacaktır.
Not: Burada sarmalın boyutları veya şeridin sarmala toplam sarım sayısı anahtar olarak düşünülebilir. Çünkü şifreli metni taşıyan bir şeridi farklı boyutlarda bir sarmala sarılması sonucunda (sarım sayısı da değişeceğinden) düz metin doğru bir şekilde elde edilemeyecektir. Biz anahtar olarak şeridin sarmala sarım sayısını tercih edeceğiz, bu daha anlaşılır olacaktır.
Örnek (Şifreleme):Alice, Bob'a "GİZLİ BULUŞMA YEDİDE KONGRE MERKEZİNDE" düz metnini Scytale sarmalı yöntemiyle şifreleyip iletecektir. Şifreleme işlemini sarmala 6 turda sarılmış şerit üzerinde yapacaktır (anahtar = sarım sayısı = 6). Buna göre Alice, aşağıdaki şekilde şifreleme işlemini yapar:
Bu çizim üzerinde tüm metni göstermek zor. Sarmal olmadan, kâğıt üstünde şifreleme yapmanın basit yolu, sarım sayısı kadar sütun içeren basit bir tablo üzerinde şifreleme yapmaktır:
Dikkat edilirse, son satırda doldurma harfleri kullanılması gerekmiştir. Çünkü,
Düz metnin harf sayısı = 34
Anahtar (sarım sayısı) = 6
34'ü 6'ya bölersek bölüm 5, kalan 4
--> SATIR SAYISI = bölüm+1 = 5+1 = 6 (kalan 0 olmadığı için +1 ekledik, eğer kalan 0 olsaydı satır sayısı = bölüm olacaktı)
Böylece şerit sarmaldan ayrıldığında aşağıdaki şekilde bir görüntü oluşacaktır:
Dolayısıyla şifreli metin "GUYKMİİLEOENZUDNRDLŞİGKEİMDREXBAEEZX" şeklinde bulunur (sarımların ardışıklığından, yani yukarıda oluşturduğumuz tabloda sıra sıra sütunları okuyarak elde edeceğimiz metindir). Alice, Bob'a bu metni içeren şeridi veriyor.
Örnek (Şifre Çözme):Bob, Alice'ten "GUYKMİİLEOENZUDNRDLŞİGKEİMDREXBAEEZX" şifreli metnini içeren şeridi almıştır. Ayrıca bu şifreli metnin Scytale sarmalı ile oluşturulduğunu ve şeridin sarım sayısının (yani anahtarın) 6 olduğunu biliyor (ya da, Alice'in kullandığı sarmalın bir eşi de Bob'da vardır diyebiliriz). O halde Bob, bu şeridi sarım sayısı 6 olacak şekilde bir sarmala sarar ve metni satır satır okursa "GİZLİ BULUŞMA YEDİDE KONGRE MERKEZİNDE" düz metnine ulaşır. Dikkat ediniz ki,
Şifreli metnin harf sayısı = 36
Anahtar (sarım sayısı) = 6
--> SATIR SAYISI = 36/6 = 6
--> Şifreli metin, 6 (= satır sayısı) harfli bloklara ayrılırsa sarımlar elde edilmiş olur ve böylece düz metne ulaşılabilir:
Siz de deneyin!"İSTİKBAL GÖKLERDEDİR" düz metnini Scytale sarmalına 4 turda sarılmış şerit üzerinde şifreleyin. Ardından elde ettiğiniz şifreli metni deşifre ediniz. Ayrıca gerçek hayatta da bu şifrelemeyi mutlaka deneyin.
Merhaba, hoş geldiniz. Hazırsanız hemen başlayabiliriz!
Bir önceki yazıda "yer değiştirme" kavramını ele almıştık. Şimdi "yerine koyma (ikame)" kavramına bakalım. Yer değiştirme şifrelemesinde şifreli metnin düz metnin harflerinin sıralanması ile elde edildiğini hatırlayınız. Yerine koyma şifrelemesinde ise şifreli metinde düz metinde olmayan harfler bulunabilmektedir. Yöntem, her bir harfin başka bir harf ile değiştirilmesi esasına dayanır. Şimdi detaylıca ele alalım.
Yerine Koyma (İkame) Şifrelemesi (Substitution Cipher): Bir alfabenin her bir harfine karşılık, anahtar tarafından belirlenen başka bir harf atanır. Yerine koyma yöntemlerini basitçe üçe ayırabiliriz:
1) Tekli Alfabetik Yerine Koyma (Monoalphabetic Substitution Cipher):Alfabedeki her bir harf, bir ve yalnız bir harf ile eşlenir. Dolayısıyla, düz metindeki özdeş karakterlerin şifrelenmesi sonucu aynı karakter elde edilir. Benzer şekilde, şifreli metindeki özdeş karakterlerin deşifresi sonucunda da aynı karaktere dönülür. Tarihten bazı örnekleri şunlardır:
Temura - Atbeş, Avgad ve Albam (Temurah - Atbash, Avgad and Albam)
Sezar (Caesar)
ROT13
Alberti
Afin (Affine)
Örnek (Şifreleme):Alice, "MATEMATİK" düz metnini aşağıdaki Q klavye üzerinde her bir harfi bir sağındaki ile şifreleyecektir (yalnızca harfler ile şifreleme işlemi yapıldığını, diğer tuşların görmezden gelindiğini varsayalım).
Yukarıdaki "Q klavye" ve "bir sağındaki" karakter ile şifreleme işleminin bu algoritmada anahtar görevi gördüğüne dikkat edelim. Anahtarı K=(Q,1) şeklinde ifade edebiliriz.
Her ne kadar klavye üzerinde görmesi kolay olsa da, bir atama tablosu çıkarmayı görmekte fayda var. Aşağıdaki atama tablosu aracılığıyla şifreleme yapabilir ve çözebilirsiniz (1. satır düz metin karakterlerini, 2. satır ise eşlenen şifreli metin karakterlerini göstermektedir):
Bundan faydalanarak düz metni aşağıdaki şekilde şifreleyebiliriz:
M --> Ö
A --> S
T --> Y
E --> R
M --> Ö
A --> S
T --> Y
İ --> A (sağında harf olmadığı, yani taştığı için en soldaki harf ile eşlendi)
K --> L
Böylece Alice şifreli metni "ÖSYRÖSYAL" olarak bulur (dikkat edin, düz metinden bambaşka harfler ortaya çıktı). Alice bu metni Bob'a gönderir.
Örnek (Şifre Çözme):Bob, Alice'ten "ÖSYRÖSYAL" şifreli metnini almıştır. Bob, Alice'in yukarıdaki klavyeyi kullandığını ve her karakteri bir sağındaki ile şifrelediğini bilmektedir. O halde Bob da aynı klavyeyi kullanarak ve her karakteri "bir solundaki" ile eşleyerek düz metne dönebilir:
Ö --> M
S --> A
Y --> T
R --> E
Ö --> M
S --> A
Y --> T
A --> İ (solunda harf olmadığı, yani taştığı için en sağdaki harf ile eşlendi)
L --> K
O halde Bob düz metni "MATEMATİK" olarak elde eder.
Not: Oluşturulan bu yerine koyma yöntemi tekli alfabetiktir. Çünkü dikkat edilirse her bir harf, bir ve yalnız bir harf ile eşlenmiştir. Örneğin, düz metindeki tüm "M" harflerinin yerine şifreli metinde "Ö" konmuştur. Benzer şekilde, şifreli metindeki tüm "Y" harflerinin düz metinde karşılığı "T" harfidir. Çoklu alfabetik yerine koyma yöntemlerinde ise aynı harfin birden fazla harf ile eşlenebildiğini göreceğiz.
Siz de deneyin!"MATEMATİK" düz metnini bu sefer aşağıdaki "F klavye" üzerinde ve harfleri "2 harf solundaki" ile eşleyerek şifreleyin. Yani anahtar bu sefer K=(F,-2) olacak. Atama tablosunu kendiniz oluşturmayı ayrıca deneyin.
2) Çoklu Alfabetik Yerine Koyma (Polyalphabetic Substitution Cipher): Tekli alfabetik yerine koymada her harf bir ve yalnız bir harf ile eşleniyordu. Çoklu alfabetik yerine koymada ise alfabedeki her bir harf, birden fazla harf ile eşlenir. Yani düz metindeki özdeş karakterlerin şifrelenmesi sonucu farklı karakterler elde edilebilir. Benzer şekilde, şifreli metindeki özdeş karakterlerin deşifresi sonucunda da farklı karakterlere dönülebilir. Tarihten bazı örnekleri şunlardır:
Trithemius
Bellaso
Vigenère
Otomatik Anahtar Şifrelemesi (Autokey/Autoclave Cipher)
Çalışan Anahtar Şifrelemesi (Running Key Cipher)
Örnek (Şifreleme): Alice, Bob'a "ASLA ASLA DEME" düz metnini şifreleyip iletmek istiyor. Bunun için öteleme anahtarını K=(1,2,3) olarak seçiyor. Bu anahtarı, şifreleme işleminde düz metindeki harfleri sırasıyla 1, 2, 3, 1, 2, 3, ... şeklinde ileriye ötelemek için kullanacaktır. O halde Alice, düz metni aşağıdaki şekilde şifreler:
Böylece Alice, şifreli metni "BTOBCUMCGFOĞ" olarak elde eder. Dikkat edilirse düz metindeki A harfleri hem B hem de C şeklinde şifrelenmiştir. Benzer şekilde, şifreli metindeki O harfi ise hem L hem de M harfi olarak deşifre edilecektir. Alice bu metni Bob'a gönderir. Bu sebeple bu şifreleme yöntemi "çoklu yerine koyma" olarak anılır.
Örnek (Şifreleme): Bob, Alice'ten "BTOBCUMCGFOĞ" şifreli metnini almıştır. Ayrıca öteleme anahtarının K=(1,2,3) olduğunu biliyor. O halde Bob, şifreli metni deşifre etmek için harfleri sırasıyla 1, 2, 3, 1, 2, 3, ... şeklinde geriye öteleyecektir:
Siz de deneyin!Sevdiğiniz bir sözü K=(1,9,2,3) anahtarı ile, düz metnin harflerini sırasıyla 1, 9, 2, 3, 1, 9, 2, 3, ... ileri öteleyerek şifreleyiniz. Ardından, elde ettiğiniz şifreli metni çözerek düz metne ulaşınız.
3) Çoklu Harfle Yerine Koyma/Blok Şifreleme (Block Cipher):Bu yerine koyma yönteminde düz metin bloklar halinde temsil edilir ve şifreleme işlemi bloklar ile gerçekleştirilir. Blok şifreleme yöntemlerinde bloklar, sıklıkla lineer cebrin yapı taşı olan matrisler ile ilişkilendirilir. Tarihten bazı örnekleri şunlardır:
Polybius
ADFGX ve ADFGVX
VIC
Playfair
İkili Blok (Bifid Cipher)
Üçlü Blok (Trifid Cipher)
Dört Kare (Four-square Cipher)
Hill
Afin Hill (Affine Hill Cipher)
Veri Şifreleme Standardı (DES - Data Encryption Standard)
Gelişmiş Şifreleme Standardı (AES - Advanced Encryption Standard)
Örnek:Bir önceki örnek blok şifreleme olarak da değerlendirilebilir. Çünkü anahtar K=(1,2,3) olduğu için metni üç harfli bloklara ayırıp her bir bloğu ayrı ayrı şifrelemiş olduk aslında. Blok şifrelemeyi şu şekilde görebiliriz (matris ifadesiyle):
Bir önceki örnekte her harfin nasıl şifrelendiğini gördük. Mesela ilk A harfi, B şeklinde şifrelenmişti. Bu örnekte ise aslında bloklar şifreleniyor gibi görmeliyiz. Dolayısıyla "ASL" bloğu "BTO", "AAS" bloğu "BCU", "LAD" bloğu "MCG" ve "EME" bloğu ise "FOG" şeklinde şifrelendi. Burada harf bazında değil, gördüğünüz üzere blok bazında şifreleme işlemi yapıldı. Çoklu alfabetik yerine koyma yöntemiyle çok daha net ayrışan örnekleri gelecekte ele alacağız. Blok şifreleme başlı başına bir konu, detaylıca inceleyeceğiz. Şimdilik bu kadar yeterli olacaktır.
Umarım faydalı olmuştur. Bir sonraki yazıda görüşmek üzere!
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:
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.
Ş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.
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:
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 2: Kriptoloji, hatta özellikle "kripto" kelimesini duyunca aklınıza ilk gelen kripto paralar oluyorsa bu normaldir. Şüphesiz bu alanın meşhur olmasında kripto paraların emeği büyük. Ancak yine de hatırlamakta fayda var, kripto paralar gücünü kriptolojiden almaktadır. https://www.cryptoisnotcryptocurrency.com sitesinin de söylediği üzere:
KRİPTO, KRİPTO PARA DEMEK DEĞİLDİR ಠ_ಠ
KRİPTOGRAFİYİ İFADE EDER
Not 3: Başlangıç aşamasında sade bir giriş olması açısından kriptolojinin yalnızca "güvenli/şifreli iletişim (secure/encrypted communication)" yönünü ele almayı tercih edeceğiz.
Kriptoloji Uygulamaları: Günümüzde kriptoloji, şifreli iletişimden çok daha fazlasıdır ve şifreli iletişim dışında da birçok farklı uygulaması bulunmaktadır. Ancak bu uygulamaları ve detaylarını gelecekteki yazılarda ele almak daha uygun olacaktır. Bazı uygulamalar aşağıda verilmiştir:
Dijital İmzalar (Digital Signatures)
Kimlik Belirleme (Identification)
Anahtar Kurulumu (Key Establishment)
Sır Paylaşımı (Secret Sharing)
Güvenlik Protokolleri (Security Protocols)
Dijital Para (Digital Currency)
Temel Şifreli İletişim Akışı Şeması:Aşağıdaki kavramları öğrenip şemayı anlamaya çalışınız.
Şifreleme (Encryption): Bir veriyi anlaşılması zor bir forma çevirme işlemidir.
Şifre Çözme/Deşifreleme (Decryption): Şifreleme işlemi sonucunda elde edilen verinin tekrar eski ve anlaşılır haline çevrilmesi işlemidir.
Kriptosistem/Şifre (Cryptosystem/Cipher):Şifreleme ve şifre çözme işlemlerinde kullanılan algoritma veya algoritmalar bütünüdür.
Düz Metin (Plaintext): Şifreleme işlemi uygulanan veya şifre çözme işlemi sonucu elde edilen veridir.
Şifreli Metin (Ciphertext):Şifreleme işlemi sonucu elde edilen veya şifre çözme işlemi uygulanan veridir.
Anahtar (Key):Şifreleme ve şifre çözme işlemlerinde kullanılan sembol veya semboller dizisidir.
Bir Şifreli İletişim Örneği:
Ön anlaşma süreci: Alice ile Bob, şifreli iletişimi afin (affine) şifreleme algoritması altında K=(27,26) anahtarını kullanarak gerçekleştirmek üzere anlaşmışlardır. (Not: Afin şifreleme yönteminin detaylarını şu an için es geçip olaya sadece girdi-çıktı anlayışı ile yaklaşacağız. Sonraki yazılarda -afin şifreleme de dahil olmak üzere- bazı şifreleme algoritmalarını matematiksel detaylarıyla birlikte ele alacağız.)
Şifreleme işlemi: Alice, Bob'a "UMS OTUZ BEŞ" düz metnini şifreleyip göndermek istesin. Alice, düz metni afin şifreleme yöntemi altında K=(27,26) anahtarı ile şifrelediğinde "GÜK SHGZ UNİ" şifreli metnini elde etmiş ve ardından Bob'a bu şifreli metni iletmiştir.
Şifre çözme işlemi: Bob, Alice'ten "GÜK SHGZ UNİ" şifreli metnini almıştır. Bob, K=(27,26) anahtarını kullanarak şifre çözme işlemini yapar ve "UMS OTUZ BEŞ" düz metnine ulaşır. Böylece şifreli iletişim gerçekleşmiş olur.
Özetle,
Düz Metin: "UMS OTUZ BEŞ"
Kriptosistem/Şifre: Afin Şifreleme
Anahtar: (27,26)
Şifreli Metin: "GÜK SHGZ UNİ"
Not: Şifre ve şifreli metin kavramları arasındaki farka dikkat ediniz.
Şimdilik terminolojiyi tanımak adına bu kapalı örnek yeterli olacaktır, ancak bu terminolojiyi hep kullanacağımızı belirtmek isterim. Ele alacağımız açık örneklerle bu kavramlar çok daha net anlaşılacaktır.
Kriptoloji Öğrenmek İçin Bazı Kitap Tavsiyeleri: Burada önerdiğim kitaplar dışındaki kitapları da araştırabilirsiniz. İşte benim tavsiyelerim (benim açımdan bu kitaplar kriptoloji alanında ilk üç sıradadır):
Prof. Dr. Gülçin Çivi Bilir - Caesar'ın Anahtarı: Geçmişten Günümüze Klasik Şifreleme Yöntemleri (İTÜ Yayınevi)
Bu kitabın yeri, 2 yıl süren yazım sürecine matematik bölümünden sınıf arkadaşım İlayda Altınkol ile yoğun çalışmalar yaparak katkı sağlamış olmamız (mizanpaj, grafik tasarım, olimpiyat düzeyinde soru yazımı vb.) açısından bende apayrıdır. Bir araştırma kitabı niteliği taşımakla birlikte 40 klasik şifreleme algoritmasını matematiksel detaylarıyla içeren oldukça kapsamlı ve edebi yönü güçlü bir kitaptır. Bu açıdan kitabın bu alandaki önemli bir boşluğu kapattığını düşünüyorum.
Simon Singh - Şifre Kitabı: Antik Mısır'dan Kuantum Bilgisayarlara Gizlilik Bilimi (Buzdağı Yayınevi)
Verdiği tarihsel bilgiler ile roman tadında okunabilecek kıymetli bir kitap olduğunu düşünüyorum. Bu eşsiz kitabın Türkçe çevirisinin bulunması da gerçekten çok güzel.
Wade Trappe, Lawrence Washington - Introduction to Cryptography with Coding Theory (Pearson Education)
İngilizce yazılmış, ancak benim yoğun ve sürekli bir şekilde çalıştığım mükemmel bir kitap. Klasikten moderne matematiksel detaylarıyla birçok algoritmayı ele almakla birlikte kodlama teorisini de içeriyor. Anlatım tarzını çok başarılı buluyorum.