为Django项目的hash设置提供简单的管理命令
项目描述
提供管理命令,用于测量当前Django项目的密码哈希设置。
这有助于比较和优化运行环境的哈希设置。
如何安装
安装包: pip install hash_benchmark;
在settings.py中将'hash_benchmark',添加到您的INSTALLED_APPS中;
可选,但强烈推荐
pip install argon2_cffi.
如何使用
按照上述说明,在您的项目上安装此包,该硬件与您项目生产环境典型。
使用您当前的密码哈希设置运行管理命令,并记录性能
# Tests hashing performance of your installations pbkdf2_sha256 # algorithm with 100,000 iterations > python manage.py hash_password -i 100000 Python: 2.7.10 (default, Jul 13 2015, 12:05:58) [GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] Django: 1.9.7 Using "pbkdf2_sha256" w/parameters (100000), verification takes, on average, 0.0821s
现在,决定这个“工作因子”(平均密码验证持续时间)是否适合您项目的需求。您的目标是尽可能多地花费时间进行哈希运算,同时仍然在密码验证期间为用户提供可接受的性能。
选择适当工作级的重点考虑因素
更高工作因子的考虑因素
更有效地保护您的哈希密码免受暴力攻击,可能需要更少地强制用户更改密码的策略
更低工作因子的考虑因素
用户登录更快;
当许多用户同时登录时,网站性能更好;
大的工作因子可能被远程利用,对您的网站造成DDoS攻击
有了这个管理命令,您现在可以就PBKDF2_SHA256及其迭代参数的设置做出明智的决定。
切换到Argon2
Argon2 是一种较新的密码散列算法,当安装第三方库 argon2_cffi 后,Django 1.10 支持(见上文)。Argon2 设计用于对基于 GPU 的暴力破解攻击具有更强的抵抗力。
由于 argon2_cffi 实现是一个编译的 C 库并且是多线程的,它已经非常快速。这使得它在速度上显著优于任何用 Python 编写的代码。
作者在 2017 年 1 月收集的互联网上的零星轶事证据表明,对于相同的工作时长(以秒为单位),配置为运行 Argon2 的 Django 安装预计比基于 SHA256 的算法对基于 GPU 的暴力破解攻击具有约 1,500 倍的抵抗力。
- 注意:
请勿仅基于这些数据做出重要决策,请自行研究!
如果 Argon2 适合您的项目,建议将并行参数设置为系统 CPU 数量的 2 倍。内存成本应根据您的环境进行调整。默认值是 1,536K 字节,这相对较小,对于几乎任何环境来说都是一个安全值。更高的内存成本值可能提供更好的对 GPU 的抵抗力。时间成本应根据您的项目愿意花费多少时间来验证密码来设置。
更多信息请参阅: https://argon2-cffi.readthedocs.io/en/stable/parameters.html
项目详情
hash_benchmark-0.2.0.tar.gz 的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d46ddd8dc6c2ebba236f79c3fdc05fd8e1fe01fea039e898228c20e59f24d38 |
|
MD5 | 032162f214aa18c412fea678427c04df |
|
BLAKE2b-256 | a29b9a8fe63371283d8c240c1d907633e9d94223ac762b7e0166a56be30e561c |