由一个电子指纹锁想到的,难道指纹锁内部存储密码都是明文?

2021-06-04 22:34:45 +08:00
 liuidetmks

最近买了一个销量很高的指纹锁装上了(牌子就不说了), 说实话各种体验都挺好。很人性化。很赞,我都想买个蓝牙网关把它的功能都玩一玩。

但是,(对,凡事就怕但是)
其中有个功能,只要你输入密码包含真实密码就能开门,是的这个是用来混淆旁观者的。
例如,你真实密码 123456,你可以输入 1234512333333331111111112345666666666 就能解锁。
对于此,我陷入了人生的大思考,
难道内部程序是吧密码直接明文存储在内存中? 匹配的时候直接

if (INPUTSTRING.contains(realPsw){
   openTheDoor ()
}

-- 这样不是可能存在漏洞让人通过内存嗅探到密码,当然单人单户可能不值得这么去破解,如果破解这一个型号的锁,应该也是有人做的吧。

如果他是加密存储的密码,如果那么验证也太飞快了吧,每个不定长子串都加密或者 Hash 匹配一次,也是很大的次数吧。(应该超过多项式复杂度了吧)

我目前知道的,防止人暴力枚举的方法是PBKDF2, 让每次尝试的时间成本很大,(当然对嵌入式设备,尤其是没插电的,可能有更省电的方式)而不是简单的程序判断错误次数超过阈值就休眠,因为这个内存中这个次数对于金手指来说是可编辑的。


我当然知道这只是一个 1000 块的东西,可是安全问题,多考虑一下也没什么问题。

由于本人所知有限,有错误的话,希望大家指正,谢谢。

7486 次点击
所在节点    信息安全
68 条回复
LithiumLee
2021-06-05 23:55:08 +08:00
想安全还是在门里面装个触发机构,自动报警比较安全
janxin
2021-06-06 14:25:28 +08:00
@beijiaoff 最长十几位呢…
janxin
2021-06-06 14:26:41 +08:00
@beijiaoff 你应该没用过吧,这种密码位数都是可都是可变的,最长可以十几位
msg7086
2021-06-06 15:03:16 +08:00
@agostop #50
> 如果真的只是存的 hash,你怎么知道是 6 位的密码?

密码的长度是个数字,其实是可以存的。你可以把 6 存在存储器里,不贵。

@liuidetmks #6
你用软件可以每秒输入几百万个数字来离线穷举,所以才需要重复 hash 。
但是密码锁,就算你单身 30 年的左手也未必能一秒按十次。
就算是要防止电信号直接连接暴力破解,锁内部直接 sleep 一下就好了,没必要反复计算。

反复计算抗爆破的前提是你需要防止别人拿到 hash 以后在另一台电脑上爆破。
但是通常不会有人破解门锁的时候去读门锁内部的 hash 。
毕竟你都能读到门锁内部的数据了,为什么不把锁直接拆了。
msg7086
2021-06-06 15:08:15 +08:00
另外推荐看看撬锁律师的视频,可能会让你对锁有更深的了解。

https://www.youtube.com/c/lockpickinglawyer/videos?view=0&sort=p&flow=grid
julyclyde
2021-06-07 10:57:22 +08:00
其实和网络身份验证的“PIN+TOKEN”类似,这部分是明文的
网络一般依赖于更底层的加密传输
门锁依赖于前后部的连线不外露
morningtzh
2021-06-07 12:48:02 +08:00
鹿客 6 位密码,16 位虚密码。无脑 hash 16 次搞定
leafin
2021-06-07 22:45:32 +08:00
我没用过,但我猜密码是定长的,或者保存密码的同时保存 hash 和密码长度。

假设密码长度是 6,输入长度是 10,验证时从前往后每次截取相邻的 6 个字符进行 hash 比较,只需要比较 10-6+1=5 次就行了。

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

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

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

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

© 2021 V2EX