Argon2 的最小参数是多少?

信息安全 哈希 氩2
2021-09-09 23:05:04

Argon2 是密码哈希竞赛的获胜者,目前被 OWASP 推荐用于安全存储密码。

Argon2 的一个关键步骤是确定函数使用的参数。当前的 IETF 草案标题为“ The memory-hard Argon2 password hash and proof-of-work function ”有一个名为“Parameter Choice”的章节,它提供了寻找正确参数的分步指南。

  1. 选择类型y如果您不知道它们之间的区别或将旁道攻击视为可行的威胁,请选择 Argon2id。

    这一步看起来很简单。建议默认使用 Argon2id,除非您知道其他模式更适合您的用例。

  2. 计算每次调用 Argon2 可以启动的最大线程数h 。

    这一步是第一个令人困惑的步骤。一个人如何“弄清楚”应该使用多少线程?如果只使用一个线程,是否不安全?

  3. 计算出每个调用可以承受的最大内存量m

    这一步似乎更直接了。但是,如果服务器有 128 GB 的 RAM,并且预计在高峰时间有 ~1024 个并发登录,那么 ~ 128 MB 是最大值。然而,这并没有回答,如果有 10 倍的用户怎么办?如果 1 MB 是最大值怎么办?如果最大 16 KB 会怎样?哪一点是“太少”的记忆?

  4. 计算出每个呼叫可以承受的最大时间量x(以秒为单位)。

    这看起来很简单,更高的数字意味着以登录速度为代价的更高的抗破解性。

  5. 选择盐的长度。128 位对所有应用程序来说都足够了,但在空间限制的情况下可以减少到 64 位。

    这非常有用,因为它提供了一个被认为是合理的默认值。

  6. 选择标签长度。128 位足以满足大多数应用程序,包括密钥派生。如果需要更长的键,请选择更长的标签。

    就像第 5 步一样,这很有帮助,因为它提供了一个合理的默认值。

  7. 如果侧信道攻击是一个可行的威胁,或者如果您不确定,请在库调用中启用内存擦除选项。

    有用的信息,因为它解释了它试图减轻的威胁。

  8. 运行类型y、内存mh通道和线程的方案,使用不同的通道数t找出最大值t,使运行时间不超过x如果即使对于t = 1它也超过x,则相应地减少m

    这一步是迄今为止最令人困惑的。这个想法显然是对系统进行基准测试,为mht找到“好”值,但它没有为这些参数提供任何优先级。低内存,但高并行性和多次迭代是否好?高内存和并行性如何,但迭代很少?


总结一下:

  • 被认为是“安全”的并行度和内存使用的最小值是多少?
  • 内存使用、并行性和迭代有什么优先级?
  • 如果一个参数太低,而另外两个相对较高,仍然得到大约 1 秒的执行速度会怎样?
1个回答

Argon2规范提供了非常详细的信息。

一个人如何“弄清楚”应该使用多少线程?如果只使用一个线程,是否不安全?

您想要的最大线程数是系统上的硬件线程数。一个 4 个物理核心的 Intel CPU 超线程给它 8 个逻辑核心应该运行 8 个线程的 Argon2。如果您只使用一个线程,那么您将无法充分利用您的硬件。这本身并不是不安全的,但这确实意味着 KDF 需要更长的时间才能完成相同数量的工作。如果您的系统有很多硬件线程,您可能只想对其进行基准测试。

然而,这并没有回答,如果有 10 倍的用户怎么办?如果 1 MB 是最大值怎么办?如果最大 16 KB 会怎样?哪一点是“太少”的记忆?

没有超出规范规定的限制的有效下限。您可以根据需要将其降低到最低,但请记住,较小的内存量意味着攻击者将能够更轻松地利用ASIC等高速专用处理器您使用的内存越多,攻击的成本就越高。你想尽可能地使用最大值。如果由于资源限制而被迫使用非常少的内存,那么您将无能为力。

这一步是迄今为止最令人困惑的。这个想法显然是对系统进行基准测试,为 m、h 和 t 找到“好的”值,但它没有为这些参数提供任何优先级。低内存,但高并行性和多次迭代是否好?高内存和并行性如何,但迭代很少?

并行实际上用于更快地填充内存。您使用的硬件线程越多,内存被填充和操作的速度就越快。至于内存和迭代使用,这代表了一种权衡。对于所有内存硬算法,攻击者可以利用时间-内存权衡(TMTO) 攻击,他们可以使用比您使用的更少的内存而侥幸逃脱,但代价是大大增加了计算需求。您使用的迭代次数越多,攻击者需要执行的计算就越多,以减少他们需要使用的内存量。确切的最佳值完全取决于攻击本身的经济性(例如,使用TSV可以获得大约 16 GiB的超高速和低延迟内存)蓝宝石衬底,但是对于给定的攻击者来说,这比添加更多计算单元来执行 TMTO 攻击更贵还是更便宜?)。

我们姊妹网站Cryptography(和argon2 标签)上的相关答案有助于解释更多信息: