php güvenlik: MD5, SHA1, tuzlama kullanma

5 Cevap php

Benim şifreleri anda çoğu sadece tuzlama tanıtıldı oldum ancak md5 yıllardan ve sha1 yıllardan karışımı ile depolanan ve en güvenli ne olabilir arıza bilmek istedim vardır.

Ben basit bir md5 () kolayca iptal edilebilir certin değilim, ancak ne md5 (sha1 (md5 ($ var))) hakkında; Bu combo daha fazla zorluk sağlamak veya daha fazla değil, mutlaka daha iyi gelmez.

Ayrıca, yapıyor

$var = $var.'t00lup';
md5($var);

Yukarıda daha güvenli, t00lup varsayarak özel bir anahtar?

Yerine sadece MD5 kullanarak ya da sadece sha1 kullanarak bunu yapmanın daha iyi bir yolu var mı?

Teşekkürler

5 Cevap

Daha mutlaka daha iyi değildir. Sadece SHA256 kullanmak ve onunla yapılabilir.

$var = $var.'t00lup';
$hashedPass=hash('sha256', $var);

(Hash hakkında daha fazlasını okuyun) here.

Bir kaç şey:

  1. Yeniden karma rahatsız etmeyin - sadece SHA256 kullanın.

  2. Sadece her hesap için tek bir tuz kodlamalısınız etmeyin. Her kullanıcı için rastgele bir tuz üretmek ve veritabanındaki kullanıcı rekor üzerine koydu. Birisi bu tuz için bir gökkuşağı tablo oluşturur Bu şekilde, en azından onlar sadece değil hepsi birden bu bir kullanıcı hesabına erişim olacaktı.

Aksi takdirde, bir saldırganın sadece kullanıcıların kullanılan tüm kısa veya sözlük şifreleri için sağlamalarının aramak için mevcut precomputed tabloları kullanabilirsiniz çünkü tuz kullanılarak, kesinlikle gereklidir. Bunu kendiniz deneyebilirsiniz: çok kötü (kısa veya sözlük) şifre MD5 almak ve sonuç için bir google arama yapmak - büyük olasılıkla alırsınız bir yere çarptı.

Bir tuz ile, mevcut tabloları işe yaramaz hale gelir ve kendi bilgisayar en becerikli ve motive saldırganlar ama çok uzun sürüyor. Her kullanıcı için ayrı tuzları (aksi tuzu bilen bir saldırganın bir kerede tüm kullanıcıları saldırabilir) daha iyi.

Birleştiren sağlamalarının benzer bir etkiye sahip olabilir, ama precomputed tablo bu kombinasyon için var olması için hala mümkün, çünkü (bir tuz olmadan) bu amaçla kullanılmamalıdır.

Ancak, karma kombinasyonu ve tekrarı bir sözlük saldırısı yapmak için bir saldırgan için gereken süreyi artırarak, kendi başına bir değeri vardır: MD5 uygulayarak on bin kat hala ikinci bir kısmını alır ve giriş parçası olarak mümkün olduğunu süreci. Ama uzun is bir sorun olarak 10.000 kez alarak bir sözlük saldırısı, için.

Bu teknik, key strengthening olarak bilinir.

VBulletin md5 gibi bir şey kullanır (md5 ($ parola). $ Tuz). Ok gibi görünüyor.

Ben şifre kısa hatta ise yaparken bazıları sözlük saldırısı daha zor ve yaptıkları beri güvenliği artırmak tuzlama de tüm güvenlik seviyesi hala Tamam olduğunu düşünüyorum.

En önemli şey bu yüzden SHA256 veya daha iyi bakmak iyi olması gerçekten karma algoritması ve elde edilen karma uzunluğu olduğunu.