◆童瀛 姚煥章 梁劍 王璽罡 周宇
安全模型、算法與編程
基于跨瀏覽器指紋識別技術(shù)的應(yīng)用研究
◆童瀛 姚煥章 梁劍 王璽罡 周宇通訊作者
(江蘇省公安廳 江蘇 210000)
跨瀏覽器用戶行為追蹤技術(shù)在互聯(lián)網(wǎng)的很多領(lǐng)域都有廣泛的應(yīng)用,然而當前的技術(shù)存在準確度不高的問題。為了提高其準確度,本文對原有的技術(shù)進行了優(yōu)化,構(gòu)建了新型的跨瀏覽器行為追蹤模型。在此模型中,我們提出將網(wǎng)絡(luò)虛擬身份信息加入瀏覽器指紋特征信息中,提高了跨瀏覽器下用戶身份識別的準確度。此外,我們采用嵌套JS的方式進行指紋信息采集腳本的傳輸,利用MurmurHash3算法進行瀏覽器指紋生成,采用混淆加密技術(shù)和優(yōu)化后的Base64編碼機制對回傳數(shù)據(jù)進行處理,進而構(gòu)造了一個高靈活性、可靠性、效率、隱蔽性和拓展性的跨瀏覽器行為追蹤模型。
瀏覽器指紋;網(wǎng)絡(luò)虛擬身份;行為追蹤;隱蔽回傳
針對用戶網(wǎng)絡(luò)行為的追蹤技術(shù)由來已久,早在網(wǎng)絡(luò)創(chuàng)建初期,主流的方法是通過IP(網(wǎng)際互聯(lián)協(xié)議,Internet Protocol)地址進行用戶識別。這種方法的明顯弊端是IP地址動態(tài)分配、NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換,Network Address Translation)、代理服務(wù)等技術(shù)的應(yīng)用,使得無法直接利用IP地址標定用戶,僅憑IP地址進行用戶識別的準確度大打折扣,不能滿足實際分析的需求。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,B/S(瀏覽器/服務(wù)器,Browser/Server)架構(gòu)的應(yīng)用成了主流架構(gòu),對用戶行為追蹤研究轉(zhuǎn)向了瀏覽器端,基于瀏覽器的指紋技術(shù)成為用戶識別的主流技術(shù)方法。此方法綜合用戶瀏覽器各種特征信息,包括字體、屏幕分辨率、瀏覽器插件等,進行用戶識別和進行用戶上網(wǎng)行為追蹤。早期的瀏覽器指紋技術(shù)僅限于單個瀏覽器,同一終端上的不同瀏覽器之間無關(guān)聯(lián)。2017年,曹寅志等人提出綜合操作系統(tǒng)和硬件特性進行跨瀏覽器指紋追蹤[2],將同一用戶在不同瀏覽器間的行為進行關(guān)聯(lián),打破了單瀏覽器追蹤限制。然而,硬件設(shè)備信息和操作系統(tǒng)信息雖然能夠在一定程度上對跨瀏覽器上網(wǎng)行為進行識別,但是這種識別技術(shù)是準確度不高,容易產(chǎn)生誤差。
為了提高跨瀏覽器指紋識別技術(shù)的準確度,本文基于原有的跨瀏覽器追蹤技術(shù),構(gòu)建了一種新型的跨瀏覽器行為追蹤模型。首先,我們提出將網(wǎng)絡(luò)虛擬身份信息加入瀏覽器指紋特征信息中,提高了跨瀏覽器下用戶身份識別的準確度;同時,采用嵌套JS的方式進行指紋信息采集腳本的傳輸,提高信息采集過程的靈活性和隱蔽性;此外,采用MurmurHash3算法進行瀏覽器指紋生成,提高指紋生成過程的效率;最后,采用混淆加密技術(shù)和Base64編碼處理回傳數(shù)據(jù),保障數(shù)據(jù)傳輸?shù)男屎桶踩?/p>
1 相關(guān)工作
瀏覽器指紋,是指每個瀏覽器的特有信息。具體來講,其具有同人類指紋類似的身份標識功能,是利用JavaScript(JS)腳本獲取的瀏覽器的一些特征屬性信息,之后通過哈希算法生成用于網(wǎng)絡(luò)用戶身份標識的字符串信息。針對基于瀏覽器指紋的用戶身份識別技術(shù),國內(nèi)外研究人員已經(jīng)做了大量的研究工作。1994年, Lou Montulli提出了Cookie的概念,這使得在無狀態(tài)的HTTP協(xié)議下,可通過在Cookie中插入具有唯一性的指紋字段來對用戶進行身份識別[3]。2010年,EFF的Peter Eckersley提出了瀏覽器指紋的概念,使得用戶身份的追蹤不需要依賴于Cookie[4]。2012年,Keaton Mowery提出了一種新的方案,通過HTML5的Canvas繪圖標簽生成Canvas指紋作為用戶身份識別的依據(jù)[5]。2015年,F(xiàn)ifield等人提出了通過測量字體尺寸判斷瀏覽器支持的字體的方法來對用戶身份進行識別[6]。2015年,LukaszOlejnik等人提出通過當前的電池信息來對用戶身份信息進行追蹤[7]。2015年,在ToorCon安全會議上Yan Zhu提出了使用HTTP嚴格傳輸安全協(xié)議HSTS和內(nèi)容安全協(xié)議CSP對用戶的歷史訪問記錄進行推斷[8]。2015年,Diafygi在GitHub開源了機遇Webrtcaw來獲取用戶內(nèi)網(wǎng)IP地址對方法來進一步對用戶身份進行關(guān)聯(lián)[9]。
基于瀏覽器指紋的用戶身份識別技術(shù)的準確度取決于瀏覽器指紋的標識能力,而瀏覽器指紋的標識能力又取決于其不確定性程度,若不確定性越高,說明其唯一性越高,則標識能力越強。對于這種不確定性程度,我們采用信息論中的熵值進行度量,熵值越大,表明其信息量越大,其不確定性也就越大。因此,增加瀏覽器指紋信息的熵值是提高用戶識別技術(shù)準確率的關(guān)鍵。

根據(jù)如公式(1)所示的離散型隨機變量的熵的計算方法,變量分布越離散熵值越大。對于瀏覽器指紋來說,指紋特征項越多,其熵值越高,所標識的用戶身份信息的唯一性便越高。因此,在原有瀏覽器指紋生成技術(shù)的基礎(chǔ)上增加有效的瀏覽器特征項,能進一步增加瀏覽器指紋的用戶標識能力。在Peter Eckersley的論文中,當其選取了HTTP請求頭中的UA和Accept參數(shù)、屏幕分辨率、瀏覽器插件信息等8項特征生成指紋時,其綜合計算得的熵值大于18.1,這意味著在286777個瀏覽器中才會出現(xiàn)兩個相同的瀏覽器指紋。
2 網(wǎng)絡(luò)虛擬身份
網(wǎng)絡(luò)虛擬身份是指用來表示某個獨立網(wǎng)絡(luò)用戶身份的標識信息。為了進一步提高瀏覽器指紋的標識能力,本文提出將JSONP獲取的信息作為一種網(wǎng)絡(luò)虛擬身份信息加入指紋特征信息中。接下來對相關(guān)概念和如何利用JSONP獲取網(wǎng)絡(luò)虛擬身份信息進行介紹。
首先,JSON是一種輕量級的數(shù)據(jù)傳輸格式,被廣泛應(yīng)用于當前Web應(yīng)用中。JSON格式數(shù)據(jù)的編碼和解析基本在所有主流語言中都被實現(xiàn),因此現(xiàn)在大部分前后端分離的架構(gòu)都以JSON格式進行數(shù)據(jù)的傳輸。而JSONP (JSON with Padding)是 JSON 的一種“使用模式”,用于解決同源策略下數(shù)據(jù)的跨域讀取問題。其中同源策略是Netscape 提出的一個著名的安全策略,此策略通過限制不同源網(wǎng)站之間的數(shù)據(jù)訪問達到保護用戶信息安全的目的。為了保護用戶信息安全同時規(guī)避同源策略,產(chǎn)生了 JSONP技術(shù),它可以讓網(wǎng)頁從其他的域名(網(wǎng)站)獲取資料,即進行同源策略下數(shù)據(jù)的跨域讀取。目前,此技術(shù)廣泛應(yīng)用于基于分布式技術(shù)的Web應(yīng)用中。
3.協(xié)助部隊偵潛。組建海上民兵偵潛分隊,充分發(fā)揮海上民兵“船多勢重”的優(yōu)勢,運用民船聲納、測魚器偵測和目測觀察等方法,實施“集群偵測、拉網(wǎng)排查、區(qū)域巡查”,配合反潛機、反潛艦在任務(wù)海域組織偵潛,發(fā)現(xiàn)目標并跟蹤上報。
在JSONP技術(shù)廣泛應(yīng)用于當前Web應(yīng)用的背景下,我們可以通過分析JSONP數(shù)據(jù)流獲取到一些與用戶身份相關(guān)的信息。具體地說,當未很好地對客戶端的reference信息進行校驗時,JSONP接口經(jīng)常會泄漏一些網(wǎng)站用戶的身份信息,如具有唯一表示信息的用戶ID以及用戶名等隱私信息。我們甚至可以通過分析其中的一些用戶數(shù)據(jù),再結(jié)合公安系統(tǒng)數(shù)據(jù)進一步溯源,挖掘出用戶的真實身份。因此,我們提出將分析JSONP數(shù)據(jù)流獲取到的用戶虛擬身份信息作為一個特征加入瀏覽器指紋的生成中,來提高瀏覽器指紋特征的熵,從而提高跨瀏覽器指紋識別技術(shù)的準確度。
3 模型設(shè)計
本文在原有跨瀏覽器行為追蹤技術(shù)的基礎(chǔ)上,構(gòu)建了新型的行為追蹤模型。如圖1所示,模型分為服務(wù)器端和Web前端兩部分。為了進行用戶指紋信息收集,我們在服務(wù)器端預(yù)先部署具有信息采集功能的JS腳本,同時,在前端HTML頁面中設(shè)計有加載遠程服務(wù)端JS腳本的JS代碼,用以向服務(wù)端獲取信息采集JS腳本。其流程如下:首先,用戶了訪問了相應(yīng)的HTML頁面后,頁面的