用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 个数量级吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.