藍芽入門(隨便寫寫)
藍芽地址相關
public address
一般寫在 韌體中,不能改變的地址
BR/EDR也同樣使用該地址?
在log中為BD_ADDR引數
random address
另一種型別的地址,可以分為兩種,static address和private address
random static address 一般是開機自動產生,有host通過set random address傳遞給control
private address 分為resolvable 和Non-resolvable兩種型別
重點關注resolvable private address,這類地址可以被解析。
當裝置同時擁有對端IRK和本地IRK的時候,就可以將resolvable private address解析成indentify address。
indentify address
這類地址是一個抽象的概念,故名思意,其作用就是識別裝置的地址
如果一個裝置僅支援public address, 那麼該public address 可以作為這個裝置的indentify address,在配對過程中使用
如果一個裝置支援random static address,同樣可以作為indentify address使用
如果一個裝置使用的是resolvable private address, 通過IRK解析之後的地址,才是indentify address。
RPA(resolveable private address)
如何生成RPA
為了連線過程中的安全,我們可以用RPA地址與對端裝置連線
每次連線,RPA地址並不是固定的地址,但是擁有IRK的裝置,能夠解析RPA地址,指向相同的裝置
RPA通過IRK和pRand 產生
可以產生自己的RPA,也可以產生對端裝置的RPA
解析RPA
localHash = ah(IRK,pRand)
接收到對端的RPA之後,可以計算出對端的peerHash值,前24bit 即為對端的hash
localHash 與peerHash對比,就能解析出是否是曾經配對過的裝置
RPA解析的目的是:將random address轉化為indetify address, 然後獲取到正確的LTK或者GATT cache
RPA流
IRK(Identity Resolving Key,藍芽裝置地址解析金鑰)
IRK是裝置配對過程中,SMP 交換的資訊
自己的IRK和對端的IRK,用來解析私有地址
所有已經配對過裝置的IRK,在resolving list這個表中維護
resolving list
這個列表保護一些列對端和自己的IRK配對記錄
列表維護在controller中,可以不經過host,完成解析RPA功能
此列表中的地址是inditify address,一個裝置一個地址,通過確定的地址,找到正確的IRK
藍芽傳輸速率
BR/EDR
經典傳輸速度、
BR最大723.2kbps
EDR最大2178kbps
LE 1M PHY
1MHZ佔用寬頻
LE 2M PHY
2MHZ佔用寬頻