İclal Sarıtaş
Team Member
- Katılım
- 24 Ocak 2024
- Mesajlar
- 4
- Tepkime puanı
- 5
- Puanları
- 3
İclal Sarıtaş tarafından yazılmıştır.
Merhaba! Kriptografi temeli atmak için nereden başlayacağını bilemiyor ve kaynak arıyor olabilirsin. Emin ol doğru yerdesin. Tarihsel süreçten, akan şifrelere doğru gidilecek bu yolda yeterli çalışma motivasyonuna sahipsen ve içeriğimi okumaya hazırsan daha fazla bekleme, hemen başla Defterimin Kriptografi-101 kısmı senindir. İlerlememiz şu başlıklar altında olacaktır :
1) Kriptografi Tarihsel Serüveni
- Temel Kavramlar Hakkında Bilgi Kazandırmak
- Tarihî Şifreler
- Frekans Analizi
- Enigma
- Colossus
2) Blok Şifreler
- Blok Şifre
- Blok Şifre Tasarımı
- Feistel Şifreler ve DES
- AES
- Blok Şifre Çalışma Prensibi
3) Akan Şifreler
- Senkron Şifreler
- Asenkron Şifreler
4) Özet(Hash) Fonksiyonlar
- Hash Fonksiyonlar
- Blok Şifreden Hash Fonksiyon Tasarlamak
- MD4, MD5
- SHA1, SHA2, SHA3
- Parola Kırmak
5) Açık Anahtar Kriptografisi
- Diffie-Hellman Anahtar Değişimi
- RSA Şifreleme Algoritması
- El-Gamal Şifreleme Algoritması ve Dijital İmza
1) Kriptografi Tarihsel Serüveni
- Temel Kavramlar Hakkında Bilgi Kazandırmak
Kriptoloji : Güvenli olmadığını varsaydığımız bir iletişim kanalında güvenli iletişim ile ilgilenir. Bunu günlük hayatta kullandığınız iletişim yöntemleri olarak düşünebilirsiniz. Mektuplaşıyorsanız bir mektubu, hatta havada uçan güvercinden gelen postayı, telefon görüşmesi yapıyorsanız da bir telefonu düşünebilirsiniz. Burada asıl önemli olan, kullanılan iletişim aracının ne olduğu değildir. Güvende miyim? Birisi beni dinliyor mu? endişenizin şiddetinin ne olduğudur. Yani kriptoloji, yollayacağımız mesajı şifreli şekilde yollayıp deşifre edilmemizi engelleyen bir bilim dalıdır.
Kriptografi : Güvenli kriptosistem/şifre tasarımıyla ilgilenir.
Kriptanaliz : Kriptosistem/şifre analiziyle yani kırma işlemleriyle ilgilenir.
NOT ! İki terimi birbirinden ayrı düşünmek tam anlamıyla hata olacaktır. Çünkü sağlam bir tasarım için onu nasıl kırabileceğini de bilmek gerekir.
[ Peki ben hala Kriptografi ve Kriptoloji terimlerini karıştırıyorum İclalciğim diyorsan, endişelenme. Günümüzde iki kavram da aynı anlamda kullanılıyor. Ama bunu dedim diye Kriptografi bilgi güvenliği için gerekli metodları tanımlarken kriptoloji kriptografiyle kriptanalizin birleşimi olması durumunu aklından çıkarma. ]
/ Kriptografi Sayesinde Çözülen Güvenlik Problemleri /
* Şifreleme(Encryption) yöntemiyle verilerin(Depolanan veriler), iletilerin ve görüşmelerin güvenliğini sağlamak.
* Integrity yani verinin kaynağında oluşturulduğu gibi korunduğu ve iletim veya depolama sürecinde manipülasyona uğramadığı şeklinde ifade edebileceğimiz bir bütünlüktür. Depolanan veri, mesaj ve yapılan görüşmelerin bütünlüğünü sağlamak. Bu bütünlüğü mesela hash fonksiyonları ile sağlayabiliriz.
* Authentication kimlik doğrulama süreci de veri kimlik doğrulaması ve şahıs güvenliğini koruyan bir adımdır. Elektronik imza da bir çözümdür lakin bazen verinin de doğrulanması gerekir. .(Şahısların teyidi konusuna açık anahtar kısmında değineceğim.)
* Transaction non-repudiation dediğimiz işlem inkar edilememezliği yani elektronik imza diye örnek verebileceğimiz bir çözüm örneğidir. Bunun dışında kripto para işlemlerinizde de ben yaptım ben yapmadım diye kendinizi savunabileceğiniz bir private key e sahip olduğunuzdan mütevellit yetkinin sadece sizde olması durumudur.
Aramızda parolaya şifre diyen şifreye parola diyen ya da ikisini de söylemeyen kişiler bulunuyor olabilir. Hayatta her şey mümkün. Günlük hayatta, sosyal medya hesaplarımıza giriş yaparken kullandığımız arkadaşa parola diyoruz. Peki şifre nedir? Hadi bunu konuşalım :
Kriptosistem/Şifre nedir ?
Korumak istediğimiz şey düz bir metin olsun. İşte bizim şifre dediğimiz şifreli metin dediğimiz şey, düz metnin şifrelenmiş hali oluyor.
Düz metni şifreli metne, şifreli metni düz metne dönüştüren algoritma çiftine kriptosistem/şifre adını veriyoruz.
Şifreleme işlemi sırasında kullanılan gizli bilgiye de anahtar diyoruz. (İlerleyen bölümde anlatacağım.)
Harika bir çizimle işi özetleyip diğer konumuza geçiş yapıyorum.
- Tarihî Şifreler
Teknolojinin pasif olduğu eski yıllarda elle yazma şeklinde yapılan yöntemdir. Bu yöntemde kağıt-kalem kullanıldığından kriptosistemin absürt bir karmaşıklığa sahip olmaması gerekir. Genelde harf değişim sistemi kullanılır. Bilgi sızdırmamak için şifreli metindeki noktalama işaretleri ve boşluklar genelde silinir. Enigma bölümüne geldiğimizde son cümlede bahsettiğim bilgi sızdırmama mevzusuna güzel bir örneğim olacak.
Sezar Şifresi : Julius Caesar MÖ 1. yüzyılda askerî mesajların güvenliğini korumak için özgün bir yöntem geliştirmiştir. Bu yöntemde her harf, alfabedeki kendisinden n önceki harf ile değiştirilir. Hemen örneğimiz gelsin
Şimdi şöyle bir gerçek vardır ki Sezar şifresi, alfabe 26 harf olduğuna göre sadece 25 farklı kaydırma yöntemi olduğu için kolayca kırılabilir. Modern bilgisayarlar ve şifre kırma yöntemleri, brute force saldırıları, frekans analizi ve dilbilgisi özelliklerini kullanarak Sezar şifresini hızlı bir şekilde kırabilirler. Sonuç olarak, Sezar şifresi kullanıldığında güvenlik düzeyi çok düşüktür. Biz buna anahtar uzayı çok küçük diyoruz. Yani anahtarı tahmin etmek çok kolay.
Basit Monoalphabetic Değişim : Her harf bir harf ile yer değiştirir. A harfi artık K, B harfi artık U harfi gibiymiş gibi davranılır.
Peki İclalciğim madem bu kadar çok olasılığın mümkün olduğu bir şifreleme yönteminden bahsediyorsun. Öyleyse neden brute force ataklarından korunmak için Monoalphabetic değişim kullanmayalım? Çünkü arkadaşım, dildeki tekrar ve frekans analizi yöntemiyle bu 26! olasılıklı şifre kolayca kırılabiliyor. Frekans Analizi nedir hemen sırası gelmişken anlatayım.
- Frekans Analizi
9.yy.'da Al-Kindi tarafından önerilmiştir. Dildeki tekrara dayanmaktadır. Bu alan hakkında kitabı da mevcuttur hatta bir kopyası Topkapı Müzesinde bulunuyor. Belli bir ücret karşılığı sayfaların fotoğrafını çekebiliyoruz diye hatırlıyorum. Dildeki tekrar derken ne demek istiyoruz? Mesela Al-Kindi diyor ki, herhangi bir dil için o dilde yazılmış olan uzun bir yazı bul ve o yazıda en çok hangi harf geçiyor notunu al. Bu dil Türkçe ise uzun bir metinde en çok A harfinin tekrarladığını görürsün. Bu şekilde en çok tekrarlanan ikinci, üçüncü, dördüncü... harf diye gittiğinizde, bu harfleri listede yerine koyduğunuz harflerle eşleştirip şifreyi kırabilirsiniz. Frekans Analizinde işin özü bu şekildedir.
Playfair : Yıl 1854, Viktorya Döneminden Charles Wheatstone tarafından kullanılması tavsiye ediliyor, dönemin İngiliz bilimcisi ve siyasetçisi olan Lord Playfair tarafından da destekleniyor. Şu ana kadarki anlattığım şifrelerin daha karmaşık olmasını burada deneyebiliriz. Bu şifrelemede, anahtarın ve alfabenin geri kalanının yer aldığı 5x5 tablo kullanılıyor. Eğer anahtarı ve kuralını ezberlerseniz(4 adet kural var) sistemi rahatlıkla kullanabilirsiniz. Neden 5x5 tablo kullanıyoruz gibi bir soru işareti belirebilir belki zihninizde. Esasında en başında dönem ve İngiliz diye belirtmemdeki amaç sadece genel kültür kazanmanız değil, aynı zamanda İngiliz diye belirtirsem İngilizlerin 26 harf kullandığı ve böylece 5x5 tablo kullanılması gerektiği kültürünü ezbere olarak değil de mantıksal olarak sizlere kattığımdan emin olmuş olurum diye düşündüm. Şimdi hemen örneğimi gösteriyorum :
Önce anahtar yazılır. Aynı harfler bir kez kullanılır. 5x5 tablonun geri kalanı kalan harflerle doldurulur. I ve J harfi 25 harfe inmek için aynı kutuya konur. Sık kullanılan harf olmadığından biraz kurban harf oldu diyebiliriz.
Şimdi gelelim sistemi kullanabilmek için bilmemiz gerekiyor dediğim 4 kuralı anlatmaya.
1- Eğer iki harf de aynıysa ya da en son tek bir harf kaldıysa, ilk harften sonra bir X harfi eklenir.
2- Eğer iki harf aynı satırdaysa, her harf sağındaki harfle değiştirilir. Peki ya satır sonundaysa? Bir harf satır sonundaysa satır başındakiyle değiştirilir.
3- Eğer iki harf aynı sütundaysa, her half altındaki harfle değiştirilir. Peki ya sütun sonundaysa? Bir harf sütun sonundaysa sütun başıdakiyle değiştirilir.
4- Eğer harfler aynı sütun veya satırda değilse, harfler bir dikdörtgenin 2 köşesi olarak düşünülür ve harfler karşılarındaki köşede yer alan harf ile değiştirilir.
Biraz karmaşık mı geldi ? Hemen harika çizimlerime devam ediyorum :
Frekans Analizi için bazı önlemleri konuşalım.
Birden fazla harf değişimi kullanımı, Mantıken baktığımızda Playfair gibi bir yöntemin de iki harfli frekans analizine dayanıklı olmadığını görüyoruz ki günümüzde bilgisayarlar ile kısa uzunluktaki harf değişimlerini kırmak hiç de zor değil. Uzun harf dönüşümlerinde anahtarı kaydetmek, pratikte kullanmak ve şifreleme-deşifreleme yapmak çok çok zordur. Doğruya doğru dediğimiz bir konu varsa o da şu ki, aslında çoklu harf dönüşümleriyle uğraşıp durmak bunları türetmek günün sonunda Block şifre fikrinin oluşmasına yol açmıştır.
- Enigma
Bunca zaman elle yazmak dedik, kağıt-kalem yöntemi dedik durduk. Artık makinelerden konuşmanın zamanı geldi. Teknolojik gelişmelerle kağıt-kalemlere veda ettiğimiz zamana giriş yaptık. En popüler örnek olarak Enigma örneğini verebiliriz.
Bu gördüğümüz Enigma, elektrik-mekanik çarklı şifreleme makinesidir. 20. yüzyılda askeri,bankacılık gibi alanlarda kullanılmıştır. Çoklu harf değişim şifresi olarak çalışmaktadır. Çarkların durumu ne olursa olsun bir harfin hiçbir zaman kendisine şifrelenmiyor olma özelliği yüzünden -ki bu özellik kasıtlı eklenmiştir- Enigma kolayca kırılmıştır. İngilizler Enigma'yı kırınca 2. Dünya Savaşı seyri de değişmiştir. Almanların ifşalanması mevzusunu biraz daha açmak istiyorum aslında. Hangi karakter hangi karaktere denk gelir konusunu konuşup duruyoruz. Enigma'yı değersiz yapan, ifşalayan ne oldu ? Almanlar her iletişim öncesi "Heil Hitler!" yazdığı için kullanılan anahtarın tespit edilmesi Almanları ifşalayan şey oldu.
- Colossus
Dünyanın ilk programlanabilir elektronik dijital bilgisayarıdır. İngiliz uzmanlar tarafından Lorenz şifresinin kriptanalizi için geliştirilmiştir. Alan Turing tasarımlarıyla katkıda bulunmuştur. 2. Dünya Savaşı bitiminde İngilizler, başka ülkeler bu teknolojiyi öğrenmesin diye bilgisayarı parçalamışlardır.
2) Blok Şifreler
Bu bölümde şifre tasarımlarına geçmeden önce ufak bir muhabbet gerçekleştirelim. Encoding, algoritmalar ve kriptosistemlerden konuşalım biraz.
Biz biliyorduk ki eski şifreler genellikle harf değişimleri kullanılarak kağıt-kalem işleriyle yapılıyordu. Günümüze doğru yaklaştığımızda durum değişti çünkü teknolojinin gelişmesiyle dijitalleşme başladı. E haliyle veriler bitlerden yani 0 ve 1 lerden oluşur vaziyete geldi.
Encoding kısacası insanların ya da makinelerin aynı dili konuşması için seçtiği bir karakter tablosu şeklinde düşünebiliriz. En bilindik encoding tablosu ASCII tablosudur. Bu tabloda bazı Türkçe karakterler bulunmadığından utf-8 gibi encodingler kullanmamız gerekiyor.
Kriptografik algoritmalar anahtarlı ve anahtarsız olmak üzere ikiye ayrılır. Anahtarsız algoritmalar özet (Hash) fonksiyonlarıdır. Anahtarlı algoritmalar ise simetrik ve asimetrik olmak üzere ikiye ayrılır.
Simetrik Anahtar/Gizli Anahtar : Bir tane gizli anahtarım var. Bu anahtarımı hem şifreleme hem de deşifreleme için kullanıyorum.
Asimetrik Anahtar/Açık Anahtar : Şifreleme ve deşifreleme anahtarlarım farklı. İlerleyen kısımda detayları konuşulacak.
Gizli Anahtar Algoritmaları
Bu algoritmada şifreleme ve deşifreleme için aynı anahtarımı kullanıyorum demiştim. Bu yüzden simetrik anahtar ismiyle de kullanırız. Bu kategori üç ana başlıktan oluşur :
Blok Şifreler
Akan Şifreler
Mesaj Doğrulama Kodları (MAC)
NOT ! MAC in Blok ve Akan şifrelerden farkı, kodların şifreleme amaçlı değil de mesajın doğruluğunun kontrol edilmesi amaçlı oluşudur. Mesajı şifrelemeden yollayıp mesajın sonuna kısa bir etiket ekliyoruz. Bu etiketi üretirken gizli anahtar kullanıyoruz.
Simetrik kriptosistemler : Blok şifreler ve akan şifreler şifreleme işlemi için kullanılmaktadır. MAC verinin ya da mesajı yollayan kaynağını doğrulamak için kullanılmaktadır.
Asimetrik kriptosistemler : Asimetrik kriptografi anahtar paylaşımı , açık anahtar şifreleme ve dijital imza gibi değişik türden algoritmalardan oluşmaktadır.
- Blok Şifre
Blok şifreler b bit uzunluğundaki veri üzerinde çalışır.
Düz metim b bit uzunluğundaki bloklara bölünür.
Her blok k bit uzunluğundaki anahtar yardımıyla şifrelenerek b bit uzunluğunda çıktı oluşturur.
Çıktı bloklarından şifreli metin elde edilir.
Bir blok şifre ve seçilen anahtar , 2^b elemanlı bir kümenin elemanlarını aynı 2^b elemanlı kümeye gönderen bir permütasyon olarak düşünülebilir.
Günümüzde b= 64 ya da 128 bit ve |k| = 128 ,192 ya da 256 bit olarak seçilir. Ne kadar yüksek bit seçersen o kadar sağlam bir güvenliğe sahip olursun. Bu yüzden bitini uzun tutmanda fayda var.
- Blok Şifre Tasarımı
Blok şifre tasarlarken neye dikkat etmek gerekir?
Claude Shannon
Bilgi Teorisinin babası olarak kabul edilir.
2. Dünya Savaşında kriptanaliz alanına katkı sağlamıştır.
Communication Theory of Secrecy Systems başlıklı makalesinde şifre tasarımı için karmaşa (Confusion) ve yayılım (Diffusion) fikirlerini önermiştir.
Karmaşa : Şifreli metin ve anahtar arasındaki ilişkinin son derece kompleks ve kapsayıcı olması.
Yayılım : Düz metindeki istatistiksel zafiyetler (Tekrarlar) şifreleme sırasında şifrenin her yanına nüfuz ederek yok olmalıdır.
NOT ! Bu karmaşa ve yayılım fikirleri ölçülebilir kavramlar değildir. Soyutturlar. Haliyle tasarım sırasında tercih ettiğimiz parametreler, fonksiyonlar ve işlemler bu kavramlar açısından en iyi olacak şekilde seçilmeye çalışılmaktadır.
Bir şifre birçok karmaşık operasyon kullanılarak tasarlanmak yerine, genellikle döngü ismini verdiğimiz bir fonksiyonun r kez tekrarlanması şeklinde tasarlanır. Çünkü buradaki anafikir şu, eğer son derece karmaşık bir tasarım yaparsanız bu tasarımın iyi olup olmadığını test etmemiz zor olacaktır. Dolayısıyla tasarladığımız şeyin güvenli olup olmadığını kontrol etmek zorlaşacaktır.
Anahtar kullanımı : Her döngüde gizli anahtarı direkt olarak kullanmak yerine, bir anahtar kullanma algoritması ile gizli anahtardan her döngüde kullanılmak üzere ayrı bir döngü anahtarı oluşturulur.
Blok şifre tasarımını iki alana ayırabiliriz :
Değişim Permütasyon Ağı : Bir döngü 3 katmandan oluşur. Anahtar ekleme, değişim ve permütasyon. Anahtar ekleme kısmında anahtar düz metin ile işleme sokulur. Değişim kısmında karmaşıklık sağlanır. Permütasyon kısmında dağılım sağlanır. Bu yapıya örnek şifreler AES ve PRESENT verebiliriz. AES şu an dünyada en çok kullanılan şifreleme algoritmasıdır. PRESENT hafif uygulamalar hafif şifreler için önerilir. Söylediklerimin özetini şekil üzerinden gösterirsem :
Bakın aslında işlemler gayet göz önünde. Ne yaptığım gayet ortada. Öyleyse güvende miyim? Bence güvendesin. Çünkü kötü bir senaryoda şifreli metin bloğuna ulaşılmış olsa bile, işlemi geri sardığında ne düz metin bloğuna ulaşabiliyorsun ne de anahtarı görebiliyorsun. Karşına anahtar ekleme gibi engeller çıkmaya başlıyor. Bir ihtimal şfreli metinden düz metni tahmin etseler yine de anahtarı bulmak için yeterli olmayacaktır. Kısacası tam anlamıyla olmasa da güvendesin.
- Feistel Şifreler ve DES
Feistel Ağı : Horst Feistel tarafından önerilmiştir. Bir döngü iki aşamadan oluşur. döngü fonksiyonu ve yer değiştirme işlemi.
B bitlik girdi iki parçaya bölünür. Döngü fonksiyonu önce bir parçaya uygulanır ve elde edilen çıktı diğer parça ile işleme sokulur. Daha sonra iki parça yer değiştirir. Bu sayede bir sonraki döngüde bu sefer işleme koyulmamış parça döngü fonksiyonundan etkilenir. Görselle daha iyi anlaşılabilir :
Bakın burada şifreli metni ele geçiren kişi, sağ parçayı gizli anahtarı bildiğinden dolayı döngü fonksiyonuna katarak yukarıya doğru çıkar ve düz metne ulaşmış olur.
SPN ve Feistel artılarını inceleyecek olursak :
/ Artılar /
Feistel : Şifreleme ve deşifreleme algoritmaları tamamen aynıdır. Sadece döngü anahtarlarının sırası değiştirilir.
SPN : Tek döngü girdinin tamamını etkilemektedir.
/ Eksiler /
Feistel : Tek döngü girdinin sadece yarısını etkilemektedir.
SPN : Deşifreleme işlemi değişim ve permütasyon tabakalarının tersini de gerektirmektedir.
- DES (Data Encryption Standard)
IBM tarafından 1970 zamanlarında tasarlanmıştır. Önceki tasarımlar Feistel tarafından yapılmıştır. 1976 yılında NSA değişim kutularını (S-box) değiştirerek şifreyi değiştirmiştir. Bu esasında olumlu bir harekettir lakin anahtar uzunluğunun kısalmasına sebep olduğu için güvenliğini azaltmıştır. 1990 zamanlarından sonra anahtar uzunluğunun kısa olması sebebiyle kullanılamaz hale gelmiştir. Birden fazla anahtar kullanan 3DES güvenlidir lakin hantaldır.
Blok uzunluğu : 64 bit
Anahtar uzunluğu : 56 bit
Döngü sayısı : 16
- AES
Baktılar DES kolay kırılıyor, AES ortaya çıkıyor. AES (Advanced Encryption Standard)/Rijndael. 2001 yılında NIST tarafından standart yapılmıştır (AES yarışması kazananı). Diğer finalistler SERPENT,TWOFISH, RC6 ve MARS.
Blok uzunluğu : 128 bit
Anahtar uzunluğu : 128, 192, 256 bit
Döngü sayısı : 10, 12, 14 (Anahtar uzunluğuna bağlıdır.)
Bilinen ataklar etkisizdir.
/ Bazı Problemler /
Anahtar Yönetimi | Anahtarlar haberleşecekler arasında önceden güvenli şekilde ulaştırılması gerekmektedir. n kişiyle haberleşmek için n anahtarın üretilip ulaştırılması gerekir.
Çözüm | Açık anahtar şifreleme algoritmaları ama daha yavaşlar (performans, yüksek data transferi sorunları). Açık anahtar kriptografisinin anahtar değişimi algoritmaları kullanılabilir (tavsiye edilen çözüm).
Anahtar Depolama | Anahtarı HDD'de ya da RAM'de direkt depolamak sorun olabilir. Virüs, Trojan vb. sisteme girerse ayvayı yeriz.
Mesaj Uzunluğu Saklama | Düz metin ve şifreli metin uzunluğu aynıdır. Dolayısıyla iletişimin ana konusunu bilen ve iletişimi dinleyen birisi şifreli metin uzunluklarına bakarak düz metnin ne olduğunu tahmin edebilir.
Anahtar Üretimi | k bitlik güvenlik için kullanılacak k bitlik anahtarın rastgele üretilmiş olması lazım.
Çözüm | Kriptografik açıdan güvenli rastgele sayı üreteçleri ve parola tabanlı anahtar üretim algoritmaları.
- Blok Şifre Çalışma Prensibi
Bir önceki bölümde blok şifreleri tanımlarken verdiğim bütün şifre örneklerinde verdiğim algoritmalar belli bir blok uzunluğunda girdi alıp aynı blok uzunluğunda çıktı alıyordu. Dolayısıyla blok uzunluğu 16 bit olan bir blok şifrenin sanki girdisi hep 16 bit mış gibi bütün bu örnekleri vermiştim. Ama pratikte kullanırken şifreleyeceğimiz veri, çok daha kısa ya da çok daha uzun olabilir. 2-3 bit gibi kısa bir veriyi de şifreleyecek olabiliriz ama 1 terabayt gibi veriyi de şifreleyecek olabiliriz. Dolaysıyla pratikte bir yöntem seçmek gereklidir. Blok şifre kullanırken 2 sorun ortaya çıkar :
Blok şifreler blok uzunluğu kadar girdi aldıkları için, 2 bayt gibi blok uzunluğundan kısa düz metinler nasıl şifrelenmelidir? Blok uzunluğundan daha uzun düz metinler nasıl şifrelenmelidir?
Bu iki problemin pratikte nasıl yanlış sonuçlar doğurabileceğini görebilmek için motivasyonu açıklamak gerekiyor. 1. motivasyon, eğer düz metin blok uzunluğundan kısaysa, kalan boşlukları 0 bitleriyle doldurabiliriz (Dolgu/Padding).
Problem | Şifreli metni deşifre eden kişi düz metnin sonundaki 0 bitlerinin dolgudan mı kaynaklandığını yoksa düz metnin kendisinin mi olduğunu ayırt edemez. Örneğin, 64 bitlik AB12F3955CDD2F00 bloğunu düşünelim. Sondaki 0 baytının dolgudan mı kaynaklandığını bilemeyiz.
Klasik Şifrelerde Dolgu
Dolgu yöntemi klasik şifrelerde mesajın başında ve sonunda uygulanmaktadır. Resmi mesajların başını ya da sonunu tahmin etmek zor değildir. Dolayısıyla şifreli metni ele geçirenler aynı zamanda düz metnin de bir kısmını bilir hale gelmektedir. Bunu engellemek için düz metnin başına ve sonuna rastgele kelimeler eklenir. Bu fazladan kelimeler deşifre işleminden sonra ayıklanır.
Şimdi sıra geldi ikinci problem için konuşmaya. Önce iki kavramdan bahsedeyim. Başlangıç Vektörleri ve Nonce. Başlangıç Vektörleri; blok şifre, özet fonksiyon ya da mesaj doğrulama kodu gibi kriptografik algoritmaların ilk çalıştırıldığı anda girdi olarak kullanılan değerlerdir. Başlangıç vektörleri gizli değildir ve standart dokümanlarından ulaşılabilir.
Rastgele üretilmiş ve tek bir sefer kullanılacak değerlere nonce adı verilmektedir. Kriptografik algoritmaların güvenliği için Nonce ve Vektörel Algoritmaların rastgele üretilmiş olmaları gerekmektedir.
NIST'in Blok Şifre Çalışma Yöntemleri
1) Electronic Codebook(ECB)
2) Cipher Block Chaining(CBC)
3) Cipher Feedback(CFB)
4) Output Feedback(OFB)
5) Counter(CTR)
6) XTS(2010 yılında 800-38E dokümanında eklenmiştir.)
Çalışma yöntemi seçimi : Çalışma yöntemi seçilirken şifreleme işleminin yapılacağı koşullar, güvenlik ve performans dikkate alınmalıdır.
3) Akan Şifreler
Simetrik anahtarlı şifreleme algoritmaları genellikle 3 grupta incelenir demiştik. Detaylı anlatacağım 2 şifreden bahsedeceğim burada. Blok şifreler ve Akan şifreler.
Blok Şifreler : Düz metin bloklarına sabit bir dönüşüm uygular.
Akan Şifreler : Düz metin bit/bayt bloklarına zaman göre değişen bir dönüşüm uygular.
Bu kısa hatırlatmadan sonra Akan şifrelere devam edelim.
Akan şifrelerin doğmasının sebebi one time pad den kaynaklanmaktadır. Diğer ismiyle Vernam şifresidir. One time pad rastgele bitlerden oluşan uzun bir anahtar dizisi kullanır. Anahtar dizisi uzunluğu en az düz metin kadar olmalıdır ve sadece 1 kez kullanılmalıdır. Şifreleme, anahtar dizisinin düz metin bitleriyle XOR'lanmasıdır. Shannon one time pad in kırılamaz olduğunu ispatlamıştır. Çok fazla anahtar dizisine ihtiyaç duyulacağından pratik değildir. Bir örnek :
- Senkron Akan Şifreler
Kısa bir anahtardan uzunca bir anahtar dizisi üreterek one time pad gibi çalışmayı hedeflemektedir. Gizli anahtar rastgele seçilir. Üretilen anahtar dizisi artık sözde rastgeledir çünkü kısa bir bilgiden çook daha uzun bir bilgi üreteceğimizden mütevellit böyle söyleriz. Dolayısıyla akan şifre alanındaki çalışmaların büyük kısmı ne tür dizilerin rastgelelik özellikleri gösterdiğini tespit etmek üzerinedir. Birçok teknik vardır en güzel örneklerden birisi Linear Feedback Shift Register :
Akan şifreler düz metni küçük parçalar halinde işliyor. Akan şifrelerin blok şifrelerden ennn temel farkı iç durum dediğimiz bir tür hafızalarının olmasıdır. Bu tür iç durum hem şifreleme üzerinde kullanılmak üzere anahtar dizisi üretir hem de kendisini günceller. Bu üretilen anahtar dizisiyle de düz metinle işleme sokma gerçekleştirilerek şifreli metin üretilir. Dolayısıyla şifreleme işlemindeki iç durum, deşifreleme yapacak kişi için de aynı olmalıdır. Başka bir söyleyişle, haberleşecek kişilerin aynı anahtar dizisini üretebilmeleri için senkron olmaları gerekir.
! NOT ! Bazı akan şifreler bir sonraki iç durumu oluştururken düz metni kullanmayabilirler. Bu durumlarda çıktı fonksiyonu anahtar dizisi (keystream) dediğimiz bitleri üretir. Şifreleme fonksiyonuysa anahtar dizisini düz metin ile birleştirir. Bu türdeki akan şifrelere anahtar dizisi üreten şifreler denir.
Senkron akan şifrelere son bir özet geçecek olursam :
Senkron akan şifrelerin aynı iç durumda olmaları gerekmektedir. Aynı anahtarı kullanmaları gerekmektedir. Senkron bozulursa da deşifreleme başarısız olur haliyle. Senkron nasıl bozulabilir ?
Cihazlarda hataların olması en basitinden telefonun yere düşmesi bile buna sebep olabilir. Haberleşme kanalındaki problemler mesela bulunduğun binada çok metal varsa ya da Everest zirvelerinde takılmaca yapıyorsan, fazladan şifreli metin bitlerinin eklenmesi, şifreleri metin bitlerinin silinmesi gibi gibi nedenler başarısızlığa örnek olarak gösterilebilir.
Peki bu bozulmuş senkronu nasıl düzeltirim :
En klasik Türk yöntem yeniden başlatma, Belirli aralıklarla özel işaretler yerleştirmek, Tüm anahtar dizilerini tek tek denemek...
Aktif bir saldırgan neler yapabilir ?
Haberleşme kanalına etki edebilenlere aktif saldırgan ismini veriyoruz. Bu şahıslar iletilmek istenen şifreli metin bitlerini silebilir, değiştirebilir ya da yeni bitler ekleyebilir. Şimdi bahsedeceğim kritik durumu dikkatli okuyun lütfen. Bir şifreli metin bitini değiştirmek diğer bitlerin deşifrelenmesine etki etmez arkadaşlar. E haliyle eğer saldırgan hangi şifreli metin bitini değiştirince düz metinde ne tür bir etki yaratacağını biliyorsa, bu etkiyi yarattığında deşifre eden kişi bundan habersiz olacaktır Ama şu da varki, değiştirmek yerine silmek ya da yenileri ekleme hamlesine giriştiyse işler değişir. Yani şifreli metin bitlerini silmek ya da yenilerini eklemek o noktadan sonraki bitlerin deşifrelenmesini etkileyeceği için deşifre eden kişi tarafından aktif saldırganın varlığı anlaşılabilir. Dolayısıyla verinin bütünlüğü ve veri kaynağının doğrulanması için ek önlemler alınmalıdır. Doğrulanmış kriptografi algoritmaları, authenticated encryption metodlarının kullanılması bu problemlere çözümler sunar.
- Asenkron Akan Şifreler
Asenkron akan şifreler senkron bozulduğunda kendi kendine senkronu geri sağlayabilmektedirler. Bu şifreler bir sonraki iç durumu belirlerken anahtar bitlerini ve daha önce ürettikleri şifreli metin bitlerinin son t tanesini kullanırlar. Aktif bir saldırgan şifreli metin bitlerini değiştirse, silse ya da ekleme yapsa bile deşifre eden kişi t adet şifreli metin bitini düzgün şekilde aldığı anda senkron tekrar sağlanmış olur. Aktif saldırganın yaptığı değişiklikler sadece t adet bitin düzgün deşifre edilmesini engeller. Bu tür akan şifrelerde de verinin bütünlüğü ve veri kaynağının doğrulanması için ek önlemler alınmalıdır.
4) Özet (Hash) Fonksiyonlar
Farklı uzunluklarda girdi alabilip hep aynı n bit uzunlukta çıktı veren fonksiyonlara özet fonksiyon denir.
Kriptografik özet fonksiyonların şu özellikleri sağlamasını bekleriz :
Ön görüntü dayanıklılığı, ikinci ön görüntü dayanıklılığı ve çakışma dayanıklılığı. Ayrıca çıktıların rastgelelik özellikleri göstermesini bekliyoruz.
1. Ön Görüntü Dayanıklılığı : Bir y çıktısı verildiğinde, bu çıktıyı verecek bir x girdisi bulmak zor olmalıdır h(x)=y . Bir kaba kuvvet saldırısı 2^n deneme gerektirmelidir. Örnek :
Bir veritabanında parolaları (Kullanıcıadı,parola) şeklinde tutmak yerine (Kullanıcıadı,h(parola)) şeklinde tutmak gerekir. Veritabanını çalan bir saldırgan kullanıcı parolasını ele geçirebilmek için kullanılan özet fonksiyonda ön görüntü bulması gerekmektedir.
2. Ön Görüntü Dayanıklılığı : Bir y çıktısı h(x1)=y eşitliği sağlayan x1 girdisi verildiğinde, h(x2)=y eşitliğini sağlayacak ikinci bir x2 girdisi bulmak zor olmalıdır. Bir kaba kuvvet saldırısı 2^n deneme gerekirmelidir. Örnek :
Bilgisayarlarınızdaki ya da bulut dosyalarınızın özet değerlerini tutun. Eğer saldırgan dosyalarınıza zararlı bir yazılım yüklediğinde hala aynı özet değerini veriyorsa, saldırgan sizi ya da bulut hizmeti sunucusunu kandırabilir.
3. Çakışma Dayanıklılığı : h(x1)=h(x2)= y eşitliğini sağlayacak iki x1 ve x2 girdisini bulmak zor olmalıdır. Bir kaba kuvvet saldırısı doğum günü paradoksu nedeniyle 2^n/2 deneme gerektirmelidir. Örnek :
Hacker hazırladığı x1 sürücü dosyası için eğer çakışma güvenliği yoksa bu sürücünün içine zararlı kodlar ekleyip oluşturduğu x2 sürücü dosyası ile aynı y değerini elde edebilir. Hacker işletim sistemi firmasına x1 analiz için gönderir. x1 zararsız olduğu için işletim sistemi firması h(x1)= y değerini elektronik olarak imzalar. Hacker zararlı kod içeren x2 sürücüsünü kullanıcılara ulaştırdığında h(x2)= y olduğu için işletim sistemi bu sürücüyü imzaladığını düşünecek ve zararsız olduğunu zannedecek
Ha bu arada doğum günü paradoksu ne ola ki ?
Bir odada en az kaç kişi olduğunda, aynı doğum gününe sahip iki insanın o odada bulunma ihtimali 1/2'den fazla olur? Bu sorunun cevabı daha fazla beklendiğinden paradoks olarak isimlendirilmiştir. Çünkü cevap 23.
- Blok Şifreden Hash Fonksiyon Tasarlamak
Özet fonksiyonlar kriptografide çok yoğun şekilde kullanıldığı için kriptografinin İsviçre Çakısı olarak bilinir. Bazı örnekler :
Dijital imza, mesaj doğrulama kodları, rastgele sayı üreteçleri, anahtar üretme fonksiyonları...
- MD4
Blok şifre kullanmayıp kendimiz tasarlamak istersek buna en eski örnek şüphesiz MD4 olur. Ronald Rivest tarafından 1990'da tasarlanmıştır. Blok uzunluğu 512 bit, özet uzunluğu 128 bit, döngü sayısı 48 dir.
Çakışma Dayanıklılığı : Çakışma üretme mikrosaniye sürüyor.
Ön Görüntü Dayanıklılığı : 2^95 işlem.