Bcrypt Nedir? Neden Parolalar Bcrypt ile saklanmalıdır?

alattin (17127) 11 yıl önce sordu

Pek çok  yazılım geliştirici parola gibi önemli bilgileri şifreleyerek, karıştırarak saklar. Bu  karıştırma işlemi sırasında  MD5, SHA1, SHA256, SHA512, SHA-3 gibi karıştırma algoritmalarından faydalanır.  MD5 yıllarca geliştiricilerin kullandığı tek yönlü karıştırma algoritması olmuştur.

Peki düşünüldüğü gibi en güvenli parola saklama yöntemi MD5 mıdır?

Parolaları veritabanında saklarken hangi algoritma daha güvenlidir?

MD5, SHA1, SHA256, SHA512, SHA-3 hangisi parola saklamak için en fonksiyondur?

Toplam 1 cevap


alattin (17127) 11 yıl önce cevapladı

Bcrypt

Bcrypt  parolalar için bir  anahtar türetme fonksiyonudur. Blowfish tabanlıdır.

Bcrypt özellikle parola saklamak için ideal bir fonksiyondur.

Neden MD5, SHA1, SHA256, SHA512, SHA-3 değil de Bcrypt?

Geliştiriciler parola gibi önemli verileri saklarken çeşitli algoritmalardan yararlanırlar. MD5, SHA1, SHA256, SHA512, SHA-3 bunlardan bazılarıdır. Bu algoritmalar özellikle veri bütünlüğü doğrulaması için biçilmiş kaftandır fakat parola için uygun değillerdir.

Yukarıdaki algoritmaların tümü genel amaçlı karıştırma fonksiyonlarıdır.

 Eğer bir yazılım geliştiriciyseniz MD5 sanırım size oldukça tanıdık gelecektir.

Örneğin MD5 ile  uzmanim.net’i karıştırırsak sonuç f55264f1d0ccf0af0adaa2cf81b44510  olacaktır.  Bu dönüşüm tek yönlüdür.

Günümüzdeki  modern  bir sunucu saniyede 330MB MD5 karıştırması (hash) hesaplayabilir.

Eğer kullanıcınızın küçük harfli, alfanumerik ve 6 karakterden oluşan bir parolası varsa, olası her bir değeri yaklaşık 40 saniye gibi sürede deneyebilirsiniz. Oldukça uzun bir süre gibi sanırım? Güvenli görünüyor. Bakalım öylemi.

Eğer bir veya iki hafta ve 2000$ harcarsanız ve bir kaç CUDA (NVIDIA tarafından geliştirilmiş paralel hesaplama ve programlama modeli. GPU kullanarak işlem hızını inanılmaz oranda kısaltmaktadır.) bir araya getirirseniz, kendi süper bilgisayar ağınızı oluşturur ve saniyede 700,000,000 deneme yapabilirsiniz.

Bilindiği gibi artık Cloud ortamında, saatlik, günlük, haftalık  kendi donanım özelliklerini belirleyerek kiralama yapabiliyorsunuz. Böylelikle  dileyen herkes kendi super bilgisayar kümesini oluşturabiliyor.

Moore yasasına göre,  her iki yılda bir bir tümleşik devre üzerine yerleştirilebilecek bileşen sayısı iki katına çıkacacaktır. Durum böyle olunca donanım hızları, CPU,GPU inanılmaz bir hızla artmaktadır. Bu da  pek çok karıştırma, şifreleme algoritmasının kolayca kırılabileceği anlamına geliyor.

Neden Bcrypt?

Bcrypt diğerlerinden ayıran oldukça yavaş olmasıdır. Tuhaf gelebilir ama bu sefer yavaşlık, özellikle parola gibi verilerde, geliştiriciler için bulunmaz nimettir. Nedenini birazdan açıklayacağım.

Bcrypt work factor (çalışma faktörü) denen bir kavram kullanır. Work factor sayesinde siz  donanımlar ne kadar hızlanırsa hızlansın, karıştırma algoritmasının hızını  düşürebilirsiniz.

Örneğin, Bcrypt Work factor değerini 12 olarak ayarlarsanız, “baaa” gibi bir değeri karıştırması 0.3 saniye sürecektir. Bu degeri MD5 ile  karıştırsaydık bu zaman süresi bir mikro saniyeden az olacaktır.

Bunun anlamı nedir?  Eğer sisteminiz brute force gibi bir saldırıya uğrarsa,  parolaların kırılması, work factor’e göre günler, aylar, yıllar sürebilir.

 Bcrypt ile işlem hızını düşürerek ve doğal olarak güvenliği sağlayabilirsiniz.