Kriptoloji; Kriptografi ve Kriptoanaliz olmak üzere ikiye ayrılır. Kriptografi güvenli veri paylaşımı için gerekli algoritmaları ve protokolleri ortaya koyar. Kriptoanaliz ise kriptografik algoritmaların, varsa açıklarını tespit ederek, onları kırmaya çalışır. Kriptoanaliz ile ilgilenen ve üzerinde araştırmalar yapan iki grup vardır: - Birinci grup, algoritmalardaki açıkları ve eksiklikleri tespit ederek, kendilerine çıkar sağlamaya çalışan kişilerden oluşur. - İkinci grupta yer alanlar genellikle bilim adamlarından oluşur ve algoritmaların varsa açıklarını tespit ederek, kimse zarar görmeden bu açıkların giderilmesini sağlarlar. Geçmişten günümüze kötü niyetli kişiler şifreleme sistemlerine saldırırken, iyi niyetli kişiler de bu saldırılara karşı savunma mekanizmaları geliştirmektedir. Bu iki grubun faaliyetleri, bilgi güvenliği kavramını oluşturmuştur. Kriptografik algoritmalar ve protokoller dört temel alanda gruplandırılır: - Simetrik şifreleme, - Açık anahtar şifreleme, - Veri bütünlüğü, - Kimlik doğrulama. Şifreleme algoritmaları kullandıkları anahtar sayısına göre; - Tek anahtar kullanan şifreleme algoritmaları , - Birbiri ile ilişkili iki anahtar kullanan şifreleme algoritmaları ve - Anahtar kullanmayan algoritmalar olarak üç ana başlıkta incelenebilir. Simetrik şifrelemede tek anahtar kullanıldığından, bu şifreleme algoritmaları "tek anahtar şifreleme" ve "gizli anahtar şifreleme" algoritmaları olarak da bilinirler. Simetrik şifreleme algoritmalarına simetrik denmesinin nedeni, şifreleme ve çözme için tek ve aynı anahtarın kullanılmasıdır. Açık anahtar şifreleme algoritmalarında ise açık ve gizli olmak üzere iki anahtar kullanılır. Bunlardan biri şifreleme diğeri ise çözme işlemleri için kullanılır. Bu nedenle iki anahtarlı bu algoritmalar, asimetrik şifreleme algoritmaları olarak da adlandırılır. Simetrik şifreleme algoritmalarının beş temel ögesi vardır: - Açık metin, - Şifreleme fonksiyonu, - Gizli anahtar, - Şifrelenmiş metin, - Çözme fonksiyonu. Bu temel bileşenler değişkenlerle ifade edilir. Açık veya düz metin P, şifrelenmiş metin C, gizli anahtar K, şifreleme fonksiyonu E ve çözme fonksiyonu D ile temsil edilir. Düz metin kümesi, olası bütün metinleri içermektedir. Buna benzer olarak, şifrelenmiş metin kümesi de açık metinlere karşı gelen şifrelenmiş metinlerden oluşur. Anahtar kümesi ise belli şartlara göre seçilebilecek sonlu sayıda anahtardan oluşmaktadır. Herhangi bir düz metni şifreleme fonksiyonu ile şifreledikten sonra elde edilen şifrelenmiş metni, çözme fonksiyonu ile çözdüğümüzde orijinal açık metne ulaşmak gerekmektedir. Bu nedenle her fonksiyon şifreleme fonksiyonu olarak seçilemez. Simetrik şifreleme algoritmaları, orijinal açık metnin şifrelenme yöntemine göre iki ana gruba ayrılabilir. Bu ölçüte göre simetrik algoritmalar; - Blok ve - Dizi şifreleme algoritmaları olarak sınıflandırılır. Dizi Şifreleme Dizi şifreleme bit tabanlı bir simetrik şifreleme yöntemidir. Bağımsız olarak, açık metinden sıradaki tek biti kayar anahtar yardımı ile işleme tabi tutar ve karşılığında bir bitlik şifrelenmiş metin üretir. Dizi şifreleme yöntemleri, Eşzamanlı ve Eşzamansız olmak üzere ikiye ayrılır. Eşzamanlı dizi şifrelemesinde kayan anahtar üretimi sadece kullanıcının gizli anahtarına bağlıdır. Eşzamansız dizi şifrelemede ise kayan anahtar üretimi hem kullanıcının gizli anahtarına hem de bir önceki adımda üretilmiş şifrelenmiş metine bağlıdır. Rastgele Sayılar: Kriptolojik algoritmalarda kullanılacak rastgele sayıların iki önemli özelliği olmalıdır. Bu özellikler, "Rastgelelik" ve "Tahmin edilemezlik" olarak adlandırılır. İstatistiksel olarak bir sayının rastgele olması için tekdüze dağılım göstermek ve bağımsız olmak üzere iki önemli özelliğe sahip olması gerekmektedir. Bilgisayar bilimlerinde; - Gerçek rastgele sayılar, - Sözde rastgele sayılar ve - Kriptolojik olarak güvenli rastgele sayılar olmak üzere üç farklı rastgele sayı vardır. Tek Zamanlı Blok: Simetrik şifrelemede bir kullanımlık oturum anahtarları kullanmak önemlidir. Kullanılacak gizli anahtarın, şifrelenecek açık veya düz metnin uzunluğu kadar olması ve sadece bir kez kullanılması durumunda, şifrelenmiş metni ele geçiren saldırgan, hiçbir matematiksel yöntem ile ne orijinal açık metni ne de gizli anahtarı elde edebilir. Bu tür yöntemlere, teorik olarak kırılamaz sistemler adı verilir. Tek zamanlı blok, bütüncül güvenlik sağlayan bir şifreleme yöntemidir. Fakat uygulamada bazı zorluklar ortaya çıkmaktadır. Gizli anahtarın mesaj ile aynı uzunlukta olması ve tamamen gerçek rastgele sayılar kullanılarak elde edilmesi bu zorluklardan ikisidir. Ayrıca oluşturulacak gizli anahtarın güvenli bir yol ile iletişime geçilecek kullanıcıya ulaştırılması gerekmektedir. Son olarak, bu işlemin her bir şifreli mesaj için tekrar edilmesi gerekmektedir. Bütün bu zorluklar tek zamanlı blok yönteminin kullanımını sınırlandırmaktadır. RC4 RC4, Ron Rivest tarafından 1987 yılında geliştirilmiştir. 40 ila 256 bit arasında değişken boyutta gizli anahtar kullanmaktadır. Algoritmanın temeli rastgele karıştırmaya dayanmaktadır. Algoritma ilk olarak 256 bayt uzunluğundaki S dizisini ilk kullanım için hazırlar. Eğer gizli anahtar boyutu 256 bayt değilse, anahtarı tekrar ederek 256 baytlık T dizisini oluşturur. Anahtarı tutan T dizisi ve S dizisi kullanılarak S dizisi karıştırılır. Karıştırma işlemi sonunda S dizisinin içerisinde 0 ile 255 arasındaki sayılar karışık bir halde elde edilir. Kayan anahtar dizisini elde etmek için karıştırılmış S dizisi kullanılır. K değişkeni ile 8 bitlik kayan anahtar tutulmaktadır. Şifreleme yapmak için açık metinden ilk karaktere karşılık gelen 8 bit alınır ve K değişkeni ile XOR'lanır. Böylece açık metindeki ilk karaktere karşılık gelen şifrelenmiş metin oluşturulur. Benzer şekilde açık metindeki ikinci karakteri şifrelemek için yeni K değişkeni elde edilir ve şifrelemeye açık metindeki bütün karakterler bitinceye kadar devam edilir. Oluşan şifrelenmiş metin güvenli bir şekilde iletilir. Şifrelenmiş metni alan kullanıcı benzer adımları takip ederek aynı kayan anahtar dizisini oluşturmalıdır. Kayan anahtar dizisini elde ettikten sonra, ilk 8 biti kullanarak şifrelenmiş metindeki ilk karakter ile XOR'lar. Bu işlemi bütün karakterler için tekrar eder. İşlemin sonunda açık metni gizli bir şekilde elde eder. Kayan anahtar dizisini elde etmek için kullanılan kod, kullanıcının gizli anahtarı hakkında dışarıya bilgi vermektedir. Bu açığı kapatmak için RC4A ve RC4+ gibi alternatif çözümler önerilmiştir. Blok Şifreleme Blok şifreleme, iletilecek mesajı kullanılacak yönteme bağlı olarak eşit uzunlukta parçalara ayırarak şifrelenmiş metne dönüştürür. Dizi şifrelemeden farklı olarak blok şifrelemede açık metinler bloklar halinde şifrelenir. Belli şartlara göre açık metin bloklara parçalanır. Her bir blok sırayla, simetrik algoritma kullanılarak şifrelenir. Elde edilen şifreli metinler yine aynı sırada çözülerek, açık metinler bloklar halinde elde edilir. Bu bloklar bir araya getirilerek orijinal metine ulaşılır. Klasik Şifreleme Algoritmaları: Klasik şifreleme algoritmaları günümüz modern şifreleme algoritmalarına temel teşkil etmiştir. Klasik şifreleme algoritmaları; - Sezar Şifreleme Algoritması, - Affine Şifreleme, - Monoalfabetik Şifreleme ve - Vigenere Şifreleme olarak sıralanabilir Sezar Şifreleme Algoritması: Bilinen en eski ve en basit şifreleme yöntemidir. Alfabede her bir harfin belirli sayıda karakter ötelenmesi ile şifreleme tablosu elde edilir. İngiliz alfabesinde yer alan 26 harfe sıfırdan başlayarak sırayla bir pozisyon sayısı atanır. Alfabenin ilk harfi "a" 0 ile son harfi "z" ise 25 ile eşlenir. Açık metinde yer alan her harfin pozisyon sayısı bulunur. Bu pozisyon sayılarının her biri 3 ile toplanır. Bu toplama işlemi sonucunda elde edilen sonuçların mod 26 işlemine göre sonuçları bulunur. Bulunan sayılar şifrelenmiş metinde yer alacak harflerin pozisyon sayılarıdır. Bu pozisyon sayılarına karşı gelen harfler belirlenerek şifreli metin elde edilir. Bu metin karşı tarafa gizli mesaj olarak gönderilir. Bu şifreleme algoritmasında seçilen "3" rakamı gizli anahtardır. Bu anahtar her şifreleme için aynıdır. Sezar Şifreleme en eski ve en basit şifreleme olduğundan kırılması oldukça kolaydır. Şifre çözme işlemi benzer şekilde yapılır. Şifreleme ve şifre çözme birbirinin tersi işlemlerdir. Alıcı, şifrelenmiş metni alınca önce her harfin pozisyon sayısını bulur. Bu sayılardan 3 çıkarır. Elde ettiği sonuçların mod 26'ya göre eşitliklerini bulur. Bu sayılar pozisyon sayıları olduğundan bunlara karşı gelen harfleri bularak açık metni elde etmiş olur. - Şifreleme fonksiyonu; y = x + k mod 26 ve - Çözme fonksiyonu; x = y – k mod 26'dır Toplama şifreleme yönteminde k gizli anahtarının alabileceği değerler 26'dan küçük doğal sayılardır. Bu durumda anahtarın alabileceği 26 farklı değer vardır. Ama anahtar değerinin 0 olması durumunda açık ve şifrelenmiş metin arasında bir fark oluşmaz. Bu nedenle anahtarın 0 olarak seçilmesinden kaçınılmalıdır. Anahtar uzayında 26 farklı değer olduğundan bu şifreleme yönteminde kullanılan anahtarı deneme yanılma ile bulmak için bu 26 farklı anahtar sırasıyla denenir. Affine Şifreleme: Affine şifreleme yöntemi Sezar yönteminin geliştirilmesiyle elde edilmiştir. Şifreleme işlemi için açık metin belirlenen bir sayı ile çarpılır ve Sezar şifrelemesinde olduğu gibi öteleme miktarıyla toplanır. - Şifreleme fonksiyonu; y = a x + b mod 26 ve - Çözme fonksiyonu; x = a-1 mod 26'dır. Çözme fonksiyonu için a değerinin mod 26 işleminde tersinin olması zorunludur. Dolayısıyla a değeri {1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25 sayılarından biri olarak seçilmek zorundadır. Bu durumda Affine şifrelemesi için anahtar uzayı 12 x 26 = 312 farklı anahtardan oluşabilmektedir. Bu hesaplama İngiliz alfabesi dikkate alınarak yapılmıştır. Monoalfabetik Şifreleme: Monoalfabetik şifrelemede anahtar uzayını artırmak için alfabedeki her bir karakter başka bir karakter ile değiştirilerek şifreleme tablosu oluşturulur. Çözümleme ise bu işlemin tam tersi yapılarak elde edilir. Monoalfabetik şifreleme algoritması için uygulanan kaba kuvvet saldırısı ile korsan hiçbir sonuç elde edemez. Ancak bu kez de başka yöntemler kullanarak algoritmayı kırmaya çalışırlar. İngilizcede en sık kullanılan harf "e" dir. Dolayısıyla şifrelenmiş metinde en sık kullanılan karakteri tespit edip "e" karakteri ile yer değiştirilmesi durumunda bir takım çıkarımlar elde edilebilir. Buna ek olarak, dilin yapısıyla ilgili elde edeceği bilgiler yardımıyla, kaba kuvvet saldırısı ile kırılması imkansız olan bir yöntemin çözülmesi mümkün hale gelebilmektedir. Vigenere Şifreleme: Vigenere şifreleme algoritması, monoalfabetik yöntemleri çözmekte kullanılan sıklık analizi saldırılarına karşı olan zafiyeti, şifrelenmiş metinde kullanılan her harfin neredeyse eşit sıklıkta kullanılmasıyla ortadan kaldırmıştır. Vigenere algoritmasında bir parola vardır. Parolanın açık metinden kısa olması halinde parola açık metin uzunluğunca tekrar edilir. Paroladaki her harf açık metindeki "A" karakterine karşılık gelir ve diğer karakterler Sezar şifrelemesinde olduğu gibi ötelenir. Bu yöntemin getirdiği en önemli farklılık açık metindeki bir karakterin birçok farklı karakter kullanarak şifrelenmiş metin oluşturmasıdır. Modern Simetrik Şifreleme Yöntemleri: Modern simetrik şifreleme yöntemleri şöyle sıralanabilir: - Data Encryption Standard , - 3Des, - Advanced Encryption Standard , - International Data Encryption Algorithm . Data Encryption Standard : IBM tarafından geliştirilen, Amerikan Ulusal Güvenlik Ajansı tarafından algoritmanın bazı adımlarında değişiklik yapılarak kabul edilen ve 1977-2001 yılları arasında yaygın şekilde kullanılan bir blok şifreleme algoritmasıdır. Bilgisayar teknolojisinin gelişmesiyle 2000'li yılların başında kaba kuvvet saldırılarına karşı zafiyeti olduğu için Advanced Encryption Standard algoritması DES'in yerini almıştır. Donanım üzerinde verimli ve hızlı bir şekilde şifreleme yapması amaçlanmıştır. Yazılımda çalışması arka planda kalmıştır. DES, 64-bit uzunluğunda bloklar kullanarak şifreleme yapar. 64 bitlik anahtar uzunluğu vardır ama 56 biti etkili şekilde kullanılır, geriye kalan 8 bit kontrol amaçlıdır. DES, 16 adet birbirinin aynısı işlemlerden oluşan turlardan meydana gelmektedir. Güçlü bir şifreleme algoritması, Karışıklık ve Yayılma olmak üzere iki temel operatör üzerine kurulmalıdır. DES algoritması birbirini takip eden 16 karışıklık ve yayılma operatöründen oluşmaktadır. DES algoritması açık metinden 64 bitlik bir bloğu 48 bitlik tur anahtar ile birlikte işleme tabi tutarak 64 bitlik şifrelenmiş metin elde eder. DES Feistel şifreleme yöntemi üzerine kurulmuştur. Feistel şifreleme yönteminde 64 bitlik bloklar ikiye bölünerek sol 32 ve sağ 32 bitlik bloklar elde edilir. Sağ 32 bitlik blok tanımlanmış bir fonksiyona gönderilir. Bu fonksiyonun girdileri sağ 32 bitlik blok ve 48 bitlik tur anahtarıdır. Fonksiyondan çıkan sonuç sol 32 bit ile XOR'lanarak bir sonraki turun sağ 32 bitlik bölümüne kopyalanır. Sağ 32 bitlik blok aynı zamanda bir sonraki turun sol 32 bitlik bölümüne kopyalanır. Bu işlem 16 kez tekrarlanır, ama her turda 56 bitlik gizli anahtardan elde edilen farklı 48 bitlik tur anahtarı kullanılır. DES algoritmasının Feistel şifreleme yöntemi üzerine kurulmasından dolayı çözme fonksiyonu, şifreleme işlemlerinin aynısıdır. Tek fark, çözme işleminde tur anahtarının ters sırada kullanılmasıdır. Yani çözme işleminin birinci turunda on altıncı şifreleme tur anahtarı, ikinci turunda on beşinci tur anahtarı gibi ters sırayla kullanılması gerekir. 3Des: DES algoritmasının yaygın olarak bilinmesi ve kullanılmasından dolayı kaba kuvvet saldırılarına karşı koyabilecek alternatif çözümler ortaya kondu. Bunlardan bir tanesi 3DES şifreleme yöntemidir. Adından da anlaşabileceği üzere DES algoritmasının üç defa peş peşe farklı gizli anahtarlar kullanmak suretiyle uygulanmasıdır. Advanced Encryption Standard : AES algoritması 128, 192, 256 bit olmak üzere üç farklı anahtar uzunluğu kullanarak 128 bitlik bloklar halinde şifreleme yapar. 128 bitlik blok 4 x 4 durum matrisinde saklanır ve bütün işlemler bu matris kullanılarak yapılır. 128 bit uzunluğundaki anahtar günümüzde yeterli güvenlik sağlarken, gizliliğin çok önemli olduğu durumlarda 192 veya 256 bitlik anahtar uzunluğu tercih edilebilir. AES, anahtar uzunluğuna bağlı olarak birbirinin benzeri turlardan oluşmaktadır. AES şifreleme algoritmasının; - Anahtar ekleme katmanı, - Bayt yer değiştirme katmanı ve - Yayılma katmanı olarak üç temel katmanı vardır. Anahtar ekleme katmanında tur anahtarı ile durum matrisi XOR'lanır. Bayt yer değiştirme katmanında durum matrisi S-Box adı verilen doğrusal olmayan bir tablo ile dönüştürülür. Yayılma katmanı satır kaydırma ve sütun karıştırma katmanlarından oluşur. International Data Encryption Algorithm : IDEA algoritmasında açık metin boyu 64 bittir. Benzer şekilde şifrelenmiş metin boyu da 64 bittir. 64 bitlik metinleri şifrelediğinden dolayı IDEA da bir blok şifreleme algoritmasıdır. Kullanılan anahtar uzunluğu ise 128 bittir. 1991 yılında Xuejia Lai ve James L. Massey tarafından geliştirilmiştir. 64 bitlik açık metin 16 bitlik dört bloğa ayrılarak, 16 bitlik bloklar halinde şifrelenir. IDEA kullanılarak yapılan şifrelemede toplam 17 iterasyon vardır. 128 bitlik anahtardan toplam 52 iterasyon anahtarı üretilir. Bu anahtarların her biri 16 bit uzunluğundadır. Tekli iterasyonlarda dört iterasyon anahtarı kullanılır. Çiftli iterasyonlarda ise iki iterasyon anahtarı kullanılır. Toplam 17 iterasyon içinde dokuz tekli ve sekiz çiftli iterasyon vardır. Şifreleme için kullanılan anahtarlar şifre çözmek için aynen kullanılmaz. Karşı taraf, şifre çözmek için elindeki aynı 128 bitlik anahtardan üreteceği 52 iterasyon anahtarının şifre çözme için karşılıklarını üretir. Tekli iterasyonlarda bit tabanlı toplama ve çarpma işlemleri yapıldığından şifreleme için kullanılan ilgili anahtarların toplama ve çarpmaya göre tersleri bulunarak şifre çözmek için kullanılır. Toplama ve çarpmaya ek olarak kullanılan diğer bir operasyon ise XOR operatörüdür. Blok Şifreleme Metotları Blok şifreleme algoritmaları açık metni bloklara parçalayarak şifrelenmiş metin elde eder. Blok uzunlukları kullanılan algoritmalara göre farklılık göstermektedir. Eğer son kalan parça blok uzunluğundan kısa ise uygun bir yöntem ile tamamlanır. Şifreleme yapmak için birçok mod tanımlanmıştır. Bu modlardan standartlarda kabul edilen ve yaygın olarak kullanılan beş tanesi aşağıda açıklanmıştır: - Elektronik Kod Kitabı : Açık metni, kullanılan algoritmaya göre uygun uzunluktaki bloklara böler. Her bir bloğu bağımsız şekilde gizli anahtar kullanarak şifrelenmiş metin elde eder. Aynı açık metin için her seferinde aynı şifrelenmiş metin elde edilir. Uzun ve belirli yapıda olan mesajlar için güvenlik açısından tavsiye edilmez. Bu yöntem, şifrelenmiş metinlerin yerlerini değiştirerek metnin içeriği ile oynanmasına da izin verir. - Şifre Blok Zincirleme : CBC mod hem üretilecek şifrelenmiş metnin kendisinden önceki bütün açık metinlere bağlı olmasını, hem de şifreleme yöntemini ilk turda rastgele sayılardan oluşturulan bir vektör kullanarak farklılaştırmayı amaçlamıştır. İlk tur hariç diğer bütün turlarda açık metin bloğu, bir önceki şifrelenmiş metin ile XOR'lanarak şifreleme algoritmasına girdi olarak gönderilir. İlk turda ise şifrelenmiş metin yerine rastgele oluşturulmuş bir blok kullanılır. - Çıktı Geribesleme Modu : Bu mod dizi şifreleme algoritmalarında kullanılır. İlk olarak, rastgele üretilen başlangıç vektörü şifreleme algoritmasına girdi olarak gönderilir. Şifreleme algoritmasının çıktısı açık metin ile XOR'lanır ve ilk şifrelenmiş metin bloğu elde edilir. İlk turdan sonraki adımlarda başlangıç vektörü yerine bir önceki adımda elde edilen şifreleme algoritmasının çıktısı kullanılır. - Sayaç Modu : Şifreleme algoritmasına başlangıç vektörünün sonuna ilk tur için 1 sayısı eklenerek gönderilir ve diğer turlarda bu sayı artırılır. - Şifre Geribesleme Modu : İlk tur hariç diğer bütün turlarda üretilen şifrelenmiş metin, şifreleme algoritmasına girdi olarak gönderilir. Şifreleme algoritmasının çıktısı ile açık metin XOR'lanır. Başlangıç vektörü ilk tur için şifreleme algoritmasına girdi olarak gönderilir. Şifreleme algoritmasının çıktısı ile ilk açık metin bloğu XOR'lanır. Simetrik Şifreleme Algoritmalarının Problemleri Simetrik şifreleme algoritmalarının en önemli avantajı hızlı şifreleme algoritmaları olmalarıdır. Simetrik şifreleme algoritmalarının dezavantajları da vardır: - Birinci dezavantajı anahtar dağıtım problemi olarak adlandırılır. - Simetrik şifreleme algoritmalarının ikinci problemi toplam anahtar sayısı problemi olarak adlandırılır. Birbirleri ile ikili gruplar halinde mesajları simetrik şifreleme algoritmaları kullanarak paylaşmak isteyen kişi sayısı çoğaldıkça kullanılacak toplam simetrik anahtar sayısı, kişi sayısıyla doğrusal olarak değil toplam kişi sayısının karesiyle orantılı olarak çoğalmaktadır. - Üçüncü problem, aynı simetrik anahtar bütün mesajları şifrelemek için kullanıldığında ortaya çıkan güvenlik problemidir. İki kişi, aralarında mesaj gizliliği için simetrik şifreleme kullandıkları zaman bütün mesajları daha önce güvenli paylaştıkları aynı gizli simetrik anahtarı kullanarak şifreleyebilirler. Aynı anahtar kullanılarak şifreli metinler çözülür. İki kişi uzun süre aynı simetrik anahtarı kullanarak şifreli mesajlaşabilir. Kötü niyetli kişi veya kişiler bu haberleşmeleri dinleyerek şifreli metinleri ele geçirebilir. Elde ettikleri şifreli metinleri ve diğer bilgileri kullanarak, bu iki kişinin şifreleme için kullandıkları simetrik anahtarı ele geçirebilirler. Bu anahtar elde edildikten sonra bu anahtar kullanılarak şifrelenen bütün gizli mesajlara ulaşabilirler.