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

















 
 
 



 
 
 
 