用pass
指代真实密码,用input
指代输入的字符串,如果要求严格匹配,那么显然应该是input==pass
;但智能门锁大多有“虚位密码”功能,只要输入字符串里包含密码即解锁,即input.Contains(pass)
。当然会有一些限制比如 input 最长不超过多少位。
现在假设攻击者知道用户密码中包含连续字符12345
,知道用户真实密码是 7 位数字,但不知道12345
出现的位置,那么在严格匹配模式下,攻击者用暴力破解要尝试 300 次(AB12345
, A12345B
, 12345AB
各 100 次)才能保证破解。
现在假如智能门锁带虚位密码功能,并且最长允许输入 16 位,那么攻击者最少大约需要尝试多少次才能保证破解?或者粗略估计相比 300 次降低了多少比例?
能直接想到的是用AB12345CD12345EF
来构造,粗估大约 50 次,但如果无法合理构造 ABCDEF 避免浪费次数,需要次数可能更多?或者其中一部分用AB12345C12345DE
之类或许也可以避免浪费,需要次数可能更少?
更常见的可能是攻击者能猜到 4 位数(比如生日),并且用户很懒只设了 6-7 位数密码,并且智能门锁产品经理拍脑袋定了 20 位虚位密码,这种情况下尝试次数会比严格匹配模式下暴力破解尝试次数大约减少多少?有少 1-2 个数量级吗?
![]() |
1
cmdOptionKana 79 天前
没用过密码锁,但可以想到最简单的解决方案就是像 iphone 那种,输入错误次数多了,就限制时间。
|
2
llxvs 79 天前 via iPhone
门锁而已,真有那闲工夫直接一脚踹开了
|
3
edak 79 天前 via iPhone
虚位时更长,所以只会更安全
|
4
newtype0092 79 天前
现在的电子锁不存在暴力破解吧,要是考虑暴力破解最危险的应该是手机。
|
![]() |
5
restkhz 79 天前 ![]() 如果把这个问题抽象出来,
比如你提到的 AB12345CD12345EF 这种情况直接覆盖了 6 种可能。原本你需要用 42 个字符表示的,但是现在你用了 16 个。 AB12345CD 覆盖 3 种 AB12345CD12345EF 有 6 种 AB12345CD12345EF12345GH 有 9 种,接近一个数量级。 .... 换个想法,如果我们允许一次输入 9999 个字符,那么一次就可以包含所有组合。 记得包含 A12345BC12345DE 这样的。 所以如果密码长度缩小或者允许输入长度变大都会有问题。你问的那个情况在密码只有 6 位已知 4 位的情况下,20 位的空间应该正好一次可以试 9 种组合。差不多一个数量级。 |
![]() |
6
Perry 79 天前 via iPhone
尝试次数下降不代表安全性一定减小,你还需要提供锁的更多信息,比如密码错误之后需要多久冷静时间输下个密码,有些锁直接可以秒输下一个,那安全性差别就更小了
|
7
rocmax 79 天前 ![]() 假设密码使用 0-9 的数字,最长输入 10 位,实际密码为 6 位。
实际上相当于从 10 个位置中选出 6 个位置填充密码,剩余的 4 个位置随意输入: C(10,7)*10^4=1200000 而所有可能为 10^10,于是破解的概率为 0.00012 7 位密码全吻合的概率 1/10^7=0.0000001 |
![]() |
9
zhy0216 79 天前
超排列
|
10
GuuJiang 79 天前 via iPhone ![]() 猜你在找:德布鲁因序列
|
![]() |
11
Felldeadbird 78 天前
密码锁有防破解的能力的。错误次数达到指定就锁机。完全不能使用了。
|
12
soulflysimple123 78 天前
输错三次一般就锁定告警了
|
![]() |
13
kinkin666 78 天前 ![]() 密码锁试错都有次数和间隔组合起来的限制的
密码的判断是 input.EndsWith(pass) 而不是 input.Contains(pass) ,不过这无所谓(可能也跟具体程序有关) 你利用最大输入位数来进行尝试,不过是松弛了次数和间隔的,放宽了两倍三倍又如何? 别人门锁马上就联动 app 智能猫眼拍照给房主发告警了 而且,虚位密码更重要的是用来防范哪些朴实无华的攻击手段,比如偷窥,比如防止密码键盘上的包浆总是在特定几个数字上 还有就是虚位密码可以用来设置告警,就是被人要挟着,门是开了,但是告警也发出去了 我觉得有一种开锁办法最好…… 那就是有的防盗门的被人反着装,合页转轴在门外,装门锁的师傅又懒得和门锁上的天地钩联动,直接把合页转轴上螺丝拆下来,门就能整个掉下来了 不过这个时候,智能门锁可能因为门掉下来了,触碰到锁舌了,也会告警(智能门锁被翘、被破坏也会告警的) P.S. 门还是好拆一点好一点,不然有点什么事情消防拆门真的要很久,特别是家里有很小的小孩和很老的老人的,建议直接不要装天地钩,同时反锁功能也可以考虑拆掉 |
![]() |
14
unco020511 78 天前
门锁是有试错次数限制的,而且这样在旁边有人时,会更安全,因为别人并不知道哪一部分是你真正的密码,另外一个设计原因就是方便,不然你经常会按错一个就得等个好多秒重新来
|
15
atuocn 78 天前 ![]() 判断密码是用 contains 。按#7 楼的算法,实际撞中概率还要高,因为虚位密码不是定长的,相当于剩余的位置可以不输入,是 11 种选择。
但是锁还是有连续输入次数限制的,而且密码长度也不是固定 6 位,你可以设置得更长,所以还要猜真实密码长度。至于指纹包浆,输入密码时是要求全抹开屏,实际是擦除了指纹。所以还是安全的。 虚位密码主要是旁边有人时临时防偷窥,你一顿眼花缭乱得输入,别人记不住。另外一个用途是,输错了,不管继续输入对得密码序列就可以了。 Anyway ,不要靠虚位密码来增强安全性。把密码设长点才是王道,不要 6 位,至少 8 位。 另外,我是喜欢密码锁。不喜欢生物特征锁。 |