Kriptografik Özet (Hash) Fonksiyonu: Veriyi Sabit Uzunlukta Parmak İzine Çevirmek
Kriptografik özet (hash) fonksiyonu, herhangi bir uzunluktaki veriyi sabit uzunlukta bir çıktıya, yani özete çevirir. Geri döndürülemez olması nedeniyle parola saklamada, bütünlük kontrolünde ve blokzincirde kullanılır.
Bir bakışta
- Her girdi sabit uzunlukta bir özete dönüşür. Kısa bir kelime de büyük bir dosya da aynı uzunlukta çıktı verir.
- İşlem tek yönlüdür. Özetten girdiye geri dönmek pratikte mümkün değildir; bu özellik hash'i şifrelemeden ayırır.
- Girdi bir harf değişse özet tamamen değişir. Bu sayede verinin değiştirilip değiştirilmediği, özetler karşılaştırılarak anlaşılır.
- Parola düz metin saklanmaz, özeti saklanır. Veritabanı sızsa bile parolalar doğrudan okunamaz; tuz ve yavaş algoritma korumayı güçlendirir.
Kriptografik özet fonksiyonu nedir?
Hash fonksiyonu, herhangi uzunlukta bir girdiyi alıp sabit uzunlukta bir çıktı üreten matematiksel fonksiyondur. NIST sözlüğü hash fonksiyonunu, keyfi uzunluktaki bir bit dizisini sabit uzunlukta bir bit dizisine eşleyen fonksiyon olarak tanımlar; onaylı özet fonksiyonları tek yönlülük ve çakışma direnci gibi özellikleri sağlayacak biçimde tasarlanır.
Tek yönlü olması, özetten girdiye geri gidilemeyeceği anlamına gelir. Çakışmaya dirençli olması ise farklı iki girdinin aynı özeti vermesinin pratikte bulunamayacağı anlamına gelir. SHA-256, bu amaçla yaygın kullanılan algoritmalardan biridir.
Temel özellikleri
Güvenilir bir kriptografik özet fonksiyonu birkaç özellik taşır. • Deterministiktir: aynı girdi her zaman aynı özeti verir. • Sabit uzunluk: girdi kısa da olsa uzun da olsa özet aynı uzunluktadır. • Hızlı hesaplanır: özetin üretilmesi kolaydır. • Tek yönlüdür: özetten girdi geri çıkarılamaz. • Çığ etkisi: girdideki tek bir değişiklik özeti baştan sona değiştirir. • Çakışmaya dirençlidir: aynı özeti veren iki farklı girdi bulmak pratik değildir.
Python'da bir özet şöyle alınır: hashlib.sha256("merhaba".encode()).hexdigest(). Aynı kelimeyi tekrar hesaplayan herkes aynı sonucu görür; bir harf değişirse çıktı büsbütün farklı olur.
Çakışma bulunmuş eski algoritmalar güvenlik amacıyla artık kullanılmamalıdır. Algoritma seçerken güncel kılavuzlara bakılır.
Hash ile şifreleme aynı şey değildir
Şifreleme anahtarla geri döndürülebilir: şifrelenen veri anahtarla yeniden açılır. Hash ise geri döndürülemez; amacı veriyi saklamak değil, doğrulamaktır.
Bu fark pratikte önemlidir. Parola bir kez özetlendikten sonra sistem parolayı bilmez, yalnızca özetini bilir. Kullanıcı giriş yaptığında girilen parolanın özeti hesaplanır ve kayıtlı özetle karşılaştırılır. Veri bütünlüğü kontrolünde de benzer şey olur: dosyanın özeti yayımlanır, indiren kişi kendi hesapladığı özetle karşılaştırır.
Parola saklamada özet kullanımı
Parolaların düz metin saklanması ciddi bir hatadır; veritabanını ele geçiren herkes tüm parolaları okur. Doğrusu özetini saklamaktır. Ancak yalnızca özet almak da yeterli değildir: aynı parolayı kullananların özeti aynı olur ve önceden hesaplanmış tablolarla çözülebilir.
Bu yüzden her parolaya rastgele bir tuz eklenir. Tuz ile özet alındığında aynı parola farklı kullanıcılarda farklı özet verir. Parola saklamak için tasarlanmış, ayarlanabilir bir maliyet faktörüyle bilerek yavaş çalışan algoritmalar (bcrypt gibi) tercih edilir; çünkü yavaşlık, saldırganın deneme hızını düşürür. NIST dijital kimlik kılavuzu da parolaların çevrim dışı saldırılara dayanıklı biçimde, tuz ve maliyet faktörü kullanan bir parola özetleme şemasıyla saklanmasını ister. • Sık hata: parolayı düz metin saklamak. • Sık hata: tuzsuz ve hızlı genel amaçlı özet kullanmak. • Doğrusu: tuzlu ve yavaş parola özeti. • Doğrusu: parolayı hiç saklamayıp yalnızca özeti tutmak.
Parolanın kendisi değil, tuzlu özeti saklanmalı
Parola saklamada hata ve doğrusu
Giriş doğrulaması nasıl çalışır?
Kullanıcı giriş yaptığında sistemin elindeki tek şey kayıtlı özettir. Doğrulama şu akışla yürür: girilen parola alınır, kullanıcıya ait tuzla birleştirilir, aynı algoritmayla özeti hesaplanır ve kayıtlı özetle karşılaştırılır. Eşleşirse giriş kabul edilir.
Parola hiçbir aşamada veritabanında düz metin olarak durmaz. Unutulan parola da geri getirilemez; yalnızca yenisi belirlenir.
Sistem parolayı değil özeti karşılaştırır
Özet ile giriş doğrulama
- Parola girilirKullanıcı parolasını yazar.
- Tuz eklenirKayıtlı tuz parolaya katılır.
- Özet hesaplanırAynı algoritmayla özet alınır.
- Kayıtlı özetle karşılaştırılırİki özet eşleşirse giriş kabul edilir.
Bütünlük, dijital imza ve blokzincir
Özet fonksiyonları parola dışında da yaygın kullanılır. Dosya bütünlüğünde indirilen dosyanın özeti yayımlanan özetle karşılaştırılır. Dijital imzada belgenin kendisi yerine özeti imzalanır; bu hem hızlıdır hem de belgede tek bir değişikliğin imzayı geçersiz kılmasını sağlar.
Blokzincirde her blok, bir önceki bloğun özetini içerir. Geçmişteki bir blokta yapılan değişiklik o bloğun özetini değiştirir ve sonraki tüm blokların bağlantısını bozar. Bu zincirleme yapı, kayıtların sessizce değiştirilmesini görünür kılar.
Benzer görünen terimlerden ayrım
Hash kelimesi başka bağlamlarda da geçer ve karıştırılmamalıdır. Hash tablosu, bir veri yapısıdır: anahtarı hızlı bulmak için hash fonksiyonu kullanır ama güvenlik amacı taşımaz. Hashtag ise sosyal medya etiketidir ve hash fonksiyonuyla ilgisi yoktur.
Güvenlik amaçlı kriptografik özet fonksiyonları ile sıradan veri yapısı hash fonksiyonları aynı değildir; sonrakiler güvenlik garantisi vermez.
Fintech ve güvenlik eğitiminde özet fonksiyonu
FinTech Sertifika Programı, FinTech Sektöründe Kriptoloji ve Blockchain modüllerinde bu konuyu finansal teknoloji bağlamında ele alır. Siber Güvenlik Bootcamp Programı ise kriptografiyi güvenlik mimarisinin bir bileşeni olarak işler.
İlgili Mindset programı
FinTech Sertifika Programı
Sık sorulan sorular
SHA-256 geri çözülebilir mi?
Hayır. SHA-256 tek yönlü bir özet fonksiyonudur; çıktıdan girdiyi hesaplayarak bulmanın bir yolu bilinmemektedir. Saldırganlar özeti çözmez, olası girdileri tek tek deneyip çıktıyla karşılaştırır. Bu yüzden zayıf parolalar kolay bulunabilir.
İki farklı veri aynı özeti verebilir mi?
Teorik olarak evet, çünkü sonsuz girdi sabit sayıda çıktıya eşlenir. Ancak sağlam bir algoritmada bu çakışmayı bulmak pratikte mümkün değildir. Çakışma bulunmuş algoritmalar artık güvenli sayılmaz.
Parola için genel amaçlı hızlı özet yeterli midir?
Yeterli değildir. Hızlı algoritma, saldırganın saniyede çok sayıda deneme yapmasına izin verir. Parola saklamak için tuz kullanan ve bilerek yavaş çalışan, bu amaçla tasarlanmış algoritmalar tercih edilmelidir.
Hash ile imza aynı şey midir?
Aynı değildir. Hash, verinin parmak izidir ve anahtar kullanmaz. Dijital imza ise bu özetin imzalayanın özel anahtarıyla işlenmesiyle üretilir ve kimin imzaladığını da kanıtlar.