自從網絡開始以來,瀏覽器在顯示相同網頁時的行爲方式並不徹底相同:某些元素可能顯示不正確,它們可能位於錯誤的位置或整個頁面可能被錯誤的HTML破壞標籤。爲解決此問題,瀏覽器開始包含 user-agent header。這會通知正在使用的瀏覽器上的服務器,以便它能夠向設備發送針對其優化的頁面。在90年代,這開始了一個臭名昭著的時代,即「 Best on IE」或「 Optimized for Netscape」。
在2019年,user-agent header 仍在使用,但此後發生了不少變化。Web做爲平臺在功能方面要豐富得多。咱們能夠聽音樂,看視頻,進行實時通訊或沉浸在虛擬現實中。咱們還可使用平板電腦,智能手機或筆記本電腦等多種設備進行鏈接。爲了提供針對每種設備和用途進行了優化的體驗,現在仍然須要與服務器共享配置信息。「這是個人時區,這樣我就能夠知道NBA總決賽的確切開始時間。這是個人平臺,以便網站能夠爲我提供感興趣的軟件的正確版本。這是圖形卡的型號,以便我在瀏覽器中玩的遊戲能夠爲我選擇圖形設置。」
全部這些使Web成爲一個真正美麗的平臺,由於它使咱們可以溫馨地瀏覽它。可是,這也一樣能夠免費收集全部可用來優化用戶體驗的信息,以構建瀏覽器指紋。
html
「content-language」標題表示用戶但願接收帶有「 US」變體的英語頁面。時區的「 -120」表示格林尼治標準時間+2。最後,WebGL渲染器提供有關設備CPU的信息。在這裏,筆記本電腦正在使用具備Kaby Lake Refresh微體系結構的Intel CPU。git
此示例是指紋中能夠收集的內容的一瞥,隨着引入新的API和修改其餘API,確切的列表會隨着時間的推移而發展。若是您想查看本身的瀏覽器指紋,我邀請您訪問AmIUnique.org。這是我在2014年啓動的網站,用於研究瀏覽器指紋識別。利用咱們從超過100萬名訪問者那裏收集的數據,咱們對其內部工做有了寶貴的看法,而且推進了該領域的研究。github
這很簡單。首先,不須要徵集全部這些信息的權限。在瀏覽器中運行的任何腳本均可以在您不知道的狀況下靜默構建設備的指紋。其次,若是瀏覽器指紋的一個屬性是惟一的,或者多個屬性的組合是惟一的,則能夠在線識別和跟蹤您的設備。在那種狀況下,不須要其中有ID的cookie,有指紋就足夠了。但願正如咱們將在下一部分中看到的那樣,在防止用戶具備其惟一指紋並所以避免跟蹤方面已經取得了很大進展。web
Tor瀏覽器是最先在2007年就解決指紋識別所帶來的問題的瀏覽器,甚至在「瀏覽器指紋識別」一詞問世以前。在2007年3月,Tor按鈕的更改日誌代表包含Java語言掛鉤以屏蔽Date Object的時區。
最後,Tor開發人員選擇的方法很簡單:全部Tor用戶都應具備徹底相同的指紋。不管使用哪一種設備或操做系統,您的瀏覽器指紋都應與任何運行Tor瀏覽器的設備相同(更多詳細信息能夠在Tor設計文檔中找到)。
瀏覽器
在圖2中,您能夠找到運行Tor瀏覽器8.5.3版的Linux計算機的指紋。
與Firefox相比,咱們能夠看到明顯的不一樣。首先,沒有運行OS Tor瀏覽器的資料,您將始終具備如下用戶代理:Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0
安全
因爲Windows是地球上使用最普遍的操做系統,所以TBB聲稱它在Windows機器上運行,從而掩蓋了底層操做系統。Firefox 60是指TBB所基於的ESR版本。
其餘可見的更改包括平臺,時區和屏幕分辨率。服務器
另外,您可能想知道爲何在最大化瀏覽器窗口時會出現如下消息(請參見圖3):「最大化Tor瀏覽器可使網站肯定您的監視器大小,該大小能夠用來跟蹤您。咱們建議您將Tor瀏覽器窗口保留其原始默認大小。」cookie
這是因爲指紋。因爲用戶的屏幕尺寸不一樣,所以確保沒有差別的一種方法是讓每一個人都使用相同的窗口尺寸。若是您最大化瀏覽器窗口,則最終可能會是在此特定分辨率下使用Tor瀏覽器的惟一窗口,所以在線識別風險更高。
網絡
在瀏覽器引擎下,已進行了許多修改以減小用戶之間的差別。
已引入默認的後備字體以減輕字體和畫布的指紋。
默認狀況下,WebGL和Canvas API被阻止,以防止祕密收集渲染。
諸如performance.now之類的功能也已進行了修改,以防止瀏覽器中的計時操做可用於微體系結構攻擊。
若是要在後臺查看Tor團隊所作的全部工做,能夠查看Bug跟蹤器中的指紋標記。
爲了實現這一目標,正在進行許多工做。爲了減小指紋,我還開發了一個名爲FP Central的指紋網站。 幫助Tor開發人員找到不一樣Tor版本之間的指紋迴歸。
最後,做爲Tor Torlift計劃的一部分,TBB中出現的愈來愈多的修改已進入Firefox。 app
在過去的幾年中,有關瀏覽器指紋識別的研究已大大增長,並涵蓋了該領域的許多方面。在這裏,咱們將快速概述學術界所作的研究以及指紋在行業中的使用方式。
1.帶有指紋的跟蹤是現實,但它不能替代基於標識符的不一樣跟蹤方案。多年來,已發表了不一樣的研究試圖評估網絡上鍊接的現代設備的多樣性[1,2]。我在2018年參加的一項研究[3]令咱們感到驚訝,由於它代表,若是惟一性百分比較低,那麼大規模跟蹤多是不可行的。不管如何,從這些研究中得出的一個明顯結論是:儘管一些瀏覽器供應商正在盡最大努力減小設備之間的差別,但這並非一個完美的過程。若是您的瀏覽器指紋(或組合密碼)中有一個沒有人擁有的值,那麼您仍然能夠被跟蹤,這就是爲何要謹慎對待指紋的緣由。
2.隨着網絡的日益豐富,新的API進入了瀏覽器,而且發現了新的指紋識別技術。最新的技術包括WebGL [4,5],Web Audio [6]和擴展指紋[7,8]。爲了爲用戶提供保護,密切注意該領域的任何新進展以解決可能出現的任何問題很是重要。
從過去學到的教訓涉及BatteryStatus API。添加它是爲了向開發人員提供有關電池狀態的信息,以便他們能夠開發節能應用程序。最先於2011年起草,直到2015年,研究人員才發現該API可被誤用於建立短時間標識符[9,10]。最後,這提醒咱們,在瀏覽器中引入新API時必須很是謹慎。在將其部署到最終用戶以前,必須進行深刻分析以消除或減輕隱藏的指紋向量。爲了給Web規範做者提供指導,W3C編寫了一份文檔,說明如何在考慮指紋風險的同時最好地設計API。
3.現在,尚未解決瀏覽器指紋問題的最終解決方案。因爲它的起源植根於互聯網的開始,所以沒有一個補丁能夠永久修復它。所以,設計防護措施很是困難。多年來,已經嘗試並評估了許多方法,每種方法各有優缺點。示例包括阻止屬性,引入噪聲,修改值或增長指紋多樣性。可是,一項重要的發現是,有時沒有特定的防護要比擁有特定的防護要好。因爲解決方案的設計或編碼方式,某些解決方案刪除了一些指紋矢量,但在收集的指紋中引入了一些僞影或不一致性。
例如,假設一個瀏覽器擴展在發送指紋以前更改了指紋的值。除了開發人員忘記覆蓋navigator.platform值的事實外,其餘全部功能均可以正常運行。所以,用戶代理可能會說瀏覽器正在Windows上運行,而平臺仍指示它在Linux系統上。這將建立一個實際上不該該存在的指紋,從而使用戶在網上更加可見。這就是Eckersley [1]所說的「可指紋的隱私加強技術的悖論」。經過增長在線隱私,您安裝了擴展程序,這些擴展程序最終使您比之前更加可見。
1.要識別使用瀏覽器指紋識別的網站,能夠簡單地轉向隱私策略。在大多數狀況下,您永遠不會在其中看到「指紋」一詞,而是像「咱們收集特定於設備的信息以改善咱們的服務」這樣的句子。所收集的屬性的確切列表一般不許確,其確切用法從分析到安全到市場營銷或廣告,信息多是很是不透明的。
使用指紋識別網站的另外一種方法是直接查看在瀏覽器中運行的腳本。這裏的問題是,要區分一個良性腳本和一個指紋識別腳本,可能會帶來挑戰,以改善用戶體驗。例如,若是某個站點訪問您的屏幕分辨率,它是要調整HTML元素在屏幕上的大小,仍是構建設備指紋的第一步?二者之間的界線可能很細,而且準確識別指紋腳本仍然是還沒有適當研究的主題。
2.較不爲人知的指紋識別用途之一是用於機器人檢測。爲了保護他們的網站,一些公司依靠在線服務來評估與外部鏈接相關的風險。過去,大多數阻止或接受鏈接的決定徹底是基於IP信譽。如今,瀏覽器指紋用於進一步檢測篡改或識別自動化跡象。爲此目的使用指紋識別的公司示例包括ThreatMetrix,Distil Networks,MaxMind,PerimeterX和DataDome。
3.在防護方面,愈來愈多的瀏覽器供應商正在直接在其瀏覽器中添加指紋保護。如本博客文章中先前所述,Tor和Firefox經過限制被動指紋和阻止主動指紋矢量而處於這些工做的最前沿。 自最初發布以來,Brave瀏覽器還包含針對它的內置保護。
蘋果在2018年對Safari進行了更改以限制它,谷歌在2019年5月宣佈了它打算對Chrome進行一樣的操做。
瀏覽器指紋在過去幾年中增加了不少。因爲該技術與瀏覽器技術緊密相關,所以難以預測其發展,但其使用目前正在發生變化。咱們曾經認爲能夠代替cookie做爲最終跟蹤技術的事情根本不是真的。最新研究代表,儘管它能夠用於識別某些設備,但它沒法跟蹤天天瀏覽網絡的用戶數量。相反,如今使用指紋來提升安全性。愈來愈多的公司發現它的價值超越了傳統的IP分析。他們分析指紋的內容以識別機器人或攻擊者,並阻止對在線系統和賬戶的有害訪問。
指紋識別方面尚待解決的一大挑戰是其使用規範。對於cookie,很容易檢查cookie是否由特定網站設置。任何人均可以進入瀏覽器首選項並檢查cookie存儲。對於指紋識別,則是另外一回事。沒有直接的方法能夠檢測指紋嘗試,而且瀏覽器中沒有機制能夠徹底阻止其使用。從法律的角度來看,這是很成問題的,由於監管機構將須要尋找與公司合做的新方法,以確保尊重用戶的隱私。
最後,要完成這篇文章,指紋仍然存在嗎?至少在不久的未來,是的。該技術植根於網絡開始以來存在的機制,所以擺脫它很是複雜。儘量消除用戶之間的差別是一回事。徹底刪除特定於設備的信息是徹底不一樣的。只有時間才能證實指紋在將來幾年中將如何變化,可是隨着Web開發的瘋狂步伐必將帶來不少驚喜,所以它的發展值得密切關注。
很是感謝您一路閱讀這篇文章!若是您想進一步研究該主題,我邀請您閱讀有關咱們最近在線提供的主題的調查 [11]。若是有任何機會在Tor瀏覽器中找到任何新的指紋識別矢量,強烈建議您在Tor錯誤跟蹤器上打開一個票證,以幫助Tor開發團隊作出出色的努力,更好地保護用戶的在線匿名性!
[1] P. Eckersley。「您的網絡瀏覽器有多獨特?」。在國際隱私加強技術專題討論會(PETS'10)中。[[PDF]](panopticlick.eff.org/static/brow…)
[2] P. Laperdrix,W。Rudametkin和B. Baudry。「美女與野獸:轉移現代Web瀏覽器以構建獨特的瀏覽器指紋」。在IEEE安全與隱私專題討論會(S&P'16)中。
[[PDF]](hal.inria.fr/hal-0128547…)
[3] A.Gómez-Boix,P。Laperdrix和B. Baudry。「躲在人羣中:大規模瀏覽器指紋識別的有效性分析」。在The Web Conference 2018(WWW'18)中。[ PDF ]
[4] K. Mowery和H. Shacham。「像素完美:HTML5中的指紋畫布」。在Web 2.0安全性和隱私(W2SP'12)中。[ PDF ]
[5]曹Y,李S.和E. Wijmans。「(經過操做系統和硬件級別功能的(跨)瀏覽器指紋識別」。在網絡和分佈式系統安全研討會(NDSS'17)中。[ PDF ]
[6] S. Englehardt和A. Narayanan。「在線跟蹤:一百萬個站點的測量和分析」。在ACM SIGSAC計算機和通訊安全會議(CCS'16)中。[ PDF ]
[7] A.Sjösten,S。Van Acker和A. Sabelfeld。「經過Web可訪問
資源發現瀏覽器擴展」。在ACM關於數據與應用程序安全性和隱私的會議(CODASPY'17)上。[ PDF ]
[8] O. Starov和N. Nikiforakis。「 XHOUND:量化瀏覽器擴展的指紋識別能力」。在IEEE安全與隱私專題討論會(S&P'17)中。[ PDF ]
[9] Ł。Olejnik,G.Acar,C.Castelluccia和C.Diaz。「漏電的電池」。在國際數據隱私管理研討會(DPM'15)中。[ PDF ]
[10] Ł。Olejnik,S。Englehardt和A. Narayanan。「不包括電池狀態:評估
Web標準中的隱私」。在國際隱私工程研討會(IWPE'17)中。[ PDF ]
[11] P. Laperdrix,N。Bielova,B。Baudry和G. Avoine。「瀏覽器指紋識別:調查」。[ PDF-預印本 ]