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

2023-09-11 21:49:27 +08:00
 MFWT

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 友有无什么好看法

3342 次点击
所在节点    程序员
19 条回复
raysonx
2023-09-11 21:52:59 +08:00
我把你的密码放到 bitwarden 提供的密码强度测试工具检测了一下,给出的结果是要几百年才能破解: https://bitwarden.com/password-strength/
benjix
2023-09-11 21:56:07 +08:00
因为你的密码只包含小写字母和数字,跟内容无关。
leonshaw
2023-09-11 22:55:25 +08:00
系统有它的规则,没必要纠结这个。要说强度,只要够长,用 0 1 两个字符就够了。
LDa
2023-09-11 23:22:05 +08:00
现在的密码强度有连续数字和滚键盘校验
yigecaiji
2023-09-11 23:30:11 +08:00
只有小写和数字是这样的,可能要包含大写字母和特殊符号
f14g
2023-09-11 23:39:58 +08:00
base64 编码处理一下😂
cosette
2023-09-11 23:46:17 +08:00
长度足够,排除掉某些特殊排列的组合,在有重试限制的情况下依然是相当安全的。

在长度受限的情况下,加入特殊符号可以一定程度上增加强度。总的来说,避开常见密码,不要太短两条原则就够了。
764664
2023-09-11 23:47:45 +08:00
1423
2023-09-12 00:32:34 +08:00
经典回顾
CodeCodeStudy
2023-09-12 09:15:30 +08:00
根据 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
2023-09-12 09:56:03 +08:00
我倾向于是因为只有小写和数字导致的。
aloxaf
2023-09-12 10:39:31 +08:00
是这样的,不少密码强度检测工具都完全不考虑长度……
leaflxh
2023-09-12 11:55:54 +08:00
明文后面加上 fuckshit 再 sha256sum 一下(
Admstor
2023-09-12 12:22:16 +08:00
@aloxaf 可能就是考虑到即便长但是简单也依然是弱口令

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

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

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

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

emmm ,有什么好的建议嘛,比如用专用的密钥导出函数?
rocksolid
2023-09-12 16:06:06 +08:00
实际问题就是你没大写和特殊字符

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/972852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX