淺談反瀏覽器指紋追蹤
瀏覽器指紋追蹤是在過去五年中出現(xiàn)的一種在網(wǎng)絡上追蹤用戶的方法,為了反制瀏覽器指紋追蹤行為,反瀏覽器追蹤技術也在不斷發(fā)展。
一、反瀏覽器指紋追蹤技術概述
瀏覽器指紋識別的原理是根據(jù)不同瀏覽平臺所使用的硬件類型、操作系統(tǒng)、瀏覽器類型、瀏覽器配置的不同,能夠構建出獨特的瀏覽器指紋。這個指紋有三個特性可以用來追蹤用戶:一、指紋的確定性,具有極低的碰撞率,至少能夠從數(shù)千臺設備中標識某一設備;二、指紋的易獲取性,在用戶在瀏覽網(wǎng)頁時,Web服務器可以很容易獲取指紋。隨著瀏覽器中引入更新更強大的API,指紋追蹤將變得更容易;三、指紋的穩(wěn)定性,用戶***次瀏覽網(wǎng)頁與第N次瀏覽網(wǎng)頁產生的指紋是一樣的。
本文簡要介紹反瀏覽器指紋追蹤技術。反瀏覽器指紋追蹤只要打破上述指紋追蹤的三個特性即可:
- 指紋的確定性。要使兩個瀏覽平臺產生完全一樣的指紋,目前暫未發(fā)現(xiàn)有效方法;
- 指紋的易獲性??梢允褂脼g覽器的各種設置或插件來減緩追蹤 [1],但這種方法可能會影響用戶體驗,例如無法使用Cookie和JavaScript;
- 指紋的穩(wěn)定性。來自法國 INRIA Rennes大學的研究人員皮埃爾·拉普里克斯博士提出了一個解決思路[2],可以組建一個動態(tài)的瀏覽平臺,使用戶每次瀏覽網(wǎng)頁都產生不一樣的指紋。
并且皮埃爾通過兩種方法來打破了指紋的穩(wěn)定性:
a) 利用虛擬化和模塊化架構自動組合和重新配置多個級別的軟件組件,隨機生成瀏覽環(huán)境,為每個瀏覽會話產生隨機的指紋,從而來模糊實際設備的指紋。作者開發(fā)了一個叫做Blink的原型系統(tǒng)[3];
b) 第二種是通過在指紋識別過程中引入足夠的噪音,打破非常特定的指紋技術(Canvas,Audio,JavaScript引擎)的穩(wěn)定性,使追蹤者不能將新鮮的指紋與舊的指紋綁定在一起,從而使得跨越多個會話的跟蹤變得不可能。作者基于Firefox開發(fā)了FPRandom[4]。
本文下面來重點介紹下Blink。
二、Blink工作原理
每兩個瀏覽平臺之間或多或少都存在一些差異,追蹤者可以根據(jù)這個差異來定位追蹤用戶,所以瀏覽平臺的多樣性是瀏覽器指紋追蹤問題的根源,但同時這也是解決瀏覽器指紋追蹤問題的方案。平臺間眾多的差異部分為動態(tài)的瀏覽平臺提供了的基礎。
Blink利用虛擬化和模塊化架構自動組合和重新配置瀏覽平臺的組件,使得每次運行產生不同的指紋,追蹤者不能輕易地找到彼此的聯(lián)系[5]。圖1顯示了影響瀏覽平臺指紋的元素:配置參數(shù),例如語言,屏幕分辨率;軟件組件,例如,瀏覽器,操作系統(tǒng);硬件組件,如顯卡,麥克風;跨級動態(tài)屬性只能在運行時收集,例如canvas,,AudioContext。
一旦用戶開始瀏覽網(wǎng)頁,這些數(shù)據(jù)就用于創(chuàng)建指紋。這就是一般所認為的瀏覽器指紋。研究人員發(fā)現(xiàn)對指紋影響最顯著的因素是字體、插件和用戶代理。因此,選擇專注于重新配置以下因素就可以達到改變指紋的目的:字體,插件,瀏覽器和操作系統(tǒng)。
Blink通過在運行時自動重新配置瀏覽平臺的各個組件,來達到動態(tài)目標防御的能力。動態(tài)目標防御需要瀏覽平臺使用模塊化架構,以達到自動隨機組裝配置各個組件,而不是事先構建好它們。Blink屬于一種動態(tài)平臺,特點為:
- 組裝的平臺總是表現(xiàn)出與真實瀏覽器一致的指紋,不是偽造的,因為平臺是真實的;
- 自動選擇正確的配置,即由兼容組件組成并正確運行的平臺;
- 每次重新配置都會導致指紋的改變。
三、Blink實現(xiàn)
Blink在不同的層次組裝多個組件,形成如圖2所示的瀏覽平臺。
Blink使用Docker作為背后的基礎技術,因為Docker能夠在運行時快速組裝組件,同時將主機系統(tǒng)與平臺隔離開來。Blink組裝的組件有:
- 操作系統(tǒng):由于DockerHub的官方映像,許多操作系統(tǒng)都可以開箱即用。
- 瀏覽器:直接從網(wǎng)絡下載或從官方軟件包存儲庫中下載,眾多的瀏覽器用于產生多種指紋。
- 字體和插件:皮埃爾創(chuàng)建了一個多樣性的字體和插件庫,Blink可以在創(chuàng)建瀏覽平臺時選擇其字體和插件。當前版本的Blink,包含超過2700種字體和超過30個插件。
只需要幾秒鐘,Blink就能產生一個全新的指紋,用戶可以像本地瀏覽器一樣使用它。為了避免產生明顯另類于普通Web客戶端的指紋,皮埃爾從https://amiunique.org收集指紋數(shù)據(jù),優(yōu)化Blink的配置文件,使Blink產生的指紋更接近于普通瀏覽器產生的指紋。結果顯示Blink產生的指紋足以以假亂真。皮埃爾運行了Blink上千次,結果它們的指紋都各不相同,而且商業(yè)指紋解決方案無法知道這些指紋實際上來于自單個用戶[6]。
四、總結
Blink通過生成隨機瀏覽環(huán)境,每次會話都產生不一樣的指紋,打破了指紋的穩(wěn)定性,來減緩指紋追蹤。Blink還實現(xiàn)了其他的反追蹤方法,如:
- 為了防止cookie追蹤,當用戶完成瀏覽時,所有生成的臨時數(shù)據(jù)都被刪除。
- 為了防止IP追蹤,Blink與Tor網(wǎng)絡完全兼容。通過點擊一個簡單的按鈕,所有具有Blink的Internet流量可以通過Tor網(wǎng)絡重定向。
這些新方法允許用戶在使用Blink時能有效的躲避追蹤。