# Hash, tuz, bcrypt ve Argon2: düzgün bir site şifrenle ne yapar

> Düzgün bir site şifreni bilmez: bir iz saklar. Ve o izi hesaplayan fonksiyon bilerek yavaş olmalıdır, çünkü bu, savunanla saldıranın tıpatıp aynı yarışı koştuğu tek savunmadır.

2026-03-26 · David Carrero · password.es
Original: https://password.es/tr/blog/hash-tuz-bcrypt-argon2/

---

Düzgün bir site şifreni bilmez. İstemediğinden değil: bilemediğinden.

Kulağa hile gibi geliyor, çünkü şifreni her yazdığında sistem seni içeri alıyor ve
içeri alabilmek için bir şeyi doğrulaması gerekiyor. Ama doğrulamak bilmek
değildir. Sunucu, şifrenden hesaplanmış bir **iz** saklar; sen yazdığında izi
yeniden hesaplar ve karşılaştırır. Tutuyorsa, buyur. **Şifrenin hiçbir aşamada
hiçbir yerde yazılı durması gerekmez.**

Ciddi bir hizmeti ciddi olmayandan ayıran en net işaret buradan çıkıyor: şifreni
unuttuğunda sana e-postayla geri yolluyorlarsa, o şifre onlarda duruyordu. Ve
duran şey, er ya da geç, başkasının eline geçer.

## 1979: şifreleri saklamama fikri — ve bunu yavaş yapma fikri

1979'da **Robert Morris ve Ken Thompson**, *Communications of the ACM* dergisinde
“Password Security: A Case History”i yayımladılar ve Unix'te ne yaptıklarını
anlattılar. Bir tecrübe aktarımı bu, ve bugün apaçık saydığımız iki fikir orada
yerine oturuyor.

Birincisini onlar icat etmedi —şifre yerine hash saklamak zaten yapılıyordu— ama
kimsenin anlatamadığı kadar iyi anlattılar: **şifreyi saklama, hash'ini sakla.**
Şifreni rastgele görünüşlü bir değere çeviren ve geri sarılamayan bir fonksiyon:
hash'ten şifreye dönüş yok.

İkincisi tamamen onların: **tuz.** Her kullanıcı için farklı, rastgele bir değer;
hash hesaplanmadan önce şifreye karıştırılıyor. Tuz olmazsa aynı şifreyi kullanan
iki kişinin hash'i de aynı olur —çalınan dosya, tekrar edenleri bulma oyununa
döner— ve daha kötüsü, biri devasa bir tabloyu bir kez önceden hesaplayıp
dünyadaki bütün veritabanlarına karşı kullanabilir. **Tuz senin şifreni tahmin
etmeyi zorlaştırmaz: tahmin etmenin başka kimseye yaramamasını sağlar.**

Ama aynı makalede çok daha az anılan üçüncü bir fikir var, ve asıl mesele o:
fonksiyonu **bilerek yavaş** yaptılar. Dalgınlıktan değil. Kasten. Bir şifreyi
şifrelemek, teknik olarak gerekenden çok daha pahalıya mal oluyordu, çünkü her
sabah bir kez giren adam bunu umursamaz, milyonlarca aday deneyen umursar.

Neredeyse elli yıllık tek bir cümlede işin tamamı.

## Yavaşlık neden tek dürüst savunma

Bilişimdeki savunmaların hemen hepsi asimetriktir: savunana ucuz, saldırana
pahalıdır. Şifrelemek ucuzdur; anahtarsız çözmek imkânsıza yakındır. Savunan,
yapısal bir avantajla oynar.

Şifre saklamada öyle değil. **Burada savunan da saldıran da tıpatıp aynı
fonksiyonu çalıştırıyor.** Sen doğru bildiğini doğrulamak için hash hesaplıyorsun;
o, doğru bilip bilmediğini görmek için hesaplıyor. Güvenliğin, iki tarafın da aynı
bacaklarla koştuğu tek yarışı bu.

Rakibinden hızlı koşamıyorsan geriye tek hamle kalır: **pisti ikiniz için de
pahalılaştırmak.** Sen bu bedeli her oturum açışta bir kez ödersin. O, her
denemede bir kez. Senden kat kat fazla denemeye ihtiyacı olduğu için aynı fatura
ikinizi kıyas kabul etmez biçimde vurur. Bir şifre hash'inin yaptığı iş budur.

Başka işlerde harika olan hızlı fonksiyonların —mesela SHA-256— burada berbat bir
tercih olmasının sebebi bu. Hızlılar. Hızlı, tam da istemediğimiz şey.

## 1999: bcrypt ve ayarlanabilir bir parça olarak maliyet

Yavaş fonksiyonun sorunu, donanımın yerinde durmaması. 1979'da yavaş olan, sonra
anlık hale geliyor. Bir on yılın bilgisayarlarına göre ayarlanmış bir savunma,
kimse dokunmadan kendi kendine yaşlanır.

1999'da **Niels Provos ve David Mazières**, USENIX Annual Technical
Conference'ta **bcrypt**'i sundular; başlık zaten her şeyi söylüyordu: *A
Future-Adaptable Password Scheme*.

Fikir şu: maliyet **fonksiyonun içinde değil, bir parametrede olsun.** bcrypt'te
senin belirlediğin ve hash'in yanında saklanan bir maliyet katsayısı var. Donanım
çok hızlanırsa sayıyı yükseltirsin, yeni şifreler yine olması gerektiği kadar
pahalıya mal olur, algoritma değiştirmene gerek kalmaz.

**Kendi eskimesini baştan kabul edip ona hazırlanan bir tasarım bu.** Bunu yapan
yazılım çok azdır.

## 2009: scrypt ve zamanın yetmediğinin keşfi

bcrypt hesaplama süresini pahalılaştırıyor, ve işe yaradı. Ta ki saldıran,
savunanla aynı tür makineyi kullanmayı bırakana kadar.

Bir sunucuda birkaç tane hızlı, genel amaçlı çekirdek vardır. Bir GPU'da ise aynı
işi paralel yapan akıl almaz sayıda küçük çekirdek bulunur; ASIC daha da ileri
gider: tek bir işlemi yürütmek için üretilmiş silikon. Savunman “bu işlem X'e mal
olur”dan ibaretse, biri aynı anda çok sayıda X yapan donanım inşa edebilir.
Savunan hâlâ sunucusuyla baş başadır.

2009'da **Colin Percival**, **scrypt**'i başka bir argümanla sundu: *Stronger Key
Derivation via Sequential Memory-Hard Functions*. Maliyet yalnızca hesaplamadaysa
paralelleşir. Ama **bellek bedava değildir.** Fonksiyonu bol RAM kullanmaya ve
onu atlatılamayacak biçimde dolaşmaya zorla; saldıran birden çekirdek çoğaltamaz
hale gelir: her çekirdeğin kendi belleğine ihtiyacı olur. GPU çekirdeklerinin ise
gücü çoktur, çekirdek başına RAM'i azdır.

**Percival işlemi pahalılaştırmadı. Onu toplu halde tekrarlamak için gereken
donanımı pahalılaştırdı.** Bu bir seviye değişimi: saldıranın saatine değil,
bütçesine saldırılıyor.

## 2015: Argon2 ve tartışmanın sonu

Birden fazla makul seçeneğin varlığı kimsenin seçim yapmasını kolaylaştırmıyordu.
Kriptografi camiası da bir konuyu kapatmak istediğinde ne yapıyorsa onu yaptı:
açık bir yarışma. **Password Hashing Competition** adaylarını topladı, yıllarca
açık analize tabi tuttu ve **2015**'te kazananı ilan etti: **Argon2**.

Argon2 iki dersi birden devralır: zaman maliyeti ve bellek maliyeti, ikisi de
ayrı ayrı ayarlanabilir, artı iş parçacığı sayısı. Sihir değil. 1979, 1999 ve
2009'un derli toplu sentezi; üstelik işi onu kırmaya çalışmak olan insanlar
tarafından gözden geçirilmiş.

## Bunun senin için anlamı

Bunların neredeyse hiçbiri senin elinde değil, ve bunu söylemekte fayda var:
**hash'i site seçer, sen değil.** Dünyanın en iyi şifresine sahip olabilirsin ve
onu bir Excel dosyasında düz metin olarak saklayabilirler.

Ama denklemin öbür tarafı sana bağlı. Bütün bu bina —tuz, maliyet, bellek—
saldıranın **her denemesini pahalılaştırmaya** yarıyor. Kaç deneme gerekeceğini
belirleyen şey ise senin şifren. Sözlükte varsa hiçbir yavaş fonksiyon seni
kurtarmaz: ilk sıralarda düşer. Uzunsa ve hiçbir şeye benzemiyorsa, deneme başına
düşen o bedel, eldeki zamana sığmayan bir deneme sayısıyla çarpılır.

Bu yüzden [üreticimiz](/tr/) yüzde değil **entropi biti** ölçüyor, ve bu yüzden
[kontrol aracı](/tr/sifre-kontrol/) sembol saymadan önce şifreni sözlüklerde
arıyor. **Deneme başına fiyatı onlar koyuyor; deneme sayısını sen koyuyorsun.**
İki yarımdan biri olmadan diğeri işe yaramaz.

Ve evet: soru hâlâ o eski soru. Yalnızca artık karşı tarafta biri onu saniyede
defalarca cevaplamaya çalışıyor, ve biz 1979'dan beri o cevapların her birinin
ona para ödetmesi için uğraşıyoruz.

---

*Kaynaklar: R. Morris ve K. Thompson, “Password Security: A Case History”,
Communications of the ACM, 1979 · N. Provos ve D. Mazières, “A Future-Adaptable
Password Scheme”, USENIX Annual Technical Conference, 1999 (bcrypt) · C.
Percival, “Stronger Key Derivation via Sequential Memory-Hard Functions”, 2009
(scrypt) · Password Hashing Competition, kazanan Argon2, 2015.*
