Argon2 密码哈希参数安全

问题描述

我正在开发一个移动应用程序,在我对 argon2 密码哈希算法的非专业研究中,似乎(忽略密钥和盐)有三个主要参数:

  • 迭代
  • 记忆
  • 并行性

虽然广播这些显然没有意义,但据我所知,这些将不可避免地需要在移动应用程序中编译,并且不法分子可以通过反编译移动应用程序来找出这些参数。

我需要如何保护这些参数?

如果需要保护这些参数,我该如何混淆这些参数或减轻对已编译应用程序的威胁?或者,这些参数是否可以通过在移动应用内编译以外的方式以某种方式分发?

解决方法

您根本不应该保护默认的 Argon2 参数。

相反,你应该为他们自豪

如果散列泄露,您应该选择能够最大限度地抵抗离线暴力攻击的参数。根据{{​​3}},您应该对选择它们公开发布它们背后的数学有足够的信心。

,

不需要保护这些参数,安全性不依赖于它们的保密性。

您更需要它们来验证用户输入的密码,因此有必要将它们与存储的密码哈希一起存储(通常它们成为密码哈希的一部分)。将参数与每个散列密码一起存储允许将来调整参数(用于更快的硬件),并且仍然能够验证旧密码,其中使用较低参数散列。