Özet (hash) fonksiyonu
Özet fonksiyonu, pratikte herhangi bir uzunluktaki girdiyi sabit boyutlu bir özete dönüştürür.
Tanım
Özet fonksiyonu veriyi alır ve hash, özet ya da parmak izi denen sabit boyutlu bir değer hesaplar. Aynı giriş baytları her zaman aynı çıktıyı üretir; girişteki küçük bir değişiklik ise normalde özeti değiştirir.
Hashing şifreleme değildir. Özet değeri özgün mesaja geri decode veya deşifre edilmek için tasarlanmaz; karşılaştırma, tanımlama, bütünlük kontrolü ve daha büyük kriptografik yapıların bileşeni olarak kullanılır.
Kriptografik özellikler
Kriptografik bir özet fonksiyonu, ön-görüntü, ikinci ön-görüntü ve çakışma saldırılarına dirençli olacak şekilde tasarlanır. Basitçe, verilen bir özet için giriş bulmak, seçilen bir mesajla aynı özete sahip farklı bir giriş bulmak veya aynı özete sahip herhangi iki giriş bulmak zor olmalıdır.
Modern sistemlerde SHA-256, SHA-512, SHA-3 ve BLAKE2 kullanılır. MD5 ve SHA-1 eski sağlama toplamlarında hâlâ görülür, ancak çakışma dirençleri kırılmıştır ve güvenlik açısından hassas verileri korumamalıdır.
Kullanımlar ve yaygın karışıklıklar
Hash değerleri çoğunlukla on altılık dizeler olarak gösterilir. Örneğin SHA-256, genellikle 64 hex karakteriyle yazılan 32 bayt üretir. Yeni hesaplanan özeti güvenilir yayımlanmış bir değerle karşılaştırmak, verinin değişip değişmediğini gösterebilir.
Düz bir hash, veriyi kimin oluşturduğunu doğrulamaz. Bir saldırgan içeriği kasıtlı olarak değiştirebiliyorsa HMAC veya dijital imza kullanın; parola saklamak için hızlı ham hash yerine Argon2id ya da bcrypt gibi parola hash fonksiyonları kullanın.
Hayır. Hash, şifreli metin değil tek yönlü bir özettir. Yalnızca olası girişler tahmin edilip hashlenebilir ve sonuçlar karşılaştırılabilir.
Kullanım alanları örtüşebilir, ancak güvenlikleri aynı değildir. Sağlama toplamı kazara değişiklikleri yakalar; kriptografik hash ise belirli kasıtlı saldırılara direnmek için tasarlanır.
Farklı algoritmalar kullanıyor veya farklı baytları hashliyor olabilirler. Boşluklar, satır sonları, Unicode normalizasyonu, metin kodlaması ve dosya/metin girişi sonucu etkiler.