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
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.