iOS 8 設備隨機 MAC 地址躲避 Wi-Fi 熱點的記錄追蹤,技術上是怎麼實現,有何影響?
首先,Apple 是第一個這麼關注用戶隱私這麼做的廠商,他們比大多數用戶還要關心他們自己的隱私。要知道記錄 MAC 地址來記錄和追蹤定位用戶已經是一個龐大的產業。
那麼 Apple 這個巧妙的規避追蹤解決方案技術上具體是怎麼實現的?以廣告為根基同時又喜好收集用戶數據熱愛追蹤的 Google Android 會效仿嗎?這個依賴 MAC 地址而方發展起來的產業,付之一炬了嗎?
相關問題:大數據時代,在街頭安裝收集移動設備 MAC 地址的裝置,會不 ...
&> iOS 8 randomises the MAC address while scanning for WiFi networks. Hoping that this becomes an industry standard.
Source: https://twitter.com/FredericJacobs/status/475601665836744704
直觀上,WiFi需要經歷以下3個階段:
- 掃描階段,發現無線接入點APs(細節:分主動掃描和被動掃描,都能發現周圍AP)
- 關聯階段,和相應的無線接入點建立關聯(細節:手機和相應的AP進行一次握手協議,這時候AP會關聯到這個手機的MAC地址,為下一個階段數據包的傳輸做準備,具體協議方式步驟參考802.11)
- 傳輸階段,手機的數據上傳和下載
技術上怎麼實現:
iOS 8 randomises the MAC address 這個過程其實只在步驟1其作用, 掃描階段採用虛擬的MAC地址, 而關聯階段和傳輸階段都是採用真實的 MAC 地址。
如果是主動掃描,手機廣播一個請求probe request,包含虛擬的MAC地址,然後等待AP回應 probe responses,一般會掃描所有的信道 channel 1 - channel 13(或者channel 1,5,13),每個信道掃描10ms左右的時間,在等20-30ms左右。 當然手機也可以不廣播,發送點對點請求 Directed probe給特定的AP。 我們一般隱藏一個無線路由的SSID的做法,就是讓這個無線路由不響應Broadcast probe,不主動發beacon,只響應 Directed probe。
如果是被動掃描,手機不發送任何信息,周期性地,在不同的信道上監聽AP的beacon包(大約100ms作用,甚至更長)。
兩種掃描,都可能發生在WiFi的掃描階段,哪種佔主導?主動掃描。
因為時間更短,能耗更低。一般的手機在掃描階段,都是採用主動掃描。
無論哪種掃描方式,採用虛擬的MAC地址,都對下一個階段沒有影響。
在主動掃描中,手機發送的probe包裡面的MAC地址是不是手機真實的MAC地址,這個不重要,只要AP知道往哪個地址返回的probe就可以了,所以這個MAC地址只要可以應答即可。用一個虛擬的MAC,很容易做到。
在被動掃描中,手機只是監聽beacon而已,發現一個AP的beacon,就得到一個AP的相關信息。
如何隨機出一個虛擬的MAC地址,方法很多,最簡單的是,一個隨機函數,加上靜態的手機廠商出廠序列號和動態的時間序列作為種子,生產虛擬的MAC地址。
至於這個虛擬的MAC地址,會不會對後續的關聯階段,數據傳輸階段產生影響。
不會!
因為關聯階段會才是讓AP記錄手機MAC地址的階段,這時候記錄的MAC地址,才是將來作為數據傳輸的MAC地址。在掃描階段,AP不需要,也沒有必要去記錄手機的MAC,需要記錄,僅僅是因為一些商業行為,將記錄 MAC 地址來記錄和追蹤定位用戶 作為有利可圖的地方。
具體的實現過程:
在掃描階段,手機隨機化一個虛擬MAC地址來代替自身真實的MAC地址,這時候真實的MAC地址不會接受任何數據包了,手機用這個虛擬MAC地址找到周圍可能存在的熱點。一旦手機停止掃描階段,真實的MAC會代替虛擬的MAC地址,進行下一階段的操作。
下面,簡單說一下我對這個技術上的理解:(可能會有些問題)
生產虛擬的MAC地址,一定會有衝突。
假設A和B的MAC地址衝突了,A 發送了一個請求包,B正常發送接收數據,AP收到A的請求,比如會發生一個應答,AP收到B的數據請求,必然也會發送數據給B。這時候,A和B都會同時受到ACK和數據。A,B 一般做法,都是直接扔掉。
當然,也有在掃描階段,出現A和B都掃描,生產的虛擬MAC地址都一樣,這個,只要隨機函數不要太極端,概率幾乎為零。
隨機化MAC地址,僅僅是在掃描階段,後面的關聯和數據傳輸都是真實的MAC地址。
其實,如果真的需要記錄 MAC 地址來記錄和追蹤定位用戶作為商業用途的話,實話實說,影響挺大的,手機,為了節省3G的流量,充分利用現有的WiFi 接入點,一般選擇會隔一段時間掃描一次,或者每到一個新的區域,就掃描一次。
例如,我在街道路口A上設置一個AP,這時候,路過這個路口A,而且路過的時候,WiFi正好處於掃描階段,那麼我設置的AP就可以監測到這時候路過的手機的MAC地址。這時候如果換成iOS 8所推行的標準的話,我設置的AP就監測不到手機了。
當然,我設置成免費熱點AP,允許別人進行連接,那麼iOS 8也不會阻止這種情況,或者採用WiFi sniffer監聽信道的換,iOS 8 也不會阻止這種情況。
謝謝邀請(因為集中精力的緣故,其它一些邀請我沒有回答,抱歉了)
問題分兩個部分:
技術上如何實現?——參見 @Qiang Meta 的回答,我覺得已經很詳盡應該沒什麼補充了。
有何影響?—— @Qiang Meta 回答中也已經分析了,針對這裡稍微補充一點
如果類似技術普及,將極大地打擊到基於握手環節採集MAC的應用;但不會對基於公共熱點提供免費WiFi接入模式採集相關數據(MAC只是基礎部分)的應用有很大影響。
我們是後一類模式(我們主要提供系統平台解決方案,同時力所能及的多覆蓋,因為將來主要是三大陣營分割市場:BAT;運營商和虛擬運營商;美團、點評、迅雷、小米等)。
所以無論於公於私,我期待並樂見這樣的技術出現並早日普及(因為它能將很多想做第一類模式的簡單粗暴的盈利模式擋在外面)。
各種商業WiFi充斥市場,將有兩種最大的可能性:
- 各種涉及WiFi採集設備MAC泄露隱私的負面新聞遲早會出現甚至爆發——&>進一步導致更多用戶呼籲相關部門干涉——&>類似於計程車行業,相關管理部門干預——&>很容易出現攜私、利益綁定或者輸送,從而影響正常的市場競爭;
- 各種涉及WiFi採集設備MAC泄露隱私的負面新聞遲早會出現甚至爆發——&>進一步導致更多用戶出門關閉手機WiFi——&>基於Sniffer模式的更多應用場景將受影響,甚至影響到意義,例如統計客流量等;
國內市場競爭激烈(過度競爭),而商業道德和法律底線不清晰,很多公司和個人會為了不那麼大的眼前利益而肆無忌憚的侵犯他人基本權利。
那麼,結果一定是整個行業一起面對重大的風險。
題外:
從個人而言,創業前我們已經充分討論了這個市場可能的發展趨勢,所以很早就明確不採用Sniffer模式——參考相關問題:大數據時代,在街頭安裝收集移動設備 MAC 地址的裝置,會不 ... ——中那樣的採集MAC地址的裝置
但是,即便不是Sniffer模式,而是基於提供免費WiFi,拋開政策層面的干預(首都公安曾經強力干預過),同樣還會有很大的隱患,其中風險最大的是:假冒公共熱點釣魚、被大規模入侵
所以,說實話,如果不是我們自己的熱點(因為初期設計時就為此採取了必要手段),現階段出門如果不是迫不得已,我只用3G/4G。直接在二層的數據封幀裡面改就好了,無線網卡的驅動程序很容易實現。
相信即使是IOS,他的無線網卡也是需要驅動的。
但是那裡來那麼多的MAC地址呢?這是個複雜的問題,MAC地址都是需要向IEEE申請的。
這裡可以查詢設備的廠商,當然是無線晶元提供者的廠商。不一定是你設備的牌子。
IEEE-SA - Registration Authority MA-L Public Listing
別IOS8,IOS9已經全面實施隨機mac了,不需要很多前提條件,但是連接wifi後看到的mac地址還是真實的
基於Linux的Android 要實現這個功能是很容易的,通過簡單的腳本調用ifconfig即可.
今天恰好做了這個測試 。
安裝了ios8系統,嘗試了鏈接路由器,發現連接成功後mac地址是完全正確的。
然後找了一個很人較少的區域,避免數據過多影響真實性,在同一個信道嘗試用手機去掃描 然後筆記本抓回來的包
mac地址未變。切換信道或者連接到一個真實wifi結果不變。因為網上太多這條消息卻找不到來源 最終才發現是wwdc裡面有說提到但未看到有人驗證 所以由此推測該beta 版本還未包含此功能
。
覺得至少要先獲取真實的數據在做分析靠譜點
以上。
我手機從不自動連Wi-Fi除非我連過。況且我在外大多用流量。至於mac地址。在pc上很容易實現更改mac。有種東西叫arp攻擊。就是偽造mac地址和ip。利用mac地址追蹤也不是那麼輕鬆的事情。需要辨別真假mac地址。況且我不覺得有人對我的行蹤感興趣。
安卓版本過多過於雜亂,不會效仿
這個在 Android 里都出現很多年了,果然 Android 又在幾年前把 iOS 要搞的東西都山寨走了。
言歸正題,不用什麼原理, MAC 地址本來就是系統提供的,想用啥就用啥。七年前在校期間,IP 地址需要綁定 MAC才能上網,我用的是 0A:0B:0C:0D:0E:0F
推薦閱讀:
※如何評價 Swift 語言?
※為什麼 Windows 上的第三方軟體對高清屏支持這麼差?
TAG:Wi-Fi | 隱私 | 介質訪問控制層(MAC) | iOS 8 |