藍牙的地址問題


From

 

 

1 地址分類

就像Ethernet MAC (Media Access Control)地址一樣,每個藍牙設備有一個基本標識符,即藍牙設備地址,其是一個48位(6-byte)的唯一標識,藍牙建立連接時使用的就是這個地址。

藍牙有兩類地址:

  • Public deviceaddress 

  • Random device address

     


Public deviceaddress:相當於固定的BR / EDR,工廠編程的設備地址。它必須向IEEE注冊機構注冊,並且在設備的生命周期內不會變化。

藍牙random地址又進一步分類如下:

 

 

對於一個藍牙設備,可以使用public,static, resolvable 或者non-resolvable類型的藍牙地址,地址類型通過廣播包中的一個bit來區分,這個bit就是TxAddr和RxAddr。

 

  • Public address: 全球唯一性地址,前3個字節體現了OUI(Organizationallyunique identifier),表明制造商,定義如下

 

 

 

 

  • Static random address: 當OUI無法獲取時,可以使用靜態隨機地址來替換Public address,定義如下:

     

     

 

  • Private addresses: 可以周期性的變化,因此可以避免設備被跟蹤。這類地址又分為可以解析的地址和不可解析的私有地址。

     

  • Resolvable private address: 雙方設備可以通過一個共享的key來解析的地址,BLE雙方在經過配對以后,會產生一個用於解析私有地址的key,在后續的連接中,即使BLE設備地址發生了變化,也能被信任的設備識別,但對其他設備來說,則是隨機變化和不可跟蹤的,定義如下:

 

 

 

 

  • Non-resolvable privateaddress: 不可解析的地址,一般不希望使用這類型的地址,定義形式如下:

 

 

 

2 私有地址生成與解析

Resolvable private address的生成方法和解析方法

在藍牙的pairing/bonding流程中,雙方會產生交換兩個參數(IPK,prand),其中IPK是地址解析用的密鑰,prand是一個隨機數,私有地址的解析會用到這兩個參數以及一個哈希函數ah。

生成方法:

 

 

 

 

 

 

可以看到這類地址有兩部分組成,24位的pand以及24位的hash值。因此,對方設備只要根據這個地址信息,使用相同的key就能解析出該地址:

 

 

 

 

 

上面公式中的prand是從對方地址中獲取的,只要localhash與對方的hash值相同,就可以認為,這個設備是之前配對過可信的設備,從而實現雙方設備的通信。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM