• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MFWT
V2EX  ›  程序员

SHA256 生成的口令被系统认为『太简单了』

  •  
  •   MFWT · Sep 11, 2023 · 4637 views
  •   You need to sign in to view this topic
    This topic created in 1050 days ago, the information mentioned may be changed or developed.

    MJJ 日常,买了台新加坡 VPS ,到手第一件事上公钥登录和改密码

    公钥登录没毛病,ed25519 就好了,但是口令登录出了问题。我用的紧急口令登录算法是 sha256(主口令和机器 IP),然后算出来这么一串东西:

    b2622877f3047940bcfcb123c84e2e30ba9276b326982a6575e52032ecc56ce3
    

    输入到 passwd 中,系统提示太简单了无法使用

    $ cracklib-check <<< b2622877f3047940bcfcb123c84e2e30ba9276b326982a6575e52032ecc56ce3
    
      b2622877f3047940bcfcb123c84e2e30ba9276b326982a6575e52032ecc56ce3: it is too simplistic/systematic
    
    

    咕噜咕噜查了一下发现,可能是这里出了问题:

    b2622877f3047940bcf cb 123 c84e2e30 ba 9276b326982a6575e520 32 ecc 56 ce3
    

    按照说法是五六处『连续排列』的字母数字大大超出了限制,因此被认定为『太简单』

    不过,这个口令真的能被认为是『太简单了』吗?

    不知道各位 V 友有无什么好看法

    19 replies    2023-09-12 16:06:06 +08:00
    raysonx
        1
    raysonx  
       Sep 11, 2023
    我把你的密码放到 bitwarden 提供的密码强度测试工具检测了一下,给出的结果是要几百年才能破解: https://bitwarden.com/password-strength/
    benjix
        2
    benjix  
       Sep 11, 2023 via iPhone
    因为你的密码只包含小写字母和数字,跟内容无关。
    leonshaw
        3
    leonshaw  
       Sep 11, 2023 via Android   ❤️ 1
    系统有它的规则,没必要纠结这个。要说强度,只要够长,用 0 1 两个字符就够了。
    LDa
        4
    LDa  
       Sep 11, 2023
    现在的密码强度有连续数字和滚键盘校验
    yigecaiji
        5
    yigecaiji  
       Sep 11, 2023 via Android
    只有小写和数字是这样的,可能要包含大写字母和特殊符号
    f14g
        6
    f14g  
       Sep 11, 2023 via Android
    base64 编码处理一下😂
    cosette
        7
    cosette  
       Sep 11, 2023
    长度足够,排除掉某些特殊排列的组合,在有重试限制的情况下依然是相当安全的。

    在长度受限的情况下,加入特殊符号可以一定程度上增加强度。总的来说,避开常见密码,不要太短两条原则就够了。
    slowman
        9
    slowman  
       Sep 12, 2023
    经典回顾
    CodeCodeStudy
        10
    CodeCodeStudy  
       Sep 12, 2023
    根据 8 楼给出的代码,b2622877f3047940bcfcb123c84e2e30ba9276b326982a6575e52032ecc56ce3
    出现了 87 bc cb 12 23 ba 76 32 98 65 32 56 ,总共 12 个地方是相邻的值,也就是代码里的变量 i
    maxrepeat = 3+(0.09*strlen(password));
    maxrepeat 是 8
    i 大于 maxrepeat ,所以提示 it is too simplistic/systematic
    jifengg
        11
    jifengg  
       Sep 12, 2023
    我倾向于是因为只有小写和数字导致的。
    aloxaf
        12
    aloxaf  
       Sep 12, 2023
    是这样的,不少密码强度检测工具都完全不考虑长度……
    leaflxh
        13
    leaflxh  
       Sep 12, 2023
    明文后面加上 fuckshit 再 sha256sum 一下(
    Admstor
        14
    Admstor  
       Sep 12, 2023
    @aloxaf 可能就是考虑到即便长但是简单也依然是弱口令

    说起来我并不建议用任何 hash 算法作为密码生成
    这并不算随机密码,某些时候与 123password 没区别
    zsh2517
        15
    zsh2517  
       Sep 12, 2023
    我没用过 cracklib-check 。不过单纯从密码系统的设计上来说,有可能是没有通过一些硬性条件的校验,比如说,大小写数字特殊符号等至少包含 X 种。如果这个硬性条件没满足那么无法通过。另外可能就是撞上了一些固定的校验规则而被一票否决(比如 idu2gi23g89y2398yh9123456ixohs0f ,因为包含 123456 可能会被否认安全性)

    大部分时候长度是能解决安全性问题的( md5(123456) 这种态简单的不算)。就像 3 楼说的,只要够长,0 和 1 两个字符都行(可以这么想,假设我有一个足够安全的密码,那么按位转二进制,安全性不会比原来的差)。

    但是一般设计上,期望用户输入的密码,大部分时候不是无限长度的,而是在一个有限长度内达到特定的安全性。

    我自己用 1password ,里面就有一类“易记密码”,比如“nightcap-boatyard-helix-goodly”,安全性评价大概与 10~11 位字母+数字相同。日用感觉是足够的,而且在不知道规则的情况下反而不容易被密码表撞上
    MFWT
        16
    MFWT  
    OP
       Sep 12, 2023
    @Admstor 那有什么好建议吗,难道真的只能随身带私钥?
    julyclyde
        17
    julyclyde  
       Sep 12, 2023
    假设被外人偷偷知道了你的密码是一个 sha256
    那么这里面“能出现哪些字符”范围就缩小很多了
    虽然不知道具体是几,但是可以穷举,而且代价比 什么都不知道 要小很多
    MFWT
        18
    MFWT  
    OP
       Sep 12, 2023
    @julyclyde

    emmm ,有什么好的建议嘛,比如用专用的密钥导出函数?
    rocksolid
        19
    rocksolid  
       Sep 12, 2023
    实际问题就是你没大写和特殊字符
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1044 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 18:39 · PVG 02:39 · LAX 11:39 · JFK 14:39
    ♥ Do have faith in what you're doing.