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