V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
snw
V2EX  ›  问与答

在知道部分密码的情况下,智能门锁的“虚位密码”功能会导致安全性下降多少?

  •  
  •   snw · 79 天前 via Android · 1721 次点击
    这是一个创建于 79 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 个数量级吗?

    16 条回复    2025-07-08 21:36:38 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       79 天前
    没用过密码锁,但可以想到最简单的解决方案就是像 iphone 那种,输入错误次数多了,就限制时间。
    llxvs
        2
    llxvs  
       79 天前 via iPhone
    门锁而已,真有那闲工夫直接一脚踹开了
    edak
        3
    edak  
       79 天前 via iPhone
    虚位时更长,所以只会更安全
    newtype0092
        4
    newtype0092  
       79 天前
    现在的电子锁不存在暴力破解吧,要是考虑暴力破解最危险的应该是手机。
    restkhz
        5
    restkhz  
       79 天前   ❤️ 1
    如果把这个问题抽象出来,
    比如你提到的 AB12345CD12345EF 这种情况直接覆盖了 6 种可能。原本你需要用 42 个字符表示的,但是现在你用了 16 个。
    AB12345CD 覆盖 3 种
    AB12345CD12345EF 有 6 种
    AB12345CD12345EF12345GH 有 9 种,接近一个数量级。
    ....
    换个想法,如果我们允许一次输入 9999 个字符,那么一次就可以包含所有组合。
    记得包含 A12345BC12345DE 这样的。

    所以如果密码长度缩小或者允许输入长度变大都会有问题。你问的那个情况在密码只有 6 位已知 4 位的情况下,20 位的空间应该正好一次可以试 9 种组合。差不多一个数量级。
    Perry
        6
    Perry  
       79 天前 via iPhone
    尝试次数下降不代表安全性一定减小,你还需要提供锁的更多信息,比如密码错误之后需要多久冷静时间输下个密码,有些锁直接可以秒输下一个,那安全性差别就更小了
    rocmax
        7
    rocmax  
       79 天前   ❤️ 1
    假设密码使用 0-9 的数字,最长输入 10 位,实际密码为 6 位。
    实际上相当于从 10 个位置中选出 6 个位置填充密码,剩余的 4 个位置随意输入:
    C(10,7)*10^4=1200000
    而所有可能为 10^10,于是破解的概率为 0.00012
    7 位密码全吻合的概率 1/10^7=0.0000001
    rocmax
        8
    rocmax  
       79 天前
    @rocmax 上面的 6 应为 7
    zhy0216
        9
    zhy0216  
       79 天前
    超排列
    GuuJiang
        10
    GuuJiang  
       79 天前 via iPhone   ❤️ 1
    猜你在找:德布鲁因序列
    Felldeadbird
        11
    Felldeadbird  
       78 天前
    密码锁有防破解的能力的。错误次数达到指定就锁机。完全不能使用了。
    soulflysimple123
        12
    soulflysimple123  
       78 天前
    输错三次一般就锁定告警了
    kinkin666
        13
    kinkin666  
       78 天前   ❤️ 1
    密码锁试错都有次数和间隔组合起来的限制的
    密码的判断是 input.EndsWith(pass) 而不是 input.Contains(pass) ,不过这无所谓(可能也跟具体程序有关)

    你利用最大输入位数来进行尝试,不过是松弛了次数和间隔的,放宽了两倍三倍又如何?
    别人门锁马上就联动 app 智能猫眼拍照给房主发告警了
    而且,虚位密码更重要的是用来防范哪些朴实无华的攻击手段,比如偷窥,比如防止密码键盘上的包浆总是在特定几个数字上
    还有就是虚位密码可以用来设置告警,就是被人要挟着,门是开了,但是告警也发出去了

    我觉得有一种开锁办法最好…… 那就是有的防盗门的被人反着装,合页转轴在门外,装门锁的师傅又懒得和门锁上的天地钩联动,直接把合页转轴上螺丝拆下来,门就能整个掉下来了

    不过这个时候,智能门锁可能因为门掉下来了,触碰到锁舌了,也会告警(智能门锁被翘、被破坏也会告警的)

    P.S. 门还是好拆一点好一点,不然有点什么事情消防拆门真的要很久,特别是家里有很小的小孩和很老的老人的,建议直接不要装天地钩,同时反锁功能也可以考虑拆掉
    unco020511
        14
    unco020511  
       78 天前
    门锁是有试错次数限制的,而且这样在旁边有人时,会更安全,因为别人并不知道哪一部分是你真正的密码,另外一个设计原因就是方便,不然你经常会按错一个就得等个好多秒重新来
    atuocn
        15
    atuocn  
       78 天前   ❤️ 1
    判断密码是用 contains 。按#7 楼的算法,实际撞中概率还要高,因为虚位密码不是定长的,相当于剩余的位置可以不输入,是 11 种选择。

    但是锁还是有连续输入次数限制的,而且密码长度也不是固定 6 位,你可以设置得更长,所以还要猜真实密码长度。至于指纹包浆,输入密码时是要求全抹开屏,实际是擦除了指纹。所以还是安全的。

    虚位密码主要是旁边有人时临时防偷窥,你一顿眼花缭乱得输入,别人记不住。另外一个用途是,输错了,不管继续输入对得密码序列就可以了。

    Anyway ,不要靠虚位密码来增强安全性。把密码设长点才是王道,不要 6 位,至少 8 位。

    另外,我是喜欢密码锁。不喜欢生物特征锁。
    snw
        16
    snw  
    OP
       78 天前 via Android
    @atuocn
    感觉如果虚位长度限制不比真实密码长太多还好,有些虚位密码允许输入 32 位,如果真实密码又很短的话会下降几个数量级。

    虚位密码用来防临时偷没什么问题。我只是在想对于“半熟半生人”会不会遇到问题,就是对方有途径知道生日或手机尾号之类,但并不想让对方来家里。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4687 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 01:06 · PVG 09:06 · LAX 18:06 · JFK 21:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.