哪些用户密码参数可以构成安全的 Bcrypt 密码?

Which user password parameters would make a secure Bcrypt password?

问题涉及用户在创建帐户时输入的密码,例如在某些网页上注册。

我遇到过要求用户输入大小写字母、数字和特殊字符的网站...有些网站走极端,要求用户遵循严格的准则。

真的有必要吗?

创建安全的用户密码需要遵循哪些最简单、最低限度的规则?什么时候它变成了安慰剂?

受保护的内容有很大差异,即真正需要什么级别的安全性。在 $.

中评估您的需求

也就是说,很难制定规则来创建远低于破解列表的密码。如果这是我的信息,如果我不需要安全性,我希望能够使用任何东西,包括非常愚蠢的密码。想出并记住 good/hard 密码并不容易。让它变得非常困难,人们将开始依赖密码重置,这很糟糕。

有密码列表,SecLists可能是最大的汇编。看一看,你就会发现简单的规则是行不通的。

有关 bcrypt 的信息,请参阅 How To Safely Store A Password

虽然上面的网站说 bcrypt 是唯一不正确的选择,但另一个不错的选择是 id PBKDF2(基于密码的密钥派生函数 2),它是一个标准并且在大多数系统上也可用。

复杂的密码规则通常不会导致更安全的密码,真正重要的是:

  1. A 最小长度,即使您遵循存储密码的最佳实践,短密码也很容易通过尝试每一种组合而被暴力破解。目前这意味着你应该接受不少于 8 个字符作为绝对最小值(越多越好)。
  2. 您可以采取的另一项措施是,维护最常用密码的列表并拒绝最常用的密码

人们无法记住大量的强密码,复杂的规则会干扰好的密码方案。如果好密码被其中一条规则拒绝,用户通常会切换到较弱的密码。

另一方面,即使是严格的密码规则也无法防止弱密码。人们可以非常有创意地绕过这些规则,例如通过使用像 Password-2015 这样的弱密码(大多数规则都接受)。如果一条规则需要至少一个数字字符,它通常会作为最后一个字符结束 password1,这使得暴力破解实际上并不困难。

如果您过度使用复杂的规则,通常您会得到较弱的密码而不是较强的密码。要改进密码,您可以鼓励您的用户发明一个 密码短语 ,例如 ILikeToSleepUntil8InTheEvening.