Kriptoloji temelleri
Blog & Makaleler
Kriptoloji; şifre bilimi olmakla beraber, bir iletişimin güvenli bir kanalda güvenilir bir şekilde yapılması ve ya bir verinin güvenli bir şekilde saklanması ile ilgilenen bilim dalıdır. Latince gizli anlamına gelen “kryptos” ve sözcük anlamına gelen “logos” kelimelerinin birleşiminden türemiştir. Kriptoloji ile çözülen başlıca güvenlik problemleri;
- Depolanan verinin, mesajların ve iletişimin gizliliği
- Depolanan verinin, mesajların ve iletişimin bütünlüğü
- Kullanıcı ve verinin doğruluk denetiminin sağlanması
- Yapılan işlem ya da iletişimin inkar edilememesi
Kripto algoritmaları genel olarak anahtarsız ve anahtarlı olmak üzere ikiye ayrılmaktadır. Anahtarsız kripto algoritmalarına örnek olarak hash algoritmaları verilebilir. Hash algoritmaları tek yönlü algoritmalar olup algoritmanın ürettiği sonuçtan asıl metine dönüş mümkün değildir. Hash algoritmalarının kullanım alanlarına örnek olarak; kullanıcı şifrelerinin veri tabanlarında güvenli bir şekilde tutulmayı sağlaması ve bir dosyanın hash sonucu sayesinde hiçbir değişiklik yaşamadığının garanti altına alınması verilebilir. Tarihten bir diğer anahtarsız kripto algoritması örneği, Almanların ikinci dünya savaşı sırasında kullandığı Enigma Kripto Makinesi olarak verilebilir. Anahtarlı kripto algoritmaları ise simetrik algoritmalar ve asimetrik algoritmalar olarak ikiye ayrılmaktadır.
Modern anahtarlı şifre biliminin temel prensibi, 1883 yılında Kerckhoff tarafından ortaya konmuştur. Bu prensibe göre; sistemin güvenliği kripto algoritmasının gizliliğine değil, kullanılan anahtarın gizliliğine dayanmalıdır. Buradaki temel hedef, algoritma deşifre edilse bile bilgilerin gizliliğinin garanti altına alınmasıdır. Bir diğer avantaj ise, algoritmaların akademik camia tarafından analiz edilerek muhtemel açıklıkların ve hataların tespit edilebilmesidir.
Simetrik algoritmalarda iletişimin güvenliği sadece anahtarın gizliliğine bağlıdır. Simetrik algoritmalarda tek bir anahtar vardır. Şifresiz metin şifrelenirken ve şifreli metin çözülürken aynı anahtar kullanılır. Simetrik algoritmaların ilk önemli örneği, IBM’in 1970’lerde geliştirdiği Feistel algoritmasına dayanan DES (Data Encryption Standart) algoritmasıdır. Blok şifreleme algoritmalarından olan Feistel algoritmalarının genel özelliği girdiyi belirli bitlik parçalar halinde işleme alması ve işleme alınan parçalarda yer değiştirme ve karıştırma işlemlerini belirli bir sırada ve sayıda uygulamaktır. 1976 yılında, NSA (Amerikan Standartlar Enstitüsü) tarafından yer değiştirme algoritmasında DES küçük bir değişiklik geçirmiştir. DES algoritmasının blok büyüklüğü 64 bit, anahtar uzunluğu 56 bit her blok için yer değiştirme ve karıştırma işlem sayısı 16’dır. Farklara dayalı (diferansiyel) ve doğrusal (lineer) şifre çözümleme yöntemlerinin 1990’larda bulunması ile DES güvenilirliğini yitirmiştir. Ardından NSA bir yarışma düzenleyerek daha güvenilir bir kripto algoritması bulmaya çalışmıştır. Yarışmayı kazanan Rijndael algoritması, 2001’de AES (Advanced Encryption Standard) adı altında standartlaştırılmıştır. AES, 128 bitlik blokları 128,192 ve ya 256 bitlik anahtarlar için sırasıyla 10, 12 ve 14 tur işleme sokarak şifreleme sağlar. Simetrik sistemlerin en büyük problemi, anahtarın karşılıklı uçlar arasında güvenli iletişim kurulmadan önce nasıl taşınacağı ve ne şekilde saklanacağıdır. Örneğin 20 noktanın birbiri ile şifreli iletişim hattına sahip olabilmesi için her bir noktada 19 adet anahtar saklanmalı ve toplamda sistemde (20×19)/2=190 adet anahtara ihtiyaç bulunmaktadır.
Asimetrik algoritmalara geçilirse, temelde sistemde her kullanıcının iki anahtarı vardır: açık ve gizli anahtarlar. Sistemde şifreleme herkesin görebileceği açık anahtar ile yapılır. Fakat, şifre çözme işlemi sadece gizli anahtar ile yapılır. Bu sistemlerin çalışması, matematiğin çözülmesi zor olan asal sayılar, logaritma ve ya çarpanlara ayırma gibi özelliklerine dayanır. Asimetrik algoritmalar kriptolojide devrim niteliğinde adımlar atılmasına sebep olmuş ve simetrik algoritmalardaki anahtar iletim problemini ortadan kaldırmıştır. Asimetrik algoritmaların ilk örneği 1976 yılında Diffie ve Hellman tarafından ortaya konmuştur. Diffie-Hellman anahtar değişim algoritmasında, karşılıklı uçlar pozitif ve yeterli büyüklükte bir tamsayıyı taban olarak seçer. İki uç da kendinden başka kimsenin bilmediği birer pozitif sayı daha seçer. Ardından, seçilen ortak tabana seçilen gizli sayılar üssü olacak şekilde hesaplama yaparlar. Bulunan sonuç karşı tarafa gönderilir. Gelen sonucun üssü eldeki gizli sayılar olacak şekilde birer hesaplama daha yapılır. Bu işlemler sonucunda iki uç da birbirinin gizli sayılarını bilmediği halde, bu sayıların çarpımının sonucunu elde etmiş olur. Bu sayede iki taraf da kendilerinden başka kimsenin bilmediği bir ortak anahtar elde etmiş olurlar. Bir diğer başarılı asimetrik algoritma; 1977 yılında Rivest, Shamir ve Adleman tarafından bulunmuştur. Algoritmaya isimlerinin baş harfleri olan RSA adını koymuşlardır. RSA matematiğin asal sayılar özelliğinden faydalanır. Bir RSA kullanıcısı iki büyük asal sayının çarpımını üretir ve seçtiği diğer bir değerle birlikte ortak anahtar olarak ilan eder. Seçilen asal çarpanlarını ise gizli anahtar olarak saklar. Ortak anahtarı kullanan biri herhangi bir mesajı şifreleyebilir. Ancak, sadece asal çarpanları bilen kişi bu mesajı çözebilir.
Bilgi ve İletişim Güvenliği Uzmanı Onur Ünver