跳转到主要内容

为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 (6.0 kB 查看散列

上传时间 源代码

支持者