在我們的日常使用的無線通信設(shè)備當(dāng)中,都包含了MAC地址。MAC地址具有唯一性的特點(diǎn),通常在網(wǎng)絡(luò)通信當(dāng)中,MAC地址作為設(shè)備符來采用。MAC地址大多是由設(shè)備的生產(chǎn)廠商來分配并且存儲在設(shè)備當(dāng)中。如果在網(wǎng)絡(luò)當(dāng)中有兩個(gè)設(shè)備具有相同的MAC地址,那么就會產(chǎn)生網(wǎng)絡(luò)通信的問題,所以設(shè)備的生產(chǎn)廠商在分配MAC地址的時(shí)候都非常小心,確保地址的唯一性。
一、概述
如果我們希望獲取設(shè)備的MAC地址也非常的簡單,當(dāng)我們打開智能手機(jī)或者是平板電腦,您可以非常簡單的在類似于“設(shè)備管理”的界面找到設(shè)備的MAC地址,而有些設(shè)備,比如說無線路由器,它們的MAC地址就打印在設(shè)備的背面。同時(shí),我們還可以通過其他的方式來獲取設(shè)備的MAC地址。
我們可以試想一下,當(dāng)我們每天搭乘公共交通穿行了整個(gè)城市,當(dāng)我們在商場購物或是和朋友在餐廳聚餐的時(shí)候,你的智能手機(jī)可以幫助你付費(fèi)、點(diǎn)單和導(dǎo)航。如果你的智能手機(jī)接入到網(wǎng)絡(luò)熱點(diǎn)當(dāng)中進(jìn)行互聯(lián)網(wǎng)訪問的時(shí)候,它就可能會在這一系列的過程當(dāng)中來廣播其MAC地址。
我們前面提到了MAC地址在網(wǎng)絡(luò)通信當(dāng)中的唯一性,你又是智能手機(jī)的使用者,那么這部智能手機(jī)的MAC地址從某一角度來講,就代表了你在無線通信過程當(dāng)中的身份認(rèn)證。因此就存在這樣一種可能,一些懷有惡意的人通過一些其他的無線通信設(shè)備,可以獲取你的智能手機(jī)進(jìn)行數(shù)據(jù)交互時(shí)的MAC地址并且記錄了MAC地址出現(xiàn)的日期、時(shí)間和相關(guān)的位置,那么你的行蹤就可以被監(jiān)控,如下圖所示:
使用藍(lán)牙技術(shù),也可能面對上面的這種問題。因此在藍(lán)牙4.2核心規(guī)范當(dāng)中,對上述問題提出了一種解決方法。要了解這個(gè)解決的方法,首先要現(xiàn)從藍(lán)牙設(shè)備的地址說起。和其他的無線通信技術(shù)類似,藍(lán)牙設(shè)備也有自身的設(shè)備地址,我們在藍(lán)牙的核心規(guī)范當(dāng)中,通常稱其為BD_ADDR(Bluetooth Device Address),BD_ADDR將會在藍(lán)牙設(shè)備諸如連接和配對的過程當(dāng)中起到設(shè)備識別的作用。
對于藍(lán)牙設(shè)備,可以使用公有地址(Public Device Address),也可以使用隨機(jī)地址(Random Device Address),但無論是使用公有地址,還是隨機(jī)地址,它們的地址長度都是48比特,也就是6個(gè)字節(jié)。
二、公有地址(Public Device Address)
公有地址的構(gòu)成包含了兩個(gè)部分,一部分是公司識別碼(Company ID),其需要通過IEEE注冊機(jī)構(gòu)付費(fèi)獲得,公司識別碼長度為24比特,處于48比特設(shè)備地址的高24比特;另外一部分是公司分配碼(Company Assigned ID),其長度也為24比特,處于48比特設(shè)備地址的低24bit,如下圖所示。
- Company ID(MSB):由IEEE公開分配的地址部分
- Company Assigned(LSB):公司內(nèi)部分配的ID
除了公有地址,藍(lán)牙設(shè)備也可以使用隨機(jī)地址進(jìn)行相關(guān)的網(wǎng)絡(luò)操作。
三、隨機(jī)地址(Random Device Address)
藍(lán)牙的隨機(jī)地址有包含兩種:靜態(tài)地址(Static Device Address)和私有地址(PrivateDevice Address)。
3.1、靜態(tài)地址(Static Device Address)
靜態(tài)地址(Static Device Address)不能再運(yùn)行期間改變,它的格式如下(本文的地址格式圖均為小端,故下圖中Random為LSB):
其中46位的隨機(jī)地址由開發(fā)者或者制造商來分配。
注意:所有的藍(lán)牙設(shè)備必須使用Public Address或者Random Static Address其中一種,而接下來要介紹的Private Address僅用于解決隱私問題。
3.2、 私有地址 ( PrivateDevice Address ) ****
在私有地址的定義當(dāng)中,又包含了兩個(gè)子類:不可解析私有地址(Non-resolvable Private Address)和可解析私有地址(Resolvable Private Address, RPA)。所謂不可解析的私有地址,就是藍(lán)牙設(shè)備地址在周期性的變化,并且這個(gè)地址無法被其他設(shè)備所解析,我們可以認(rèn)為它就是一個(gè)隨機(jī)數(shù)。
A、可解析私有地址(Resolvable Private Address)
可解析的隨機(jī)私有地址的目的是防止惡意第三方跟蹤藍(lán)牙設(shè)備,同時(shí)允許一個(gè)或多個(gè)受信任方識別目標(biāo)藍(lán)牙設(shè)備。它的原理是與信任的設(shè)備共享一個(gè)密鑰,這個(gè)密鑰稱為IRK(Identity Resolving Key),可解析的私有隨機(jī)地址就是采用IRK和一個(gè)隨機(jī)數(shù)生成的。
在這種情況下,一個(gè)可信任的設(shè)備稱為bonded device(綁定設(shè)備),綁定是兩個(gè)藍(lán)牙連接后的一個(gè)可選功能。比如手機(jī)連接過一個(gè)藍(lán)牙手環(huán),那么斷開藍(lán)牙連接后,該設(shè)備還會出現(xiàn)在手機(jī)的藍(lán)牙列表中,這就是綁定,這樣在下次連接的時(shí)候就能非??斓嘏鋵?。這種類型的地址定期變化,根據(jù)藍(lán)牙規(guī)范的建議是每15分鐘更換一次。它的格式如下:
- random part of prand:隨機(jī)產(chǎn)生的
- hash:hash值是使用prand和IRK生成的
- 通過隨機(jī)生成的prand和IRK計(jì)算出hash之后,組合成了可解析的私有地址。
可解析的私有地址意味著藍(lán)牙設(shè)備地址BD_ADDR在周期性的不斷變化,可以保護(hù)用戶的隱私不被跟蹤;同時(shí)由于其是可解析的,因此配對設(shè)備(Pair Device)可以通過這個(gè)私有地址解析出藍(lán)牙設(shè)備的真實(shí)身份。因此,我們要了解可解析的私有地址是如何產(chǎn)生的?
假設(shè)有兩個(gè)藍(lán)牙設(shè)備,分別是設(shè)備A和設(shè)備B,在兩個(gè)藍(lán)牙設(shè)備A、B建立連接之后,這兩個(gè)藍(lán)牙設(shè)備可以通過配對的方式交換各自的身份解析密鑰IRK(Identity Resolving Key, IRK),設(shè)備A的身份解析密鑰IRK-A,設(shè)備B的身份解析密鑰IRK-B。假設(shè)設(shè)備B采用了可解析的私有地址機(jī)制,那么設(shè)備B就需要周期性的產(chǎn)生可解析的私有地址。下圖是可解析隨機(jī)地址的結(jié)構(gòu),其中可解析隨機(jī)地址的高兩個(gè)比特分別為0和1,作為可解析地址的標(biāo)識符。
當(dāng)設(shè)備B需要生成隨機(jī)地址的時(shí)候,其內(nèi)部會首先生成一個(gè)隨機(jī)數(shù)prand,基于prand隨機(jī)數(shù),設(shè)備B需要利用哈希hash算法生成可解析隨機(jī)地址的另外一部分,hash。prand隨機(jī)數(shù)和哈希hash分別占用24比特,計(jì)算公式為:
哈希hash = ah(IRK-B, prand隨機(jī)數(shù))
其中函數(shù)ah在藍(lán)牙4.2核心規(guī)范第3卷H部分2.2.2章節(jié)有詳細(xì)介紹,此處不再贅述。當(dāng)設(shè)備B具有了prand隨機(jī)數(shù)和基于prand隨機(jī)數(shù)生成的哈希hash之后,通過移位相與的方式,就可以生成可解析隨機(jī)地址RPA。
RPA= hash || prand
那么設(shè)備A該如何解析RPA呢?當(dāng)設(shè)備A收到一個(gè)藍(lán)牙設(shè)備地址BD_ADDR,并且這個(gè)地址的地址標(biāo)識符表明其是一個(gè)可解析隨機(jī)地址,設(shè)備A首先將這個(gè)地址拆分為prand隨機(jī)數(shù)和哈希hash。接下來其利用之前與設(shè)備B配對時(shí)獲取的IRK-B,通過函數(shù)ah來生成一個(gè)本地哈希localHash。
localHash = ah(IRK-B, prand)
如果生成的本地哈希localHash與拆分得到的哈希hash相等,說明這個(gè)地址是設(shè)備B所產(chǎn)生的可解析隨機(jī)地址;如果不等,代表解析失敗。設(shè)備A可以利用其獲取的其他設(shè)備的IRK對這個(gè)地址就行解析。下圖是一個(gè)地址解析的流程圖。
地址解析流程
因此,對于可解析隨機(jī)地址的解析,我們可以認(rèn)為它是一個(gè)窮舉的過程。任何設(shè)備在收到一個(gè)可解析隨機(jī)地址的時(shí)候,都會利用其本地所存儲的所有IRK對這個(gè)可解析隨機(jī)地址進(jìn)行哈希比對,如果相符,解析過程終止,這個(gè)地址的真實(shí)身份可解析;如果所有的IRK都無法對這個(gè)地址進(jìn)行解析,那么解析失敗。
通過上述的方法,藍(lán)牙設(shè)備可以通過采用可解析隨機(jī)地址的方式來對設(shè)備隱私進(jìn)行保護(hù),進(jìn)而對設(shè)備使用者的隱私進(jìn)行保護(hù)。采用了可解析隨機(jī)地址之后,藍(lán)牙設(shè)備的地址是周期性不斷變化的,所以即使通過其他方式獲取了藍(lán)牙設(shè)備的地址,也無法通過設(shè)備地址出現(xiàn)的時(shí)間和地址來對設(shè)備進(jìn)行跟蹤。只有那些經(jīng)過配對過程完成了身份解析密鑰IRK交互的可信設(shè)備,才能對可解析隨機(jī)地址進(jìn)行解析。
B、不可解析私有地址(Non-resolvable Private Address)
不可解析的私有地址可以保護(hù)用戶的隱私,因?yàn)椴粩嘧兓脑O(shè)備地址使得任何設(shè)備都無法通過記錄藍(lán)牙設(shè)備地址的方式來對用戶進(jìn)行跟蹤,但這樣的保護(hù)方式也意味著可信任的設(shè)備也無法這個(gè)藍(lán)牙設(shè)備的真實(shí)身份,因此我們著重介紹可解析的私有地址。如下圖所示,智能手機(jī)的設(shè)備地址在不斷的變化,因此即便是設(shè)備地址被獲取,也無法解析出設(shè)備的真實(shí)身份,除非具有某種解析密鑰。
這種地址的唯一目的是防止被其他BLE設(shè)備監(jiān)聽。它的地址也會周期性地改變,與可解析地址的不同是,它不能被任何其他設(shè)備解析。這種地址不是很常用,但是有時(shí)會在Bluetooth beacon中使用。它的格式如下:
四、BLE設(shè)備的隱私
如果不采取適當(dāng)?shù)拇胧?,藍(lán)牙的地址可用于跟蹤用戶的數(shù)據(jù)。藍(lán)牙設(shè)備的隱私是通過使用resolvable private address(可解析的私有地址)來實(shí)現(xiàn)的。在之前的配對過程中對端設(shè)備可能已經(jīng)收到了IRK,以后再建立連接,對端設(shè)備在收到了對方廣播報(bào)文中的resolvable random address后,將其的prand字段提取出來與本地的IRK計(jì)算得到一個(gè)hash值,與地址中的hash字段做對比,若相同,才進(jìn)行后續(xù)操作。
- IRK用于生成和解析resolvable private address
- IRK可由每個(gè)設(shè)備本地生成、隨機(jī)生成或在生產(chǎn)過程中分配
- 在bond過程中,每個(gè)設(shè)備將其對端設(shè)備的IRK存儲在它自己的resolving list(解析列表)中
-
連接器
+關(guān)注
關(guān)注
98文章
14699瀏覽量
137354 -
無線通信
+關(guān)注
關(guān)注
58文章
4609瀏覽量
143964 -
藍(lán)牙技術(shù)
+關(guān)注
關(guān)注
45文章
346瀏覽量
53031 -
無線路由器
+關(guān)注
關(guān)注
9文章
348瀏覽量
31693 -
Hash算法
+關(guān)注
關(guān)注
0文章
43瀏覽量
7425
發(fā)布評論請先 登錄
相關(guān)推薦
藍(lán)牙4.2公布:支持智能設(shè)備聯(lián)網(wǎng) 更快更安全
如何使用藍(lán)牙4.2保護(hù)隱私
關(guān)于如何利用藍(lán)牙保護(hù)隱私呢
藍(lán)牙設(shè)備的幾種模式
私有地址是如何產(chǎn)生的?如何使用藍(lán)牙4.2保護(hù)隱私?
大數(shù)據(jù)及其隱私保護(hù)
![大數(shù)據(jù)及其<b class='flag-5'>隱私</b><b class='flag-5'>保護(hù)</b>](https://file.elecfans.com/web1/M00/4E/54/o4YBAFq7TU6ALQQ3AAAm7waRdxc872.jpg)
使用BLE 4.2的系統(tǒng)設(shè)計(jì)使設(shè)備更加保護(hù)隱私和節(jié)能
![使用BLE 4.2的系統(tǒng)設(shè)計(jì)使<b class='flag-5'>設(shè)備</b>更加<b class='flag-5'>保護(hù)</b><b class='flag-5'>隱私</b>和節(jié)能](https://file.elecfans.com/web1/M00/64/F7/pIYBAFujfH6AIzULAAAQVn0gneg850.jpg)
如何實(shí)現(xiàn)藍(lán)牙4.0的設(shè)備通信方案進(jìn)行設(shè)計(jì)
![如何實(shí)現(xiàn)<b class='flag-5'>藍(lán)牙</b>4.0的<b class='flag-5'>設(shè)備</b>通信方案<b class='flag-5'>進(jìn)行</b>設(shè)計(jì)](https://file.elecfans.com/web1/M00/6A/9A/o4YBAFvanVyANUtOAACVi4fn46w259.png)
可穿戴藍(lán)牙設(shè)備存在泄露隱私的風(fēng)險(xiǎn)?
為什么需要藍(lán)牙醫(yī)療設(shè)備
華為開發(fā)者大會:HarmonyOS Connect生態(tài)設(shè)備安全與隱私保護(hù)
![華為開發(fā)者大會:HarmonyOS Connect生態(tài)<b class='flag-5'>設(shè)備</b>安全與<b class='flag-5'>隱私</b><b class='flag-5'>保護(hù)</b>](https://file.elecfans.com/web2/M00/19/09/pYYBAGFye9iAFK3nAABbHkj8Vno629.jpg)
評論