在我們的日常使用的無線通信設備當中,都包含了MAC地址。MAC地址具有唯一性的特點,通常在網絡通信當中,MAC地址作為設備符來采用。MAC地址大多是由設備的生產廠商來分配并且存儲在設備當中。如果在網絡當中有兩個設備具有相同的MAC地址,那么就會產生網絡通信的問題,所以設備的生產廠商在分配MAC地址的時候都非常小心,確保地址的唯一性。
一、概述
如果我們希望獲取設備的MAC地址也非常的簡單,當我們打開智能手機或者是平板電腦,您可以非常簡單的在類似于“設備管理”的界面找到設備的MAC地址,而有些設備,比如說無線路由器,它們的MAC地址就打印在設備的背面。同時,我們還可以通過其他的方式來獲取設備的MAC地址。
我們可以試想一下,當我們每天搭乘公共交通穿行了整個城市,當我們在商場購物或是和朋友在餐廳聚餐的時候,你的智能手機可以幫助你付費、點單和導航。如果你的智能手機接入到網絡熱點當中進行互聯網訪問的時候,它就可能會在這一系列的過程當中來廣播其MAC地址。
我們前面提到了MAC地址在網絡通信當中的唯一性,你又是智能手機的使用者,那么這部智能手機的MAC地址從某一角度來講,就代表了你在無線通信過程當中的身份認證。因此就存在這樣一種可能,一些懷有惡意的人通過一些其他的無線通信設備,可以獲取你的智能手機進行數據交互時的MAC地址并且記錄了MAC地址出現的日期、時間和相關的位置,那么你的行蹤就可以被監控,如下圖所示:
使用藍牙技術,也可能面對上面的這種問題。因此在藍牙4.2核心規范當中,對上述問題提出了一種解決方法。要了解這個解決的方法,首先要現從藍牙設備的地址說起。和其他的無線通信技術類似,藍牙設備也有自身的設備地址,我們在藍牙的核心規范當中,通常稱其為BD_ADDR(Bluetooth Device Address),BD_ADDR將會在藍牙設備諸如連接和配對的過程當中起到設備識別的作用。
對于藍牙設備,可以使用公有地址(Public Device Address),也可以使用隨機地址(Random Device Address),但無論是使用公有地址,還是隨機地址,它們的地址長度都是48比特,也就是6個字節。
二、公有地址(Public Device Address)
公有地址的構成包含了兩個部分,一部分是公司識別碼(Company ID),其需要通過IEEE注冊機構付費獲得,公司識別碼長度為24比特,處于48比特設備地址的高24比特;另外一部分是公司分配碼(Company Assigned ID),其長度也為24比特,處于48比特設備地址的低24bit,如下圖所示。
- Company ID(MSB):由IEEE公開分配的地址部分
- Company Assigned(LSB):公司內部分配的ID
除了公有地址,藍牙設備也可以使用隨機地址進行相關的網絡操作。
三、隨機地址(Random Device Address)
藍牙的隨機地址有包含兩種:靜態地址(Static Device Address)和私有地址(PrivateDevice Address)。
3.1、靜態地址(Static Device Address)
靜態地址(Static Device Address)不能再運行期間改變,它的格式如下(本文的地址格式圖均為小端,故下圖中Random為LSB):
其中46位的隨機地址由開發者或者制造商來分配。
注意:所有的藍牙設備必須使用Public Address或者Random Static Address其中一種,而接下來要介紹的Private Address僅用于解決隱私問題。
3.2、 私有地址 ( PrivateDevice Address ) ****
在私有地址的定義當中,又包含了兩個子類:不可解析私有地址(Non-resolvable Private Address)和可解析私有地址(Resolvable Private Address, RPA)。所謂不可解析的私有地址,就是藍牙設備地址在周期性的變化,并且這個地址無法被其他設備所解析,我們可以認為它就是一個隨機數。
A、可解析私有地址(Resolvable Private Address)
可解析的隨機私有地址的目的是防止惡意第三方跟蹤藍牙設備,同時允許一個或多個受信任方識別目標藍牙設備。它的原理是與信任的設備共享一個密鑰,這個密鑰稱為IRK(Identity Resolving Key),可解析的私有隨機地址就是采用IRK和一個隨機數生成的。
在這種情況下,一個可信任的設備稱為bonded device(綁定設備),綁定是兩個藍牙連接后的一個可選功能。比如手機連接過一個藍牙手環,那么斷開藍牙連接后,該設備還會出現在手機的藍牙列表中,這就是綁定,這樣在下次連接的時候就能非常快地配對。這種類型的地址定期變化,根據藍牙規范的建議是每15分鐘更換一次。它的格式如下:
- random part of prand:隨機產生的
- hash:hash值是使用prand和IRK生成的
- 通過隨機生成的prand和IRK計算出hash之后,組合成了可解析的私有地址。
可解析的私有地址意味著藍牙設備地址BD_ADDR在周期性的不斷變化,可以保護用戶的隱私不被跟蹤;同時由于其是可解析的,因此配對設備(Pair Device)可以通過這個私有地址解析出藍牙設備的真實身份。因此,我們要了解可解析的私有地址是如何產生的?
假設有兩個藍牙設備,分別是設備A和設備B,在兩個藍牙設備A、B建立連接之后,這兩個藍牙設備可以通過配對的方式交換各自的身份解析密鑰IRK(Identity Resolving Key, IRK),設備A的身份解析密鑰IRK-A,設備B的身份解析密鑰IRK-B。假設設備B采用了可解析的私有地址機制,那么設備B就需要周期性的產生可解析的私有地址。下圖是可解析隨機地址的結構,其中可解析隨機地址的高兩個比特分別為0和1,作為可解析地址的標識符。
當設備B需要生成隨機地址的時候,其內部會首先生成一個隨機數prand,基于prand隨機數,設備B需要利用哈希hash算法生成可解析隨機地址的另外一部分,hash。prand隨機數和哈希hash分別占用24比特,計算公式為:
哈希hash = ah(IRK-B, prand隨機數)
其中函數ah在藍牙4.2核心規范第3卷H部分2.2.2章節有詳細介紹,此處不再贅述。當設備B具有了prand隨機數和基于prand隨機數生成的哈希hash之后,通過移位相與的方式,就可以生成可解析隨機地址RPA。
RPA= hash || prand
那么設備A該如何解析RPA呢?當設備A收到一個藍牙設備地址BD_ADDR,并且這個地址的地址標識符表明其是一個可解析隨機地址,設備A首先將這個地址拆分為prand隨機數和哈希hash。接下來其利用之前與設備B配對時獲取的IRK-B,通過函數ah來生成一個本地哈希localHash。
localHash = ah(IRK-B, prand)
如果生成的本地哈希localHash與拆分得到的哈希hash相等,說明這個地址是設備B所產生的可解析隨機地址;如果不等,代表解析失敗。設備A可以利用其獲取的其他設備的IRK對這個地址就行解析。下圖是一個地址解析的流程圖。
地址解析流程
因此,對于可解析隨機地址的解析,我們可以認為它是一個窮舉的過程。任何設備在收到一個可解析隨機地址的時候,都會利用其本地所存儲的所有IRK對這個可解析隨機地址進行哈希比對,如果相符,解析過程終止,這個地址的真實身份可解析;如果所有的IRK都無法對這個地址進行解析,那么解析失敗。
通過上述的方法,藍牙設備可以通過采用可解析隨機地址的方式來對設備隱私進行保護,進而對設備使用者的隱私進行保護。采用了可解析隨機地址之后,藍牙設備的地址是周期性不斷變化的,所以即使通過其他方式獲取了藍牙設備的地址,也無法通過設備地址出現的時間和地址來對設備進行跟蹤。只有那些經過配對過程完成了身份解析密鑰IRK交互的可信設備,才能對可解析隨機地址進行解析。
B、不可解析私有地址(Non-resolvable Private Address)
不可解析的私有地址可以保護用戶的隱私,因為不斷變化的設備地址使得任何設備都無法通過記錄藍牙設備地址的方式來對用戶進行跟蹤,但這樣的保護方式也意味著可信任的設備也無法這個藍牙設備的真實身份,因此我們著重介紹可解析的私有地址。如下圖所示,智能手機的設備地址在不斷的變化,因此即便是設備地址被獲取,也無法解析出設備的真實身份,除非具有某種解析密鑰。
這種地址的唯一目的是防止被其他BLE設備監聽。它的地址也會周期性地改變,與可解析地址的不同是,它不能被任何其他設備解析。這種地址不是很常用,但是有時會在Bluetooth beacon中使用。它的格式如下:
四、BLE設備的隱私
如果不采取適當的措施,藍牙的地址可用于跟蹤用戶的數據。藍牙設備的隱私是通過使用resolvable private address(可解析的私有地址)來實現的。在之前的配對過程中對端設備可能已經收到了IRK,以后再建立連接,對端設備在收到了對方廣播報文中的resolvable random address后,將其的prand字段提取出來與本地的IRK計算得到一個hash值,與地址中的hash字段做對比,若相同,才進行后續操作。
- IRK用于生成和解析resolvable private address
- IRK可由每個設備本地生成、隨機生成或在生產過程中分配
- 在bond過程中,每個設備將其對端設備的IRK存儲在它自己的resolving list(解析列表)中
-
連接器
+關注
關注
98文章
14326瀏覽量
136173 -
無線通信
+關注
關注
58文章
4521瀏覽量
143420 -
藍牙技術
+關注
關注
44文章
341瀏覽量
52868 -
無線路由器
+關注
關注
9文章
345瀏覽量
31509 -
Hash算法
+關注
關注
0文章
43瀏覽量
7380
發布評論請先 登錄
相關推薦
評論