aqara门锁一次性密码瞎捣鼓

最近家里装了个aqara的智能门锁,发现有个一次性密码,无需联网无需手机连接就可以直接生成一次性密码,简直amazing!(其实一点不amazing,盲猜HOTP或者TOTP🤨🤨,类似于谷歌的authenticator)

HOTP和TOTP

  • 首先简单说下HOTP和TOTP,简单理解就俩密码生成算法,事先约定好一个密钥,然后客户端服务端用相同规则来计算,就能得到一致的值了。
  • 其中HOTP是根据计数,即密码生成次数,比如客户端第一次生成密钥那就是 密钥+次数通过某算法运算即可得到一个密码,服务器使用同样运算就可以了。至于客户端多生成了几次,次数和服务端对不上怎么办?服务端可以重试!!
  • 至于TOTP是根据时间,即密钥加时间来计算,比如以30s为一个周期,按30s取整加上密钥就可以计算出一个密钥,服务端可以使用同样的算法进行计算。至于时间不准咋办,时间不准那就前后几个周期都算一下,至于差的太多的,那就自己调时间吧。以前很多银行的什么什么盾应该用的就是这种。

具体详细的介绍可以看这篇文章HOTP和TOTP算法图解

aqara门锁一次性密码分析

现在我们来看这个锁的一次性密码


一次性密钥.jpeg

首先,上面这张图可以看到生成的密码的特征
- 6位数
- 一段时间内有效
- 还有一点这张图可能没法显示,就是它在这个时间段内多次生成,可以生成不同的密码

这问题就来了几位数暂时不看,首先一段周期内有效,很像TOTP算法,但第三点这个周期内可以生成很多个不同的密码,这就大条了,TOTP算法理论上在指定的周期内生成的密码是一致的,不然服务端就没法校验了。不过这点倒是和HOTP可以对得上。
所以?我觉得一种可能方式是通过HOTP+TOTP共同来实现😕😕😕!

下面说具体逻辑
首先再来梳理一下

  • 这个一次性密钥有效时间是往后20分钟然后向下取整
  • 周期内可以生成多个不同的密钥
  • 开锁一次后即失效

第三点开锁一次就失效完全可以记录下来这个密钥被使用过,至于存到ram还是rom暂时不知道,下次拔电池试试,不过这不重要,重点看前两点。

举个例子:假设现在是晚上23:06,那么我现在生成一个一次性密钥,有效时间就是到23:20,我们可以取23:00整的时间戳,加上密钥通过某算法运算得到一个密钥。
现在我有了一个密钥,有效期到23:20,我要去开锁,假设我开锁的时候已经是23:11分,那么门锁端怎么校验呢?首先一样的逻辑,往前取整到23:10分,取23:10分的密钥,使用TOTP算法算出密钥,这时候密钥必定不对,因为我们生成的密钥是使用23:00这个时间点的时间戳来生成的;门锁发现匹配不上,那么就再往前取整到23:00,这时候就可以算出一致的密钥,密钥校验通过。

下面再来解决多次的问题,关键的一张图来了!嘿嘿!!!

周期内最多创建8个一次性密钥.jpeg

这张图可以看出来每个时间段最多只能生成8个一次性密码,那就好办了,我们在原有的TOTP算法基础上再加上次数即 现在是 密钥+时间戳+次数 通过某算法即可得到一次性密码,门锁校验时候也可以在上文的基础上加上次数,所以也就是时间准确的情况下门锁理论最多尝试16次即可确定你输入的密码到底是对还是不对。这个计算次数我猜对于嵌入式设备应该是可接受的,因为这个完全可以使用一些相对简单的算法比如md5,毕竟这个只是生成密钥,并不是加密。

最后关于时间我发现手机上生成这个一次性密钥是需要联网的!!!!
抓包如下图


一次性密钥生成过程抓包.png

第一个请求,报文挺复杂,没整明白,不过不重要,看名字应该是获取utc时间的,这样就可以规避手机终端时间不准确的问题,第二个请求我也不知道干啥用的。

至此,由aqara这个智能锁的一次性密钥所引起的一些想法就告一段落,虽然我说的未必就真的是这款锁一次性密钥的实现方式,但我想说的重点还是HOTP和TOTP这两种算法。挺好玩的两种算法,实际开发中遇到一些需要较高安全性的校验也可以使用一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339