Kriptografik özet fonksiyonu

Zorluk derecesi

Pratik kriptografi uygulamalarında zorluk, sistemin güvenliği önemli olduğu sürece sisteme saldıracak düşmanların sistemi kıramayacakları bir derece olarak tanımlanır. Tanıma göre güvenlik ihtiyacı uygulamanın niteliğine göre değişebilmektedir. Düşmanların harcayacağı çabanın uygulamanın kırılmasıyla elde edilecek değer ile orantılı olduğu kabul edilebilir. Sistemi kırmak için gereken çaba özetin uzunluğu ile çok hızlı bir şekilde artmaktadır. Dolayısıyla özet uzunluğunu birkaç on bit artırarak, sistemi kırmak için gerekli çabayı binlerce kat artırmak mümkündür. Bu durum da sistemi kırmayı elde edilecek değere göre verimsiz hale getirecektir.
Teorik anlamda zorluk matematiksel olarak tanımlanmıştır. Asimptotik polinom zamanda kırılamayan bir güvenlik sistemi kırılması zor olarak kabul edilebilir. Bu tür tanımlar ispatlanabilir güvenlik açısından önem taşısa da pratiklikten uzak olabilmektedir. Teoride yavaş kabul edilen üstel zamanlı bir algoritma pratikte sistemi kırmak için yeterince hızlı çalışıyor olabilir. Benzer şekilde teoride hızlı kabul edilen polinom zamanlı bir algoritma pratikte çok yavaş olduğu için kullanılamayabilir.

Dosya veya mesaj bütünlüğü doğrulama

Güvenli özetlerin önemli kullanım alanlarından birisi mesaj bütünlüğü doğrulamasıdır. Bir mesajda (veya dosyada) değişiklik olup olmadığı, gönderim veya bir başka olaydan önce ve sonra hesaplanan özetlerin karşılaştırılması ile mümkündür. Çoğu sayısal imza algoritması tüm mesaj yerine yalnızca özetin doğrulamasını yapmaktadır. Özetin özgünlüğünün doğru olması mesajın kendisinin özgün olduğunu gösteren yeterli bir kanıt olarak kabul edilmektedir.
Bir diğer uygulama alanı parola doğrulamasıdır. Güvenlik gereği parolalar açık metin olarak saklanmaz, yalnızca özet değerleri tutulur. Bir kullanıcıyı doğrulanırken, kullanıcının girdiği parolanın özeti sistemde saklanan özet ile karşılaştırılır. Parolaların özeti alınarak saklanması, unutulduğunda veya kaybedildiğinde tekrar bulunamayacağı anlamına gelir. Bu nedenle böyle durumlarda parola bir yenisi ile değiştirilir.

Dosya veya veri tanımlama

Mesaj özetleri dosya tanımlamada da kullanılabilir. Git, Mercurial ve Monotone gibi kaynak kod yönetim sistemlerinde, dosya içeriği, klasör ağacı gibi çeşitli içeriği tanımlamada SHA-1 özetleri kullanılmaktadır. Kişiden kişiye dosya paylaşım ağlarında da dosyaların hangi kişilerde olduğunu bulmada ve indirilen dosya içeriğini doğrulamada özet değerleri kullanılır.
Özet fonksiyonların en önemli kullanım alanlarından birisi komut çizelgesinde verinin yerini bulmaktır. Özet fonksiyonların özel bir türü olan kriptografik özet fonksiyonları bu amaçla da kullanılabilir. Bununla birlikte, sıradan özet fonksiyonlarına kıyasla hesaplanması daha çok işlem gerektirdiğinden yalnızca güvenliğin ön planda olduğu sistemlerde kullanılmaları daha uygundur.

Sözderastsal sayı üretimi ve anahtar türetme

Kriptografik özet fonksiyonlarının bir başka kullanım alanı sözderastsal sayı üretimidir. Tek bir anahtar veya paroladan yeni anahtarlar ve parolalar türetmek amacıyla da kullanılabilir.

Blok şifreleme temelli özet fonksiyonları

Blok şifreleme yöntemlerini kullanarak özet fonksiyon oluşturmanın birkaç yöntemi vardır. Bu yöntemler blok şifre çalışma kipleri ile benzerlik gösterir. MD4, MD5, SHA-1, SHA-2 gibi iyi bilinen özet fonksiyonları blok şifreleme benzeri bileşenlerden oluşur. Geri besleme mekanizmaları ile fonksiyonun birebir ve örten olması engellenir. SHA-3 finalistleri arasında blok şifreleme ilkelerini kullanan algoritmalar olduğu gibi (Skein, BLAKE) başka tasarımlardan oluşan algoritmalar da vardır (JH, Keccak).
AES gibi standart bir blok şifreleme yöntemi özet fonksiyonlarının içindeki özel blok şifreleme yöntemlerinin yerine kullanılabilir. Böylece gömülü sistemler gibi kısıtlı kaynaklara sahip sistemlerde hem şifreleme hem de özetleme işlemleri en az kod ile yapılabilir. Ancak bu yöntemin verimlilik ve güvenlik açısından bazı sakıncaları da vardır. Özet fonksiyonlarındaki şifreler özetleme için yapılmış olup büyük anahtarlar ve büyük bloklar kullanır. Anahtarı her blok için değiştirebilir ve benzer anahtar akınlarına karşı dirençli olmak üzere tasarlanmıştır. Genel amaçlı blok şifrelerin ise tasarım amaçları farklıdır. AES'in kullandığı anahtar ve blok büyüklükleri uzun özet değerleri üretmek için elverişli değildir. AES şifreleme anahtarın her blok için değişmesi halinde verimsizleşmekte ve benzer anahtar saldırıları özet fonksiyonu olarak kullanıldığında daha az güvenli olmasına neden olmaktadır.

Merkle–Damgård yapısı

Bir özet fonksiyonu herhangi uzunluktaki bir mesajı sabit uzunlukta bir özet değerine dönüştürebilmelidir. Bu amaçla girdi eşit büyüklükte parçalara bölünür. Her parça ayrı bir tek yönlü sıkıştırma fonksiyonuna girdi olarak verilir. Bu fonksiyonun bir diğer girdisi de kendinden bir önceki fonksiyonun çıktısıdır. Bu şekilde zincirleme bir hesap sonucu özet değeri elde edilir.
Merkle–Damgård yapısı ile oluşturulmuş özet fonksiyonları, çakışmalara ancak kullanılan sıkıştırma fonksiyonunun olduğu kadar dayanıklıdır. Özet fonksiyonunda bulunacak bir çakışma çözümlenerek sıkıştırma fonksiyonunda karşılık gelen çakışma bulunabilir.
Oluşturulan özet fonksiyonunun güvenli olması için mesajın sonuna mesaj uzunluğu eklenir ve özet o şekilde hesaplanır. Aksi takdirde bilinmeyen bir mesajın sonuna başka bir mesaj eklemek suretiyle elde edilecek yeni mesaj için geçerli bir özet hesaplamak çok kolay olacaktır. SHA-1 ve MD5 gibi çok kullanılan özet fonksiyonları da bu yöntemi kullanmaktadır.
Merkle–Damgård yapısı çeşitli uzunluk artırma saldırılarına karşı zayıflık göstermektedir. Zincirleme hesaplama yapısı gereği paralel olarak çalışması da mümkün değildir. Bu nedenlerle farklı yapılarda kurulan yeni özet fonksiyonları tasarlanmaktadır.

Diğer kriptografik birimlerin yapısına katkıları

Kriptografik özet fonksiyonları diğer kriptografik birimlerin yapılarında kullanılabillir. Kriptografik güvenliği sağlamak için bu tür yapılar oluşturulurken dikkat edilmelidir.
Anahtarlı özet fonksiyonları olarak da adlandırılan mesaj doğrulama kodları özet fonksiyonları kullanılarak oluşturulur. HMAC bu duruma örnektir.
Blok şifrelemenin özet fonksiyonlarında kullanılabildiği gibi özet fonksiyonları da blok şifreleme yapılarında kullanılabilir. Luby-Rackoff yapısı içerisinde kullanılan özet fonksiyonları güvenli olduğu sürece güvenlidir.
Sözderastsal sayı üreteçleri yapısında özet fonksiyonlarını barındıran bir başka kriptografik araçtır. Gizli bir çekirdek değerini bir sayaç ile birleştirip özetlemek suretiyle sözderastsal sayılar elde edilebilir.
Akış şifrelemeyi sabit uzunlukta çıktı üreten özet fonksiyonları ile gerçeklemek mümkündür. Özet fonksiyonları kullanılarak yapılmış sözderastsal sayı üreteçlerinden elde edilen sayılar akış şifrelemede anahtar olarak kullanılabilir.

Kriptografik özet fonksiyonlarının bitiştirilmesi

Birden çok özet fonksiyonunun çıktılarının bitiştirilmesiyle elde edilecek bir özet, çakışma direnci açısından fonksiyonların en dirençlisi kadar dirençli olacaktır. Taşıma Katmanı Güvenliği algoritmasının eski sürümleri özet değeri olarak MD5 ve SHA-1 özetlerini birlikte kullanmaktaydı. Böylece, bu iki özet fonksiyonunun herhangi birinde çakışma bulunması algoritmanın güvenliğini etkilemeyecekti.
Farklı özet fonksiyonlarının Merkle–Damgård yapısı ile zincirleme birbirine bağlanması neticesinde kurulacak bir özet fonksiyonunun çakışma direnci, bileşenlerinin direncinden daha fazla değil, en fazla en dirençlisi kadar olacaktır.