gpt4 book ai didi

encryption - bcrypt,河豚的密码最大长度

转载 作者:行者123 更新时间:2023-12-04 15:22:26 27 4
gpt4 key购买 nike

我的问题源于此
How to hash long passwords (>72 characters) with blowfish

我正在使用 bcrypt(blowfish) 对密码进行哈希处理。所以,正如我从这个问题中发现的
https://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximum-password-length

它的字符数限制为 72。

所以,我开始考虑限制密码的最大长度,但是在这些问题和他们的答案之后

https://security.stackexchange.com/questions/33470/what-technical-reasons-are-there-to-have-low-maximum-password-lengths

Why restrict the length of a password?

Should I impose a maximum length on passwords?

所有人都反对这一点。提到事情,比如

  • 节省存储空间
  • 旧Unix系统体验
  • 与不支持长密码的旧系统交互
  • 约定(即“我们一直这样做”)
  • 简单的天真或无知。
  • 明文存储
  • 另外,a maximum length specified on a password field should be read as a SECURITY WARNING ,通过这个答案 - https://stackoverflow.com/a/99724/932473

  • 所以,我认为我不符合其中一种情况。当然,我同意愚蠢的限制,比如最大长度为 10,甚至更糟糕的是 8 或 6,但是 30、40 或更多长度的密码(加盐)不被认为是安全的吗?
    从这篇文章(虽然有点旧),但它说
    it can make only 71,000 guesses against Bcrypt per second

    http://arstechnica.com/security/2012/12/25-gpu-cluster-cracks-every-standard-windows-password-in-6-hours/

    这适用于 8 个字符的密码。所以,我想象自定义彩虹表将有多么巨大,可以暴力破解一个 30 或更多字符的密码(考虑到每个密码都有自己的盐),因为彩虹表的大小呈指数增长

    引用同一篇文章的评论

    Every time you add a character to your password, you are exponentially increasing the difficulty it takes to crack via brute force. For example, an 8-char password has a keyspace of 95^8 combinations, while a 20-char password has a keyspace of 95^20 combinations.



    因此,对于一个带有 bcrypt 的 20 长度密码是必要的
    95^20/(71 000 * 3600 * 24 * 365) ~ 10 的 28 度年(如果我做得对的话)

    qsn1:现在,在这种情况下,河豚是否意味着不将密码最大长度限制为 72,因为在任何情况下,所有内容都将被截断,因此这里没有额外的安全增益。

    qsn2:即使盐存在(对于每个用户来说都是唯一的并且保存在数据库中),毕竟我想在密码中添加胡椒(在应用程序中硬编码而不是保存在数据库中)。我知道是否会增加一点额外的安全性,但我认为以防万一 db(或 db 备份)只是泄漏,胡椒会很有用。
    https://security.stackexchange.com/a/3289/38200
    因此,为了能够添加 20 个字符的胡椒,我需要将密码的最大长度设置为 50 左右。我认为是这样的:假设用户使用 70 个字符,在大多数情况下(如果不是全部),它会是一些类似的短语或smth,而不是生成强大的短语,所以将用户限制为最大长度 50 并添加另一个 20-22 个字符的胡椒不是更安全,这绝对是更安全/随机的。另外,假设黑客正在使用“常用短语”的彩虹表,我认为有更高的机会, 72 character common phrase将被黑客入侵,而不是 50 character common phrase + 22 character random string .那么,这种使用胡椒和最大长度为 50 的方法是否更好,或者我做错了,最好保留 72 最大限制(如果 qsn1 没问题)?

    谢谢

    顺便说一句:

    根据 Owasp,密码的合理最大长度是 160
    https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet#Do_not_limit_the_character_set_and_set_long_max_lengths_for_credentials

    谷歌的密码最大长度为 100

    enter image description here

    Wordpress 的最大限制为 50

    https://signup.wordpress.com/signup/

    最佳答案

    问题一:根本没有理由限制密码长度,BCrypt 可以使用更长的密码,尽管只使用 72 个字符。你根本没有任何优势,但理论上你会阻碍密码管理器使用更长密码的人。如果您将来切换到另一种算法,限制可能会有所不同,因此没有理由限制为 72 个字符。

    问题二:您最好使用另一种方法,而不是使用其他方法:使用服务器端 key 加密密码哈希。添加辣椒的原因是,攻击者必须在服务器上获得特权,因为没有 key 他无法开始暴力破解哈希(SQL 注入(inject)或丢弃的数据库备份不会这样做)。加密(双向)散列具有相同的优势。

  • 这样您就不需要为辣椒保留字符,您可以使用密码中的所有 72 个字符。
  • 与胡椒相比,服务器端 key 可以在必要时交换。胡椒实际上成为密码的一部分,并且在下次登录之前无法更改。
  • 另一个discussed关键是,理论上辣椒可能会干扰哈希算法。
  • 关于encryption - bcrypt,河豚的密码最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24751279/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com