用于对django项目的哈希设置进行基准测试的简单管理命令
hash_benchmark的Python项目详细描述
提供一个管理命令,该命令乘以当前Django项目的 密码哈希设置
这对于比较和优化 运行环境
如何安装
- 安装程序包:pip install hash_benchmark;
- 将'hash_benchmark',添加到settings.py中已安装的应用程序中
可选,但强烈建议:
- 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_u sha256及其 迭代参数。
切换到Argon2
argon2是新的密码哈希算法,在 Django 1.10安装第三方库时 (见上文)。argon2被设计成更能适应基于gpu的 暴力攻击
argon2\u cffi的实现已经非常快了,因为 它是作为一个编译c库实现的,并且是多线程的。这个 已经使它比用python编写的任何东西都要快得多。
作者于年在网上整理的偶然轶事证据 2017年1月建议,在相同的工作时间(以秒为单位)内, 配置为运行argon2的django安装估计约为 比基于sha256的算法比基于gpu的算法有1500倍的弹性 暴力攻击
Notice: Please do not make important decisions based on these figures, do your own research!
如果Argon2适合您的项目,建议 parallelism参数应设置为 系统。内存成本应该适合您的环境。这个 默认值是1536k字节,它相当小,应该是 几乎对任何环境都是安全的。较高的内存成本值可能 提供更好的抵御GPU的能力。花费的时间 根据项目愿意花费多长时间来验证 密码。
有关详细信息,请阅读:https://argon2-cffi.readthedocs.io/en/stable/parameters.html