2014-09-19 23 views
5

Burada, tuzlanan şifreler hakkında biraz bilgi okuduktan sonra, her kullanıcı için benzersiz bir tuz kullanmak en iyisi gibi görünmektedir. Ben Flask-Güvenlik atm uygulamak için çalışıyorum ve görünen belgelerden sadece küresel bir tuz ayarlayabilirsiniz: yani SECURITY_PASSWORD_SALT = 'thesalt'Kullanıcı Başına Flask-Güvenlik Kullanarak Benzersiz Tuz

Soru: Her parola için benzersiz bir tuz oluşturma hakkında nasıl bir şey olur?

Teşekkürler!

düzenleme: Flask-Security'deki belgelerden, bu modülün kutudan tüm parolalar için yalnızca tek bir tuz kullandığını ileri sürdüğü görülüyor.

flask_security.utils.get_hmac(password) 
    Returns a Base64 encoded HMAC+SHA512 of the password signed with the salt 
    specified by SECURITY_PASSWORD_SALT. 
+1

Küresel bir tuz tuz değil. Aynı tuz herkes için kullanılıyorsa, aynı şifreye sahip iki kullanıcı aynı şifreli şifreye sahip olacaktır. Tuzun engellenmesi gereken bir şey. –

+0

@MichaelBurr Tamam, düşündüğüm şey bu ... bu yüzden kafam karıştı. Her şifre için benzersiz bir tuz yapmak için bu ayarı nasıl kullanırım? Ya da bunu yapabilmek için Flask-Güvenlik'e gömülü tuzağı geçersiz kılmalı mıyım? – Chockomonkey

+1

Üzgünüm - Flask hakkında hiçbir şey bilmiyorum. Sadece küresel bir tuz fikri üzerine yorum yapıyordum. –

cevap

12

Evet, Flask-Güvenlik tasarımıyla kullanıcı başına tuzları kullanıyor, pbkdf2_sha512, sha256_crypt, sha512_crypt).

'SECURITY_PASSWORD_SALT' yapılandırması yalnızca HMAC şifrelemesi için kullanılır. Eğer karma algoritma olarak bcrypt kullanıyorsanız Flask-Security hashing için passlib kullanır ve hashing sırasında rastgele bir tuz üretir. Bu confustion sayısında 268 not edilir: https://github.com/mattupstate/flask-security/issues/268

passlib için şifreleme yürüme, kodda doğrulanabilir

:

flask_security/utils.py (çizgiler 143-151, 39 ve 269)

def encrypt_password(password): 
    ... 
    return _pwd_context.encrypt(signed) 

_pwd_context = LocalProxy(lambda: _security.pwd_context) 

flask_security/core.py (269, 244-251, ve 18)

pwd_context=_get_pwd_context(app) 

def _get_pwd_context(app): 
    ... 
    return CryptContext(schemes=schemes, default=pw_hash, deprecated=deprecated) 

from passlib.context import CryptContext 

ve son olarak: https://pythonhosted.org/passlib/password_hash_api.html#passlib.ifc.PasswordHash.encrypt

Her çağrı() şifrelemek yeni tuz oluşturur etmek

notu,

5

Eğer bcrypt kullanırsanız, tuzlama işlemini halledip bunu hash ile saklar. Bu yüzden o rotayı gideceğim! Bu konuya hangi

sayesinde bu keşif bana yol: Böyle des_crypt, pbkdf2_sha256 gibi diğer düzenleri Bcrypt kullanarak (ve eğer

Do I need to store the salt with bcrypt?

+2

Bir çözüm bulduktan sonra kendi sorunuza geri dönünce Kudos. –