藍(lán)牙配對(duì)之——低功耗傳統(tǒng)配對(duì),萬(wàn)能鑰匙進(jìn)入
在上一篇《藍(lán)牙配對(duì)之——密鑰生成方法》中,我們討論了密鑰的生成方法 – 如果發(fā)起設(shè)備和響應(yīng)設(shè)備都滿足一定的IO功能,它們就可以選擇低功耗傳統(tǒng)配對(duì)(Legacy Pairing)的Passkey Entry方法。
在本文中,讓我們繼續(xù)深入了解如何借助Passkey Entry進(jìn)行傳統(tǒng)配對(duì)及其工作原理。
圖 1:通過(guò)Passkey Entry進(jìn)入低功耗傳統(tǒng)配對(duì)
1.臨時(shí)密鑰(TK) 和隨機(jī)數(shù)生成
采用低功耗傳統(tǒng)藍(lán)牙配對(duì)時(shí),兩臺(tái)設(shè)備都會(huì)生成臨時(shí)密鑰(Temporary Key,簡(jiǎn)稱TK),進(jìn)行配對(duì)。
如果發(fā)起設(shè)備或響應(yīng)設(shè)備中的任何一臺(tái)設(shè)備的IO具有顯示功能,就會(huì)生成并顯示任意一個(gè)位于 “000000”到“999999”之間的TK值。另一臺(tái)設(shè)備應(yīng)具有輸入功能,如鍵盤,這樣用戶就能輸入這一臨時(shí)密鑰值。
如果發(fā)起設(shè)備和響應(yīng)設(shè)備的IO功能都不具備顯示功能,但都是“僅有鍵盤(Keyboard Only)”,那么用戶就需要確保發(fā)起設(shè)備和響應(yīng)設(shè)備之間的臨時(shí)密鑰是相同的,這是Passkey Entry進(jìn)入的一個(gè)特例。
下圖是一臺(tái)設(shè)備名為“AuthenTIcaTIon”的設(shè)備想要與一臺(tái)iOS設(shè)備配對(duì)時(shí)的場(chǎng)景,“AuthenTIcaTIon”設(shè)備的輸入界面上顯示了臨時(shí)密鑰。之后,iOS設(shè)備就會(huì)跳出對(duì)話框,提示用戶輸入臨時(shí)密鑰值。
圖2:iOS設(shè)備的萬(wàn)能鑰匙進(jìn)入
輸入臨時(shí)密鑰值之后,發(fā)起設(shè)備和響應(yīng)設(shè)備應(yīng)生成一個(gè)128位的臨時(shí)數(shù)值,發(fā)起設(shè)備的叫做Mrand (“master random”),響應(yīng)設(shè)備的叫做Srand (“slave random”)。
2.Mconfirm和Sconfirm
Mconfirm和Sconfirm是128位的確認(rèn)值,可以通過(guò)確認(rèn)值生成函數(shù)c1計(jì)算得出。這一函數(shù)的相關(guān)詳情請(qǐng)參考藍(lán)牙核心規(guī)格4.2版本,第4卷,H部分,第2.2.3章節(jié)
c1 函數(shù)的輸入?yún)?shù)包括:
臨時(shí)密鑰(TK)
用于計(jì)算Mconfirm的Mrand,或用于計(jì)算Sconfirm的Srand
配對(duì)請(qǐng)求指令
配對(duì)響應(yīng)指令
發(fā)起設(shè)備地址類型
發(fā)起設(shè)備地址
響應(yīng)設(shè)備地址類型
響應(yīng)設(shè)備地址