Burada iki konu kafa karıştırıcıdır. Düz metin parola okuyarak sadece keşfetmek edilemez, böylece temelde pratik açıdan bir tuz ile parola karma depolama içeren rastgele belli (asgari) uzunluğu sembolleri ve şifre depolama, çekme rastgele parola üretimi, veritabanı.
Generation
Rasgele semboller almak için, tüm sembollerin bir dizi var, rastgele bir numara almak ve bir sembol dönmek için indeks olarak bu sayıyı kullanarak diziye indis. Bu Kane Wallmann önceki önerdi budur. Bununla birlikte, bu şifre nesil olarak güvenlik ile ilgili uygulama için, bir a cryptographically strong yalancı rasgele sayı oluşturma, rand (mi) is not.
Storage
Daha önce belirtildiği gibi, parola veritabanında düz metin olarak depolanır edilmemelidir. Aksi takdirde, buna erişimi olan herkes sadece bunu okumak ve herhangi bir şifre ve tüm belirli bir kullanıcı şifresi ne biliyorsunuz. Ne olur parola hash yerine mağazası olduğunu. Bir kullanıcı girişimi giriş, onların parola hash ve aynı olup olmadığını görmek için veritabanındaki değeri karşılaştırın. Karma işlevi adlı bir tek-yönlü fonksiyon diyoruz. Eğer bir karma değerini almak için parola karma, ancak bunu maçları görmek için tüm olası kombinasyon çalışırken olmadan hash değeri parola alınamıyor. (En azından, bu yine de bir fikir.) Hash değeri çıkış uzunluğu sabit olduğundan olası girdi pratik anlamda sonsuz değil iken, oysa, tabii ki daha karmaşıktır kesinlikle çıkışının olası sayısından fazladır.
Şimdi, tuz gelir yalnız şifre basit bir müzakere ya da güvenli olmadığı için nerede. İlk olarak, bu tür bir yöntem, aynı şifre ile herhangi bir iki kullanıcı için aynı karma değer verecektir. Bir hesap Uzlaşma diğer uzlaşma neden olacaktır. İkincisi, ne bir saldırganın yapabileceği bir rainbow table vaktinden ne denir inşa etmektir. Bu zaman alacak olsa da, sadece herhangi bir depolama algoritması için bir kez yapılması gerekir, ve o bunu kendileri yapmak zorunda değilsiniz. Çalışmaları birçok bilgisayar üzerinde dökülen, ve bu tür LM ve NTLM gibi zayıf şifre karma sistem için böyle gökkuşağı tabloları indirebilirsiniz internette aslında web sitelerinde var olabilir. Bundan sonra, saldırgan sadece tabloya karşı herhangi bir hash değeri aramak ve şifresiz şifre belirleyebilirsiniz. Sağlaması için önce böylece karşı korumak için, bir (kullanıcı başına) rasgele tuz değer parola eklenir. Bu hatta aynı şifre giriş farklı kılan, bu yüzden ilk sorunu önlemek. Ayrıca, ikinci sorunun karşı azaltmak durumunda tuz & giriş uzunluğu o kaba kuvvet hesaplama açısından olanaksız olacağı gibi olduğu gibi kombine şifre yeterince uzun.
Özellikle SHA hangi, ya da bu konuda soruya gelince, diğer karma algoritmalar kullanmak için. SHA ABD NIST standart olduğunu ve oldukça iyi olarak kabul edilir. Orada SHA-1 içine küçük bir teorik atılım olmuştur, ama pratikte çoğu amaç için hala yeterli güvenlidir oluyor. SHA-2 algoritmaları bilinen atılım ile, SHA-1 daha iyidir. Hangi seçim varyantı aşağı boyutu dahil olmak üzere çeşitli şeyler vardır. Onlar çünkü boy farkı farklı uzunluk çıktı, ve hesaplamak için farklı miktarda üretmek. PHP karma algoritmalar diğer bir dizi arasında, native implementation SHA-1, SHA-256, 384 ve 512 var.
Sisteminizde zayıf nokta başka muhtemel olarak tüm bunlardan sonra, pratikte, seçtiğiniz SHA algoritmaları hangi muhtemelen önemli değildir. Şifreleri yazmak Kullanıcılar. Farklı sistemler arasında aynı şifreyi kullanarak Kullanıcılar. XSS ve SQL injection gibi şeyler izin programlama kusur. Vs vs