İçeriğe atla
← Blog
Güvenlik

Hashing Nedir? Şifrelemeden Farkı (MD5, SHA)

Hash, bir veriyi, yani bir metni, dosyayı ya da parolayı, sabit uzunlukta ve tek yönlü bir parmak izine dönüştüren matematiksel bir fonksiyondur. Aynı girdi her zaman aynı çıktıyı üretir, ama çıktıdan girdiye geri dönmek pratikte imkânsızdır. Hashing'i şifrelemeden ayıran en temel fark da budur.

Yazan: Fevzi Ege YurtsevenlerSon güncelleme: 8 dk okuma
Bu konunun dersi: Özet, şifreleme ve kodlama farkıSiber Güvenlik Temelleri yolu · 14 dk · ücretsiz, kayıt gerekmez

Bu yazıda "hash nedir" sorusunu yeni başlayan biri için sıfırdan açıklıyor; MD5 ile SHA algoritmalarının farkını, hashing'in nerede kullanıldığını ve parolaların neden düz düz saklanmadığını pratik örneklerle gösteriyoruz.

Hash nedir ve nasıl çalışır?

Hash fonksiyonu, ne kadar büyük olursa olsun bir girdiyi alıp her zaman aynı uzunlukta bir çıktı (özet / digest) üretir. Örneğin SHA-256, ister tek kelime ister 1 GB'lık bir dosya verin, hep 64 karakterlik onaltılık (hex) bir dizi döndürür. Üç önemli özelliği vardır: tek yönlüdür (özetten veriye dönemezsiniz), belirlenimcidir (aynı girdi hep aynı özeti verir) ve çığ etkisi gösterir — girdide tek bir harf değişse bile çıktı tamamen başkalaşır.

Hashing ile şifreleme arasındaki fark nedir?

Şifreleme çift yönlüdür: doğru anahtara sahip olan biri şifreli metni tekrar okunabilir hâle çevirebilir. Hashing ise tek yönlüdür ve geri dönüşü hedeflemez; amacı veriyi gizlemek değil, doğrulamaktır. Bir de sık karıştırılan üçüncü kavram var: kodlama (encoding). Base64 gibi kodlamalar ne güvenlik sağlar ne anahtar ister — sadece veriyi taşınabilir bir biçime çevirir ve herkes geri çözebilir.

ÖzellikHashing (SHA-256)Şifreleme (AES)Kodlama (Base64)
YönTek yönlüÇift yönlüÇift yönlü
Anahtar gerekir mi?HayırEvetHayır
Geri çevrilebilir mi?HayırEvet (anahtarla)Evet (herkes)
Ana amaçBütünlük / doğrulamaGizlilikVeri taşıma / biçim
Örnek kullanımParola özeti, dosya kontrolüDisk / mesaj şifrelemeE-posta eki, veri URL'si

Kısacası: bir veriyi gizli tutmak istiyorsanız şifreleme, bir verinin değişmediğini kanıtlamak istiyorsanız hashing kullanırsınız.

MD5, SHA-1 ve SHA-256 arasındaki fark nedir?

Hepsi hash algoritmasıdır ama güvenlik seviyeleri çok farklıdır. MD5 ve SHA-1 üzerinde çakışma (collision) saldırıları başarıyla gösterilmiştir — yani iki farklı girdinin aynı özeti verecek şekilde üretilebildiği kanıtlanmıştır. Bu yüzden güvenlik amaçlı kullanımları (imza, parola, sertifika) artık tavsiye edilmez. SHA-256 ise SHA-2 ailesindendir ve bugün yaygın olarak güvenli kabul edilir.

AlgoritmaÇıktı uzunluğuGüvenlik durumuÖneri
MD5128 bit (32 hex)Kırık (çakışma bulundu)Güvenlikte kullanma
SHA-1160 bit (40 hex)Kırık (çakışma bulundu)Kullanımdan kaldırıldı
SHA-256256 bit (64 hex)Güvenli kabul ediliyorGenel amaçlı tercih
SHA-3 / BLAKE2DeğişkenModern, güvenliYeni projelerde iyi seçenek

Not: MD5 ve SHA-1 tamamen çöp değildir — güvenlik gerektirmeyen yerlerde, örneğin bir dosyanın yanlışlıkla bozulup bozulmadığını hızlı kontrol etmede hâlâ görülebilir. Ama bir saldırganın kasıtlı manipülasyon yapabileceği hiçbir senaryoda kullanılmamalıdır.

Hash fonksiyonunu kendi bilgisayarımda nasıl deneyebilirim?

Hash'i anlamanın en iyi yolu kendi dosyalarınız üzerinde denemektir. Linux'ta bir metnin veya dosyanın özetini şöyle alabilirsiniz:

echo -n "merhaba" | sha256sum
sha256sum ubuntu.iso

macOS'ta:

echo -n "merhaba" | shasum -a 256
shasum -a 256 ubuntu.iso

Windows'ta (PowerShell / cmd):

certutil -hashfile ubuntu.iso SHA256

Deneyin: "merhaba" ve "Merhaba" kelimelerinin SHA-256 özetlerini alın. Sadece tek harf değişmesine rağmen iki çıktının tamamen farklı olduğunu göreceksiniz — bu, çığ etkisidir. Aynı komut, indirdiğiniz bir dosyanın bütünlüğünü doğrulamak için de kullanılır: sitenin yayımladığı SHA-256 değeri ile sizin hesapladığınız değer birebir aynıysa dosya bozulmamış ya da değiştirilmemiş demektir.

Parolalar neden düz hash yerine "salt" ile saklanır?

Bir web sitesi parolanızı asla düz metin olarak saklamamalı; onun yerine parolanın hash'ini tutar. Ama sadece SHA-256'dan geçirmek yetmez, çünkü aynı parola her zaman aynı özeti verir. Saldırganlar bunu, önceden hesaplanmış dev tablolarla (rainbow table) eşleştirebilir. Çözüm salt: her kullanıcı için rastgele üretilen ve parolaya eklenen benzersiz bir değer. Böylece "123456" bile her hesapta farklı bir özet üretir ve hazır tablolar işe yaramaz.

Ayrıca parola için kasıtlı olarak yavaş algoritmalar kullanılır: bcrypt, scrypt, Argon2 ve PBKDF2. Bunlar SHA-256'dan yavaş olacak şekilde tasarlanmıştır ki, bir saldırgan saniyede çok sayıda tahmin deneyemesin. Yeni başlayanlar için altın kural: kendi hashing/parola şemanızı sıfırdan icat etmeyin, olgunlaşmış bu kütüphaneleri kullanın.

Hash nerelerde kullanılır?

Hashing sandığınızdan çok daha yaygındır. Başlıca kullanım alanları:

  • Parola saklama: Sunucu parolanızı değil, salt'lı özetini tutar.
  • Dosya bütünlüğü: İndirilen ISO, yedek veya güncellemenin bozulmadığını doğrulama.
  • Dijital imza ve sertifikalar: Bir belgenin değişmediğini kanıtlama.
  • Git ve blok zinciri: Her commit ve her blok bir hash ile birbirine bağlanır.
  • HMAC: Bir mesajın hem bütünlüğünü hem de kaynağını doğrulayan anahtarlı hash.

Yasal/etik uyarı: Hash "kırma" araçları (ör. hashcat, John the Ripper) yalnızca kendi sistemlerinizde, kendi laboratuvarınızda ya da yazılı izinli sızma testlerinde kullanılmalıdır. Başkasına ait parola hash'lerini izinsiz kırmaya çalışmak suçtur. Bu yazının amacı savunma tarafını anlamak: neden güçlü algoritma, neden salt, neden yavaş hashing.

Teoriyi pekiştirmek isterseniz, hash ve kripto konularını ücretsiz uygulamalı zorluklarla çalışabileceğiniz pratik.altaysec.com.tr güzel bir başlangıç noktasıdır.

Sık sorulan sorular

Hash geri çevrilebilir mi?

Hayır. Hash tasarım gereği tek yönlüdür, özetten asıl veriye matematiksel olarak dönemezsin. Ama MD5 gibi zayıf algoritmalarda ya da kısa ve yaygın parolalarda saldırgan deneme yanılma ve hazır tablolarla girdiyi tahmin edebilir. Bu yüzden güçlü algoritma ve tuz (salt) kullanmak önemlidir.

MD5 hâlâ kullanılabilir mi?

Güvenlik amacıyla hayır. MD5'te çakışma saldırıları gösterildi. Bu yüzden parola, dijital imza ya da sertifika için kullanılmaz. Yalnız güvenlik gerektirmeyen işlerde, örneğin bir dosyanın kazara bozulup bozulmadığını hızlıca kontrol ederken görebilirsin. Yeni projelerde en az SHA-256 kullan. Eski bir sistemde MD5 görürsen geçiş planını önceliklendir.

Parola saklamak için hangi algoritmayı kullanmalıyım?

Düz SHA-256 bile parola saklamak için tek başına yetmez, çünkü çok hızlıdır. Saldırgan saniyede milyarlarca deneme yapabilir. Bunun yerine bilerek yavaş çalışan ve tuz kullanan algoritmaları seç: Argon2, bcrypt ya da scrypt. Kendi şemanı icat etme, olgun bir kütüphaneye güven.

Hash ile şifreleme aynı şey mi?

Hayır. Şifreleme çift yönlüdür ve doğru anahtarla geri çözülür, amacı gizliliktir. Hash tek yönlüdür, anahtar kullanmaz ve amacı bütünlük ile doğrulamadır. İkisini karıştırmak yaygın bir başlangıç hatasıdır. Kısaca kural şudur: veriyi geri okuman gerekiyorsa şifrele, yalnız doğrulaman gerekiyorsa özetle. Parola bu yüzden şifrelenmez, özetlenir.

  • hash nedir
  • güvenlik
  • siber güvenlik
  • yeni başlayanlar

İlgili yazılar

Okuduğunu uygula.
Ücretsiz. Hesap açınca bitirdiğin dersler puanıyla hesabına geçer.
İlk derse başla