Hash fonksiyonu
Kısa tanım
Herhangi uzunluktaki bir veriyi sabit uzunlukta, veriye özgü bir çıktıya (özet değeri) dönüştüren tek yönlü matematiksel fonksiyon.
Diğer adları: Özet fonksiyonu, Karma fonksiyonu, Hash algoritması
İndirdiğin bir dosyanın bozulmadığını ya da değiştirilmediğini nasıl anlarsın? Yayıncının verdiği kısa harf-rakam dizisini, kendi bilgisayarında hesapladığın değerle karşılaştırarak. Bu diziyi üreten araç hash fonksiyonudur.
Temel özellikler
- Sabit çıktı boyu: girdi bir harf de olsa bir film de olsa SHA-256 çıktısı her zaman 256 bit (64 onaltılık karakter) olur.
- Belirlenimcilik: aynı girdi her zaman aynı çıktıyı verir.
- Çığ etkisi: girdideki tek bir bitlik değişiklik çıktıyı tamamen değiştirir.
- Tek yönlülük: çıktıdan girdiyi geri hesaplamak pratikte mümkün değildir.
- Çakışma direnci: aynı çıktıyı veren iki farklı girdi bulmak son derece zor olmalıdır.
Yaygın algoritmalar
MD5 128 bit, SHA-1 160 bit, SHA-256 256 bit çıktı üretir. MD5 ve SHA-1 için pratik çakışma saldırıları gösterildiğinden güvenlik amaçlı kullanımları önerilmez; dosya bütünlüğü ve imzalar için SHA-256 ve üstü tercih edilir. Bir metnin özetini SHA-256 hash hesaplama aracında ya da MD5 aracında görebilirsin.
Çakışma olasılığı
Doğum günü paradoksu nedeniyle n bitlik bir özette çakışma beklentisi 2ⁿ değil yaklaşık 2^(n/2) denemede belirginleşir. 128 bitlik bir özet için bu yaklaşık 2⁶⁴ demektir. Örnek: 32 bitlik bir özetle yaklaşık 77.000 kayıt saklandığında en az bir çakışma olasılığı yüzde 50'ye ulaşır. Kendi senaryonu hash çakışma olasılığı aracıyla test edebilirsin.
Nerelerde kullanılır?
- Parolaların veritabanında açık metin yerine özet olarak saklanması (tuz eklenerek ve bcrypt, Argon2 gibi yavaş algoritmalarla),
- Dosya ve yazılım paketlerinin bütünlük kontrolü,
- Dijital imza ve blokzincir,
- Hash tabloları ile hızlı veri arama.
Şifrelemeyle farkı
Şifreleme iki yönlüdür: anahtarla şifrelenen veri yine anahtarla açılır. Hash ise geri döndürülemez; amaç gizlemek değil, parmak izi çıkarmaktır.