Kriptografi basit olarak verilerin şifrelenmesi olarak ifade edilir. Bu şifrelenmeyi yaparken verilen istenmeyen alıcıları için kullanışsız bir hale getirilmesini sağlar. Bu kapsam verileri kullanışsız hale getirmek, üç temek aksiyonu engellemek anlamına gelir. Bu aksiyonlar, verideki bilgileri açığa çıkarmak, veriyi değiştirmek veya veriye yanlış bilgi eklemek girişimleridir. Bunlar sırasıyla gizlik ve bütünlük problemleri olarak adlandırılır. Ek olarak, göndericinin sadece sonrada gönderenin kendisi olduğunu inkar etmek için veriyi şifreleyip gönderdiği bir durum fark edilir. “Reddedilemezlik” (non-repudiation) olarak adlandırılan, gönderilen spesifik bir verinin sonradan reddedilememe durumu kriptorafinin bir diğer amacıdır. Temelinde kriptografi teorik bir kavramdır ancak hile yapmayı engellemek ve tespit etmek veya veriyi ulaşımı engellemek için kullanılan geniş bir pratik kapsama sahiptir.
Veri şifrelenmesi üç ana dal olarak sınıflandırılabilir;
- Anahtarsız Şifreleme : Veri şifrelenirken herhangi bir anahtar kullanılmaz.)
- Simetrik Şifreleme : Şifrelerken ve şifreyi çözerken tek bir anahtar kullanılır.
- Asimetrik Şifreleme : Şifrelerken ve şifreyi çözerken gerekli olan, birbirinden farklı olarak herkese açık (public) ve özel (private) anahtar kullanılır.
Simetrik Şifreleme
Bir veriyi şifrelerken ve şifresini çözerken kullanılan anahtarın iki durumunda da aynı olduğu şifreleme türünü simetrik şifreleme denir. Bu özelliğinden dolayı paylaşımlı anahtar (shared key) şifrelemesi olarak da bilinir. Veri transferi öncesinde taraftar kendi arasında anahtarı belirlemeli veya var olan bir anahtar üstünde anlaşmalıdır. Bu sebeple gizli anahtar şifrelemesi de denmektedir.
Asimetrik Şifreleme
Asimetrik şifreleme, şifrelemeyi yaparken kullanılan anahtar ile şifrelemeyi çözerken kullanılan anahtarın birbirinden farklı olması esasına dayanır. “Özel Anahtar Şifrelemesi” olarak da bilinen bu teknikte, şifreleme ve şifre çözme işlemleri için sırasıyla bir açık ve bir özel anahtar kullanılır.
Bu diyagramda bir göndericinin verisini gönderici kişinin yani alıcının açık anahtarı ile şifreleyip kullandıkları ağ boyunca transfer ettikten sonra alıcının kendi özel anahtarı ile nasıl şifreyi çözüp veriyi okuduğunun açıklanmaktadır. Bu şekilde özel anahtar alıcı tarafında saklı kalır ve şifreleme yapmak veya şifre çözmek için herhangi bir anahtar paylaşma gereği duyulmamaktadır.
Bu diyagramda da yer alan bir başka diyagram ise gelen bir mesajın alıcı tarafından doğruluğunun ve bütünlüğünün kanıtlanması için özel anahtar şifrelemesinin ne şekilde kullanılabildiğini göstermektedir. Bu modelde gönderici kendine ait özel anahtar ile veriyi imzalar ve kullanılan ağ boyunca bu veriyi alıcıya ulaştırır. Mesaj alıcı tarafına ulaştığında göndericinin açık anahtarı ile verinin doğruluğu ve bütünlüğü kanıtlanabilir. Bu modelde herhangi bir şifre çözme işlemi yapılmamıştır. Bu teknik yalnızca verinin kimliğini doğrulama ve verinin doğruluğunu kanıtlamak için kullanılır.
Açık (Public) ve Özel (Private) Anahtarlar
Açık anahtar kriptografisini anlamak için incelenmesi gereken ilk konsept açık ve özel kavramlarıdır.
Özel anahtar, adından da anlaşılacağı gibi temel olarak kullanılacak tarafından gizli ve özel tutulan, rastgele üretilmiş karakter dizileridir. Özel anahtarlarının korunması gerekir ve hiç bir şekilde anahtara ulaşım izni verilmemelidir. Aksi taktirde bu anahtarlar mesajların şifresini çözmek için kullanıldığından tüm açık anahtar kriptografisi riske girmiş olur. Özel anahtarlar kullanılan algoritmaya bağlı olarak farklı uzunluklarda olabilirler.
Açık anahtar herkes tarafından görülebilen ve özel anahtar sahibi tarafından sunulan anahtar türüdür. Açık anahtar sahibine şifrelenmiş bir mesaj göndermek isteyen herkes, alıcı tarafından sunulan açık anahtarı kullanılarak mesajını şifreleyip özel anahtar sahibine gönderebilir. Hiç kimse gönderilen mesajın şifresini çözemez çünkü açık anahtara karşılık gelen özel anahtar, gönderilmek istenen alıcıda gizli bir şekilde tutulmaktadır. Açık anahtar ile şifrelenmiş mesaj karşı tarafa ulaştığında alıcı kendinde bulunan özel anahtar ile bu mesajın şifresini çözebilir. Bunun yanında açık anahtarı sunan kişinin doğruluğunun kanıtlanması noktasında bir kaç endişe de mevcuttur.
Özel (Hash) Fonksiyonları
Özet fonksiyonları, gelişigüzel uzunluktaki metinlerden sabit uzunlukta çıktılar üretmek için kullanılır. Özet fonksiyonları anahtarsız olarak çalışır ve veri bütünlüğünü sağlar. Algoritmalarına göre değişkenlik gösteren farklı özet fonksiyonu aileleri mevcuttur (MD, SHA1, SHA256, SHA-3 vb..) Özet fonksiyonlarının ortak kullanım alanı dijital imzalama ve mesaj doğruluğunun kanıtlanma ihtiyacı doğduğu durumlardır. Özet fonksiyonlarının 3 adet güvenlik özelliği vardır. Bunlar;
- Ön görüntü direnci
- İkinci ön görüntü direnci
- Çakışma direnci
olarak adlandırılır.
Özet fonksiyonları uzun ve kısa fark etmeksizin her uzunluktaki metni alır ve sabit uzunlukta sıkıştırılmış bir çıktı üretebilir. Çıktılar, 128 bit ve 512 bit olarak farklı boyutta çıktı üretebilir. Bu fonksiyonluk oldukça verimli ve hızlı tek yönlü çalışmaktadır. Mesaj boyutundan bağımsız olarak çok çabuk bir şekilde çıktı üretebilirler. Mesaj fazlasıyla büyük bir boyutta olduğunda verimlilik azabilir ancak bu durumda dahi özel fonksiyonları, pratik kullanım için yeterli hıza sahiptir.
Ön Görüntü Direnci
h(x) = y olarak bir fonksiyon ele alalım. Burada h, özet (hash) fonksiyonunu, x, girdiği ve y ise oluşan özet çıktıyı temsil etmektedir. Birinci güvenlik özelliği y‘nin kesinlikle ters işleme sokulamayacağını söylemektedir. Burada x, y‘nin ön görüntüsü olarak tanımlandığından bu özellik “Ön Görüntü Direnci” adını almıştır. Tek yönlülük özelliği olarak tanımlanan kaynaklarda mevcuttur.
İkinci Ön Görüntü Direnci
İkinci ön görüntü direnci özelliğine göre verilen x ve h(x) elemanları özelinde, başka bir mesaj m olarak tanımlanırsa m ≠ x olacak şekilde ve h(m) = h(x) durumunu sağlayan bir m bulmak neredeyse imkansızdır. Bu özellik ayrıca zayıf çakışma direnci olarak da adlandırılır.
Çakışma Direnci
Çakışma direnci özelliği farklı iki mesaj girdisinin anı özet çıktısı vermemesi gerektiğini söyler (h(x) ≠ h(z)). Bu özellik ayrıca güçlü çakışma direnci olarak adlandırılır.
Özet fonksiyonları tanımları gereğince her zaman bazı çakışmalar barındıracaktır. Başka bir ifadeyle, iki farklı mesajın özet çıktısı aynı olabilir ancak matematiksel olarak bu çakışmaların bulunması neredeyse mümkün değildir. Tüm özet fonksiyonlarında arzu edilen konsept “Çığ Etkisi” konseptidir. Çığ etkisi, mesaj içindeki küçük bir değişkenin -girdi içindeki tekbir harf bile olabilir- komple tüm özet çıktısının değişesi olarak belirtilir.
Özet fonksiyonlar genellikle yinelemeli bir yaklaşımla dizayn edilir. Bu methoda göre sıkışmış çıktıyı üretmek için girdi olarak gelen mesaj bir çok defa blokalama (block-by-block) ilkesine göre sıkıştırılır. Yinelemeli özet fonksiyonların popüler tipi Merkle-Damgard yapısıdır. Bu yapı, gelen verinin eşit büyüklükteki bloklara bölünmesi ve daha sonra sıkıştırma fonksiyonları yardımıyla bu blokların yinelemeli bir tutumla doldurulması fikrine dayanır. Bloklar her seferinde metin boyutunun yarısına gelecek şekilde oluşturulur ve özet çıktı elde edilir.
SHA-256 Güvenli Özetleme Algoritması (Secure Hash Algorithms)
Özet fonksiyonların bir çok tipi vardır. Özet fonksiyonlarda keyif uzunluktaki girdilerle çalışılır. Her boyutta girdi fonksiyona sokulabilir. Bununla birlikte sabit uzunluktaki girdilerle çalışan bir özet fonksiyonu oluşturabildiğimiz sürece bu fonksiyonu rasgelen uzunluktaki girişler için de çalışabilen bir fonksiyona dönüştürmek için genel bir yöntem mevcuttur. Bu yönteme Merkle-Damgrad transformanu denmektedir. SHA-256 bu yöntemi kullanan en popüler özet fonksiyonlarından biridir. Ortak terminolojide sabit uzunlukla çalışan ve kaçışma direnci özelliğini barındıran fonksiyonlara “sıkıştırma fonksiyonu (compression function)” denir.
Örnek diyagramda 768 bit mesaj girdisi olan bir SHA-256 fonksiyonunun 512-bit büyüklükteki bloklar ile 256-bit büyüklüğünde bir özet değeri üretmek için sıkıştırma fonksiyonunu kullanım şekli gösterilmiştir.
SHA-256 sabit uzunlukta çakışma direnci özelliğine sahip bir sıkıştırma fonksiyonunu rasgele uzunluklu girişleri kabul eden bir özet fonksiyonuna dönüştürmek için Merkle-Damgard dönüşümü kullanır. Girdilerin 512 bit’in bir katı olması için boşluklar doldurulur. Örneğin bir veri 768 bit büyüklüğünde ise başlangıçta 256-bit ile doldurulup çıktı olarak 256-bit çıktı elde edilir. Algoritma sonuçları sabit uzunlukta olduğundan teorik olarak farklı veriler için çıktıların çalışması mümkün gözükebilir. SHA-256 algoritması kapsamında çıktı kümesinin içinde 2^256 farklı değer olabilir. Bu ise yaklaşık olarak 10^77 sayısına tekabül etmektedir. Görünür evrendeki atom sayısının 10^80 civarında olduğu düşünüldüğünde 2^256 sayısının büyüklüğü hakkında bize fikir vermektedir. Bu sebeple bu ihtimalin gerçekleşmesi oldukça zor olacaktır.
Merkle Ağaç Yapıları
Merkle ağaç yapısı Ralph Merkle tarafından tanıtılmıştır. Merkle ağaçları büyük verilerin güvenliği ve doğruluğunu verimli bir şekilde onaylanmasını sağlamaktadır. Bu yapıda ikili (binary) bir ağaç yapısı oluşturulup en al seviyeye veri içindeki parçalar yerleştirilir. Daha sonra en alt seviyeden yukarıya doğru tek tek bir kök değer elde etmek için bu parçaların özet değeri alınır. Tek bir özet değere ulaşana kadar bu işleme devam edilir. Bu değere “Merkle Kök Değeri” adı verilir.
Dijital İmzalama
Kriptografide veri doğruluğunu onaylamak ve reddedilemezliği sağlamak için dijital imzalama yöntemi kullanılır. Başka bir ifadeyle belirli bir kişinin veya makinenin gönderdiği mesajın gönderen kişiye özel olduğunu teminat altına almak için dijital bir imza gereklidir. Bu yaklaşım, eski zamanlarda gönderilen mektupların gönderen kişiye özel bir mühür ile damgalanmasına veya kendi elleriyle imzalamasına benzetilebilir. Dijital imzalama, el yazısına mektuplara kıyasla muhtemelen daha fazla bir şekilde veriye kesinlik katan ve gönderenin kimliğini doğru biçimde belirleyen bir dijital imzalama methodudur. Resmi olarak bu method mesajın gönderdiği kanıtlar, gönderen kişinin sonradan gönderdiğini inkar edememesini ve gönderenin kimliğini garanti altına alır. Bu işlem aşağıda belirtilen adımlardan oluşur.
- Gönderici bir özetleme algoritması (SHA-256) kullanarak mesajın özet değerini oluşturur. Bu adım, alıcı tarafından verinin değiştirilmediğinin ispatlanmasını sağladığı için önemlidir.
- Oluşturulan bu özet değer göndericiye ait olan özel anahtar ile imzalanır. Burada özel anahtar sadece imzalayan tarafta olduğundan imzanın ve imzalanan verinin doğruluğu kanıtlanmış olur.
- Gönderici mesajıyla birlikte hazırladığı imzasını karşı tarafa gönderir.
- Alıcı mesajı aldığında kendisi de mesajın bir özet değerini oluşturur.
- Mesaja gönderici tarafından eklenen imzalı özet bilgiyi göndericinin açık anahtarı ile çözümler.
- Alıcı, kendi oluşturduğu özet bilgi ile karşı tarafın açık anahtarı ile çözümlediği özet bilgiyi karşılaştırır.
- Eğer iki özet bilgi tamamen birbiri ile aynıysa gönderen kişi doğrudur ve gönderdiği bilgi değiştirilmemiştir.
Dijital imzaların ayrıca üç önemli özelliği vardır.
- Dijital imzaların gerçekliği alıcı taraf tarafından doğrulanabilir.
- Özel anahtar kullanarak imzalama işlevini yalnızca mesajın göndericisi yerine getirebilir. Başka bir ifade ile legal gönderici tarafından üretilen imzalanmış mesajı o kişiden başka hiç kimse üretemez.
- Dijital imza bir mesajdan ayrılamaz ve başka mesajlar için kullanılamaz.
Aşağıda dijital imzalama operasyonun aşamaları gösterilmiştir.
Kaynaklar : Aziz Çoban, “Bitirme Çalışması”
Cevapla
Want to join the discussion?Feel free to contribute!