Kriptografi Hash fonksiyonları
Karma işlevler son derece kullanışlıdır ve neredeyse tüm bilgi güvenliği uygulamalarında görünür.
Karma işlevi, sayısal bir giriş değerini başka bir sıkıştırılmış sayısal değere dönüştüren matematiksel bir işlevdir. Hash fonksiyonunun girdisi keyfi uzunluktadır ancak çıktı her zaman sabit uzunluktadır.
Bir hash işlevi tarafından döndürülen değerler çağrılır message digest ya da sadece hash values. Aşağıdaki resim hash fonksiyonunu göstermektedir -
Hash Fonksiyonlarının Özellikleri
Karma işlevlerin tipik özellikleri şunlardır:
Fixed Length Output (Hash Value)
Hash fonksiyonu, keyfi uzunluktaki verileri sabit bir uzunlukta kapsar. Bu süreç genellikle şu şekilde anılır:hashing the data.
Genel olarak, hash, girdi verilerinden çok daha küçüktür, bu nedenle hash fonksiyonları bazen çağrılır. compression functions.
Bir hash, daha büyük bir verinin daha küçük bir temsili olduğundan, aynı zamanda digest.
N bit çıkışlı Hash işlevi, bir n-bit hash function. Popüler hash fonksiyonları, 160 ile 512 bit arasında değerler üretir.
Efficiency of Operation
Genellikle, x girişli herhangi bir karma işlevi h için, h (x) 'in hesaplanması hızlı bir işlemdir.
Hesaplamalı karma işlevler, simetrik şifrelemeden çok daha hızlıdır.
Hash Fonksiyonlarının Özellikleri
Etkili bir kriptografik araç olmak için, karma fonksiyonun aşağıdaki özelliklere sahip olması istenir:
Pre-Image Resistance
Bu özellik, bir hash işlevini tersine çevirmenin hesaplama açısından zor olması gerektiği anlamına gelir.
Başka bir deyişle, bir karma işlevi h bir karma değeri z ürettiyse, z'ye karma olan herhangi bir x girdi değerini bulmak zor bir süreç olmalıdır.
Bu özellik, yalnızca karma değeri olan ve girdiyi bulmaya çalışan bir saldırgana karşı koruma sağlar.
Second Pre-Image Resistance
Bu özellik, bir girdi ve hash'i verildiği anlamına gelir, aynı hash ile farklı bir girdi bulmak zor olmalıdır.
Başka bir deyişle, bir x girdisi için bir karma işlevi h, karma değeri h (x) üretirse, o zaman h (y) = h (x) olacak şekilde başka bir y girdi değeri bulmak zor olmalıdır.
Hash fonksiyonunun bu özelliği, bir girdi değeri ve hash'i olan bir saldırgana karşı koruma sağlar ve farklı değeri, orijinal girdi değeri yerine meşru değer olarak ikame etmek ister.
Collision Resistance
Bu özellik, aynı hash ile sonuçlanan herhangi bir uzunlukta iki farklı girdi bulmanın zor olması gerektiği anlamına gelir. Bu özellik aynı zamanda çarpışmasız hash işlevi olarak da adlandırılır.
Başka bir deyişle, bir h hash fonksiyonu için, h (x) = h (y) olacak şekilde x ve y olmak üzere iki farklı girdi bulmak zordur.
Hash fonksiyonu, sabit hash uzunluğundaki fonksiyonu sıkıştırdığı için, bir hash fonksiyonunun çarpışmalara sahip olmaması imkansızdır. Çarpışmasız bu özellik yalnızca bu çarpışmaların bulunmasının zor olduğunu doğrular.
Bu özellik, bir saldırganın aynı hash'e sahip iki girdi değeri bulmasını çok zorlaştırır.
Ayrıca, bir hash işlevi çarpışmaya dirençliyse then it is second pre-image resistant.
Hashing Algoritmalarının Tasarımı
Karmanın merkezinde, bir karma kod oluşturmak için iki sabit boyutlu veri bloğu üzerinde çalışan matematiksel bir işlev vardır. Bu karma işlevi, karma algoritmanın bir parçasını oluşturur.
Her bir veri bloğunun boyutu, algoritmaya bağlı olarak değişir. Tipik olarak blok boyutları 128 bit ile 512 bit arasındadır. Aşağıdaki çizim, karma işlevini göstermektedir -
Hashing algoritması, bir blok şifresi gibi yukarıdaki hash fonksiyonunun turlarını içerir. Her tur, tipik olarak en son mesaj bloğu ve son turun çıktısının bir kombinasyonu olan sabit boyutta bir girdi alır.
Bu işlem, mesajın tamamına hashing uygulamak için gerektiği kadar tekrarlanır. Karma algoritmanın şematiği aşağıdaki şekilde gösterilmektedir -
İlk mesaj bloğunun karma değeri, ikinci hızlı arama işlemine bir girdi haline geldiğinden, bunun çıktısı üçüncü işlemin sonucunu değiştirir ve bu böyle devam eder. Bu etki, biravalanche hashing etkisi.
Çığ etkisi, tek bir veri bitiyle bile farklılık gösteren iki mesaj için önemli ölçüde farklı hash değerlerine neden olur.
Karma işlevi ile algoritma arasındaki farkı doğru anlayın. Karma işlevi, iki sabit uzunlukta ikili veri bloğu üzerinde çalışarak bir karma kod üretir.
Hashing algoritması, mesajın nasıl parçalanacağını ve önceki mesaj bloklarının sonuçlarının nasıl birbirine zincirleneceğini belirleyen, hash fonksiyonunu kullanmak için bir süreçtir.
Popüler Karma İşlevleri
Bazı popüler hash işlevlerine kısaca bakalım -
Mesaj Özeti (MD)
MD5, birkaç yıldır en popüler ve yaygın olarak kullanılan hash işleviydi.
MD ailesi, MD2, MD4, MD5 ve MD6 hash fonksiyonlarından oluşur. İnternet Standardı RFC 1321 olarak kabul edildi. 128 bitlik bir hash fonksiyonudur.
MD5 özetleri, aktarılan dosyanın bütünlüğü hakkında güvence sağlamak için yazılım dünyasında yaygın olarak kullanılmaktadır. Örneğin, dosya sunucuları genellikle dosyalar için önceden hesaplanmış bir MD5 sağlama toplamı sağlar, böylece bir kullanıcı indirilen dosyanın sağlama toplamını onunla karşılaştırabilir.
2004'te MD5'te çarpışmalar bulundu. Bilgisayar kümesi kullanılarak bir analitik saldırının yalnızca bir saat içinde başarılı olduğu bildirildi. Bu çarpışma saldırısı tehlikeye atılmış MD5 ile sonuçlandı ve bu nedenle artık kullanılması önerilmiyor.
Güvenli Karma İşlevi (SHA)
SHA ailesi dört SHA algoritmasından oluşur; SHA-0, SHA-1, SHA-2 ve SHA-3. Aynı aileden olsalar da yapısal olarak farklılar var.
Orijinal versiyon, 160 bitlik bir hash fonksiyonu olan SHA-0'dır ve 1993 yılında Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) tarafından yayınlandı. Çok az zayıflığı vardı ve çok popüler hale gelmedi. 1995'in sonlarında, SHA-1, SHA-0'ın iddia edilen zayıflıklarını düzeltmek için tasarlandı.
SHA-1, mevcut SHA hash işlevlerinin en yaygın kullanılanıdır. Güvenli Yuva Katmanı (SSL) güvenliği dahil olmak üzere yaygın olarak kullanılan çeşitli uygulamalarda ve protokollerde kullanılır.
2005 yılında, pratik zaman çerçevesi içinde SHA-1 için çarpışmaları ortaya çıkarmak için SHA-1'in uzun vadeli kullanılabilirliğini şüpheli hale getiren bir yöntem bulundu.
SHA-2 ailesinin hash değerindeki bit sayısına bağlı olarak dört SHA varyantı, SHA-224, SHA-256, SHA-384 ve SHA-512 daha vardır. SHA-2 hash işlevi için henüz başarılı bir saldırı rapor edilmemiştir.
SHA-2 güçlü bir hash işlevi olsa da. Önemli ölçüde farklı olsa da, temel tasarımı hala SHA-1'in tasarımını takip ediyor. Bu nedenle, NIST yeni rekabetçi hash fonksiyon tasarımları için çağrıda bulundu.
Ekim 2012'de NIST, Keccak algoritmasını yeni SHA-3 standardı olarak seçti. Keccak, verimli performans ve saldırılara karşı iyi direnç gibi birçok avantaj sunar.
RIPEMD
RIPEMD, RACE Integrity Primitives Evaluation Message Digest'in kısaltmasıdır. Bu karma işlevler kümesi, açık araştırma topluluğu tarafından tasarlanmıştır ve genellikle bir Avrupa karma işlevi ailesi olarak bilinir.
Set, RIPEMD, RIPEMD-128 ve RIPEMD-160'ı içerir. Bu algoritmanın 256 ve 320 bitlik sürümleri de vardır.
Orijinal RIPEMD (128 bit), MD4'te kullanılan tasarım ilkelerine dayanmaktadır ve şüpheli güvenlik sağladığı görülmüştür. RIPEMD 128-bit sürümü, orijinal RIPEMD'deki güvenlik açıklarının üstesinden gelmek için hızlı bir düzeltme alternatifi olarak geldi.
RIPEMD-160, geliştirilmiş bir versiyondur ve ailede en yaygın kullanılan versiyondur. 256 ve 320 bitlik sürümler, yanlışlıkla çarpışma olasılığını azaltır, ancak sırasıyla RIPEMD-128 ve RIPEMD-160 ile karşılaştırıldığında daha yüksek güvenlik seviyelerine sahip değildir.
Girdap
Bu, 512 bitlik bir karma işlevdir.
Gelişmiş Şifreleme Standardının (AES) değiştirilmiş sürümünden türetilmiştir. Tasarımcılardan biri, AES'in ortak yaratıcısı Vincent Rijmen'di.
Whirlpool'un üç versiyonu yayınlandı; yani WHIRLPOOL-0, WHIRLPOOL-T ve WHIRLPOOL.
Hash Fonksiyonlarının Uygulamaları
Kriptografik özelliklerine dayalı iki doğrudan hash fonksiyonu uygulaması vardır.
Parola Saklama
Karma işlevler, parola depolamaya koruma sağlar.
Parolayı açık olarak saklamak yerine, çoğunlukla tüm oturum açma işlemleri, parolaların karma değerlerini dosyada depolar.
Parola dosyası (kullanıcı kimliği, h (P)) biçiminde bir çift tablosundan oluşur.
Oturum açma işlemi aşağıdaki şekilde tasvir edilmiştir -
Bir davetsiz misafir, şifreye erişmiş olsa bile sadece şifrelerin karmalarını görebilir. Hash fonksiyonu ön görüntü direnci özelliğine sahip olduğu için, hash kullanarak oturum açamaz ve şifreyi hash değerinden türetemez.
Veri Bütünlüğü Kontrolü
Veri bütünlüğü kontrolü, karma işlevlerin en yaygın uygulamasıdır. Veri dosyalarında sağlama toplamları oluşturmak için kullanılır. Bu uygulama, kullanıcıya verilerin doğruluğu konusunda güvence sağlar.
İşlem aşağıdaki şekilde tasvir edilmiştir -
Bütünlük kontrolü, kullanıcının orijinal dosyada yapılan değişiklikleri tespit etmesine yardımcı olur. Bununla birlikte, özgünlük konusunda herhangi bir güvence sağlamaz. Saldırgan, dosya verilerini değiştirmek yerine tüm dosyayı değiştirebilir ve hep birlikte yeni hash hesaplayıp alıcıya gönderebilir. Bu bütünlük denetimi uygulaması, yalnızca kullanıcı dosyanın orijinalliğinden eminse kullanışlıdır.