aqara門鎖一次性密碼瞎搗鼓

最近家里裝了個aqara的智能門鎖,發(fā)現(xiàn)有個一次性密碼,無需聯(lián)網(wǎng)無需手機連接就可以直接生成一次性密碼,簡直amazing!(其實一點不amazing,盲猜HOTP或者TOTP????,類似于谷歌的authenticator)

HOTP和TOTP

  • 首先簡單說下HOTP和TOTP,簡單理解就倆密碼生成算法,事先約定好一個密鑰,然后客戶端服務端用相同規(guī)則來計算,就能得到一致的值了。
  • 其中HOTP是根據(jù)計數(shù),即密碼生成次數(shù),比如客戶端第一次生成密鑰那就是 密鑰+次數(shù)通過某算法運算即可得到一個密碼,服務器使用同樣運算就可以了。至于客戶端多生成了幾次,次數(shù)和服務端對不上怎么辦?服務端可以重試??!
  • 至于TOTP是根據(jù)時間,即密鑰加時間來計算,比如以30s為一個周期,按30s取整加上密鑰就可以計算出一個密鑰,服務端可以使用同樣的算法進行計算。至于時間不準咋辦,時間不準那就前后幾個周期都算一下,至于差的太多的,那就自己調時間吧。以前很多銀行的什么什么盾應該用的就是這種。

具體詳細的介紹可以看這篇文章HOTP和TOTP算法圖解

aqara門鎖一次性密碼分析

現(xiàn)在我們來看這個鎖的一次性密碼


一次性密鑰.jpeg

首先,上面這張圖可以看到生成的密碼的特征
- 6位數(shù)
- 一段時間內有效
- 還有一點這張圖可能沒法顯示,就是它在這個時間段內多次生成,可以生成不同的密碼

這問題就來了幾位數(shù)暫時不看,首先一段周期內有效,很像TOTP算法,但第三點這個周期內可以生成很多個不同的密碼,這就大條了,TOTP算法理論上在指定的周期內生成的密碼是一致的,不然服務端就沒法校驗了。不過這點倒是和HOTP可以對得上。
所以?我覺得一種可能方式是通過HOTP+TOTP共同來實現(xiàn)??????!

下面說具體邏輯
首先再來梳理一下

  • 這個一次性密鑰有效時間是往后20分鐘然后向下取整
  • 周期內可以生成多個不同的密鑰
  • 開鎖一次后即失效

第三點開鎖一次就失效完全可以記錄下來這個密鑰被使用過,至于存到ram還是rom暫時不知道,下次拔電池試試,不過這不重要,重點看前兩點。

舉個例子:假設現(xiàn)在是晚上23:06,那么我現(xiàn)在生成一個一次性密鑰,有效時間就是到23:20,我們可以取23:00整的時間戳,加上密鑰通過某算法運算得到一個密鑰。
現(xiàn)在我有了一個密鑰,有效期到23:20,我要去開鎖,假設我開鎖的時候已經(jīng)是23:11分,那么門鎖端怎么校驗呢?首先一樣的邏輯,往前取整到23:10分,取23:10分的密鑰,使用TOTP算法算出密鑰,這時候密鑰必定不對,因為我們生成的密鑰是使用23:00這個時間點的時間戳來生成的;門鎖發(fā)現(xiàn)匹配不上,那么就再往前取整到23:00,這時候就可以算出一致的密鑰,密鑰校驗通過。

下面再來解決多次的問題,關鍵的一張圖來了!嘿嘿?。。?br>

周期內最多創(chuàng)建8個一次性密鑰.jpeg

這張圖可以看出來每個時間段最多只能生成8個一次性密碼,那就好辦了,我們在原有的TOTP算法基礎上再加上次數(shù)即 現(xiàn)在是 密鑰+時間戳+次數(shù) 通過某算法即可得到一次性密碼,門鎖校驗時候也可以在上文的基礎上加上次數(shù),所以也就是時間準確的情況下門鎖理論最多嘗試16次即可確定你輸入的密碼到底是對還是不對。這個計算次數(shù)我猜對于嵌入式設備應該是可接受的,因為這個完全可以使用一些相對簡單的算法比如md5,畢竟這個只是生成密鑰,并不是加密。

最后關于時間我發(fā)現(xiàn)手機上生成這個一次性密鑰是需要聯(lián)網(wǎng)的?。。?!
抓包如下圖


一次性密鑰生成過程抓包.png

第一個請求,報文挺復雜,沒整明白,不過不重要,看名字應該是獲取utc時間的,這樣就可以規(guī)避手機終端時間不準確的問題,第二個請求我也不知道干啥用的。

至此,由aqara這個智能鎖的一次性密鑰所引起的一些想法就告一段落,雖然我說的未必就真的是這款鎖一次性密鑰的實現(xiàn)方式,但我想說的重點還是HOTP和TOTP這兩種算法。挺好玩的兩種算法,實際開發(fā)中遇到一些需要較高安全性的校驗也可以使用一下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容