馮映燕,陳明志,許春耀,康年華,林偉寧
(1.福州大學 a.數(shù)學與計算機科學學院;b.網(wǎng)絡系統(tǒng)信息安全福建省高校重點實驗室,福州 350108;2.武警福州指揮學院 研究部,福州 350002)
瀏覽器指紋主要用于用戶追蹤、身份認證、用戶識別等領域[1-3]。瀏覽器指紋是一種基于瀏覽器信息組合的識別方法,通過瀏覽器平臺從配置信息、軟件組成以及硬件組成等層次獲取到設備的屏幕信息、插件信息、字體信息等特征參數(shù)[4-5]。最后通過哈希函數(shù)組合形成可以唯一識別用戶的指紋數(shù)據(jù)[6-8]。
目前就瀏覽器指紋技術(shù)取得了以下研究成果:文獻[9]提出了一種與Cookies功能相似的用戶識別方法,稱之為瀏覽器指紋,并通過實驗驗證了瀏覽器指紋具有較高的識別率。文獻[6,10]對三大商業(yè)指紋算法中的特征參數(shù)獲取方式進行了對比分析,發(fā)現(xiàn)限制Flash與JavaScript的功能能夠有效地抑制指紋生成,進而提出了干擾瀏覽器指紋生成的方法。文獻[11-12]提出了一種結(jié)合HTML5的API與Javascript優(yōu)勢的指紋識別方法,實現(xiàn)了基于HTML5的指紋識別,其中最典型的HTML5指紋方式為帆布指紋。文獻[13-14]提出了JavaScript引擎指紋這一技術(shù),由于不同瀏覽器的JavaScript引擎具有細微的區(qū)別,因此可利用微小的差異制作指紋。文獻[15]將現(xiàn)有瀏覽器指紋分為瀏覽器定制指紋、帆布指紋、JavaScript引擎指紋以及跨瀏覽器指紋4大類,同時對4類指紋的工作原理及優(yōu)缺點進行分析,提出了干擾指紋生成的方法。文獻[9,16]為解決無法完全識別回訪用戶的問題,提出了一種基于瀏覽器指紋相似度的用戶識別方法,通過逐位比較指紋間字符串的相似度,在一定的相似范圍內(nèi),則認為指紋為回訪用戶的更新指紋。
當前文獻主要研究不同類型的瀏覽器指紋的工作原理及干擾指紋生成的方法,較少有文獻關注特征參數(shù)變化后導致指紋靜態(tài)匹配方式無法完全識別回訪用戶的問題。因此,本文提出一種新的基于瀏覽器指紋差異度的回訪用戶識別算法,該算法首先定義8個指紋特征參數(shù)的局部差異度計算方法,加權(quán)求和得到衡量兩個指紋之間差異度的公式,接著將指紋間差異度值與事先設定的差異度閾值作對比,進而判斷用戶是否是回訪用戶。最后通過實驗評估該算法的執(zhí)行效果。
瀏覽器指紋是由具有微小差異的特征參數(shù)通過哈希函數(shù)組合而成。
組成指紋的特征參數(shù)信息與用戶個人習慣以及應用環(huán)境息息相關,將特征參數(shù)組合在一起時能夠有效地區(qū)別用戶個體特征,因此可以作為用戶識別的依據(jù)。其中指紋的制作過程如圖1所示。
圖1 指紋制作示意圖
由圖1可知,從瀏覽器平臺中的配置信息、軟件組成、硬件組成等層次可獲取特征參數(shù)。本文選取的指紋特征參數(shù)主要包括以下8個:字體,插件,User agent,屏幕信息,時區(qū),HTTP-Accept,Video,Cookies_enabled(指的是Cookies能否接受設置,返回值為True或False)。上述特征參數(shù)的選取沿用了文獻[9]中的特征參數(shù)。
令一個瀏覽器指紋算法為BF(·),給定一個新的瀏覽器信息x,生成一個瀏覽器指紋BF(x),其離散概率密度函數(shù)為P(fn),n∈[0,1,…,N]。首先,引入自信息I的概念,其定義如式(1)所示。
I(BF(x)=fn)=-loga(P(fn))
(1)
其中,自信息量I表征該瀏覽器指紋包含信息的比特數(shù)。
P(fn)的信息熵H(BF)為瀏覽器指紋自信息量的期望值,其定義如式(2)所示。
(2)
其中,H(BF)的值越大,區(qū)分不同瀏覽器的準確性越高。
瀏覽器指紋由不同的特征參數(shù)組合而成,單獨討論每個特征參數(shù)的信息量并定義指紋特征參數(shù)的信息熵。設某個指紋特征參數(shù)為a,其自信息量與信息熵計算方法分別如式(3)和式(4)所示。
I(fn,a)=-loga(P(fn,a))
(3)
(4)
對于兩個相互獨立的特征參數(shù),自信息量計算可根據(jù)公式直接線性相加。
在大部分指紋算法下,用戶升級瀏覽器版本、更新插件、安裝新的字體等操作都會使原有指紋發(fā)生變化,導致指紋的靜態(tài)匹配方式無法完全識別回訪用戶。針對該問題,文獻[9,16]提出了基于指紋間字符串相似度的回訪用戶識別方法,通過逐位比較字符串,求兩指紋的相似度,從而判斷用戶是否為回訪用戶。
而針對上述問題,本文提出一種新的基于瀏覽器指紋差異度的回訪用戶識別算法。其中,指紋差異度是用來衡量兩指紋之間的差異程度,差異度越小表示新的指紋是原有用戶的更新指紋的概率越大,即用戶是回訪用戶的概率越大。在該算法中,指紋間差異度計算是最重要的環(huán)節(jié)。
定義全局差異度函數(shù)D(BF1,BF2),用來計算指紋BF1與指紋BF2之間的差異程度,其定義如式(5)所示。
(5)
其中,全局差異度函數(shù)D(BF1,BF2)是字體、插件、屏幕信息等8個指紋特征參數(shù)差異度值的總和。Wattri為每個特征參數(shù)的權(quán)重,取值為文獻[9]中8個指紋特征參數(shù)的信息熵。指紋差異度函數(shù)D(BF1,BF2)的取值區(qū)間為[0,1],若指紋完全一致,函數(shù)值為0;若兩者完全不同,則函數(shù)值為1。
為比較指紋BF1與指紋BF2間8個指紋特征參數(shù)的差異程度,分別定義8個特征參數(shù)的差異度函數(shù)的計算公式。
定義1User agent的差異度
特征參數(shù)User agent由瀏覽器相關數(shù)據(jù)以及設備體系結(jié)構(gòu)相關數(shù)據(jù)兩部分組成。上述兩部分的差異度分別用Fbr與Farchi表示,兩者定義分別如式(6)與式(7)所示。
(6)
(7)
在式(6)中,指紋間的瀏覽器名稱與版本號完全一致,Fbr取值為0;若瀏覽器名稱相同而版本號不一致,Fbr則取值為0.125;若兩者完全不同,取值為1。在式(7)中,Farchi的取值原理與Fbr相同。
令Fbr與Farchi這兩部分數(shù)據(jù)權(quán)重相等,則指紋與間User agent的差異度函數(shù)d(attr1(BF1,BF2))的定義如式(8)所示。
d(attr1(BF1,BF2))=0.5×Fbr+0.5×Farchi
(8)
其中,差異度函數(shù)d(attr1(BF1,BF2))取值區(qū)間為[0,1]。若指紋與的User agent完全相同,函數(shù)值則為0,若兩指紋的User agent完全不同,函數(shù)值則為1。
定義2插件信息的差異度
插件信息是由插件名稱與插件版本兩部分組成。令插件列表為LP,指紋BF1的插件列表為LP(BF2),指紋BF2的插件列表為LP(BF2)。指紋BF1與BF2的2個插件列表中的插件總數(shù)為FU(兩插件列表中相同的插件只統(tǒng)計一次)。求解過程如下:
FU=|(LP(BF1)(LP(BF1)∩LP(BF2)))∪LP(BF2)|
(9)
對于指紋BF1與BF2,計算兩插件列表中特有插件的比例,其結(jié)果分別用F1和F2表示,求解過程分別如式(10)與式(11)所示。
(10)
(11)
計算LP(BF1)與LP(BF2)兩插件列表中插件名稱相同,版本號不同的插件比例并用F3表示,求解過程如式(12)所示。
(12)
計算LP(BF1)與LP(BF2)兩插件列表中插件名稱與版本號都相同的插件比例并用F4表示,其求解過程如式(13)所示。
(13)
對于指紋BF1與BF2,兩插件列表的差異度函數(shù)d(attr2(BF1,BF2))的定義如式(14)所示。
(14)
其中,差異度函數(shù)d(attr2(BF1,BF2))取值區(qū)間為[0,1]。若指紋BF1與BF2的插件列表完全相同,差異度值則為0,若兩指紋的插件信息完全不同,差異度值則為1。
定義3字體信息的差異度
令指紋BF1的字體列表為LF(BF1),指紋BF2的字體列表為LF(BF2)。兩字體列表中的字體總數(shù)FU(兩字體列表中相同的字體只統(tǒng)計一次)的計算過程如式(15)所示。
FU=|(LF(BF1)(LF(BF1)∩LF(BF2)))∪LF(BF2)|
(15)
字體列表LF(BF1)中特有的字體比例用F1表示,F1的求解過程如式(16)所示。
(16)
LF(BF2)字體列表中特有的字體比例用F2表示,F2的求解過程如式(17)所示。
(17)
字體列表LF(BF1)與LF(BF2)中具有相同字體的比例用F3表示,F3的求解過程如式(18)所示。
(18)
對于指紋BF1與BF2,字體列表間的差異度函數(shù)d(attr3(BF1,BF2))的定義如式(19)所示。
(19)
其中,差異度函數(shù)d(attr3(BF1),attr3(BF2))取值區(qū)間為[0,1]。
定義4屏幕分辨率、時區(qū)、HTTP-Accept、Video以及Cookies_enabled的差異度
上述5個特征參數(shù)的差異度定義如下。
(20)
其中,差異度函數(shù)d(attrx(BF1,BF2))取值區(qū)間為[0,1]。
基于上述指紋差異度計算,本文提出一種能夠高精度地識別回訪用戶的算法,該算法的思路如圖2所示。
圖2 回訪用戶識別流程
圖2中的基于瀏覽器指紋差異度的回訪用戶識別算法的步驟如下:
1)采集指紋特征參數(shù)并利用哈希函數(shù)制作指紋。
2)判斷新指紋在指紋庫中是否存在,若存在,可判定該指紋是回訪用戶生成的指紋,則無需進行指紋更新操作。
3)若指紋庫中不存在該指紋,則需將該指紋與指紋庫中已有的指紋逐條進行全局差異度計算。
4)與事先設定差異度閾值作比較,若兩指紋之間的差異度值小于已設定的閾值,則認為該指紋是回訪用戶由于特征參數(shù)改變后產(chǎn)生的升級指紋,用戶為回訪用戶。最后用升級指紋替代原始指紋,完成指紋的更新操作。
5)若兩指紋之間的差異度值大于或等于設定的差異度閾值,即可判定用戶是首次訪問該網(wǎng)站,最后將該指紋存入指紋庫中。
為了測試基于瀏覽器指紋差異度的回訪用戶識別算法的可行性與準確性,設計基于Web的數(shù)據(jù)采集模塊DeviceFingerprint。該模塊主要用于采集特征參數(shù)與制作指紋。不僅通過DeviceFingerprint獲取到每個用戶的Cookies_enabled作為特征參數(shù)之一,同時還要獲取Cookies,目的是通過Cookies給每條指紋打上標記,為后續(xù)該回訪用戶識別算法執(zhí)行效果的評估做準備。
實驗通過嵌入網(wǎng)頁中的DeviceFingerprint模塊獲取用戶遞交的HTTP請求,從而獲取了HTTP-Accept;通過執(zhí)行JavaScript代碼,獲取用戶User agent(包含瀏覽器類型、版本號以及操作系統(tǒng)等信息)、插件、屏幕信息、時區(qū)、Video以及Cookies_enabled這些參數(shù);通過JavaScript與Flash結(jié)合的方式獲取用戶的字體信息。其中,8個特征參數(shù)的獲取方式、數(shù)據(jù)類型以及變化情況如表1所示。
表1 8個特征參數(shù)的獲取方式及特征參數(shù)描述
為保證實驗數(shù)據(jù)的真實性,從2016年12月3日,截止到2016年12月23日,在線收集了共102條不同的指紋數(shù)據(jù)。其中,102條指紋數(shù)據(jù)中出現(xiàn)了79個不同Cookies,即對應分別79個不同的用戶。
在本實驗中,根據(jù)式(5)可計算2個指紋之間的差異度值。本文采用文獻[9]中的8個特征參數(shù)的信息熵,分別作為8個局部差異度函數(shù)的權(quán)重。因為文獻[9]中采集的指紋樣本數(shù)量龐大,以此作為統(tǒng)一的權(quán)重標準,可減少誤差。8個特征參數(shù)按照信息熵的值從大到小排列情況如表2所示。
表2 8個特征參數(shù)的信息熵
如表2所示,插件、字體以及User agent這3個特征參數(shù)的信息熵較大,表明插件、字體以及User agent這3個特征參數(shù)變化引起的兩指紋間的差異度值變化程度也較大。
以實驗中的2條指紋為例,分析基于指紋差異度的回訪用戶識別算法具有可行性。這2條指紋除了User agent參數(shù)之外,其他7個特征參數(shù)分別相同。指紋 1的 User agent列表為:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36(KHTML,like Gecko) Chrome/38.0.2125.122 Safari/537.36。指紋 2的 User agent列表為:Mozilla/5.0 (Windows NT 6.3;WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/45.0.2454.101 Safari/537.36。
根據(jù)式(5)~式(8)以及表2中的權(quán)重,計算得到指紋1與指紋2的差異度值為0.017。該差異度值接近于0,則表明兩指紋高度相似,可認為兩條指紋來自同一用戶。造成指紋發(fā)生變化的原因是由于用戶更新瀏覽器版本所致。
本實驗關鍵的一個環(huán)節(jié)是差異度閾值的設定,利用差異度閾值可界定指紋是否為回訪用戶生成的指紋。如圖2所示,對新采集的指紋,首先通過字符串匹配方式,初次判斷用戶是否為回訪用戶。若初次匹配失敗,進一步根據(jù)差異度計算公式,逐一計算待判定的指紋與指紋庫中已有指紋之間的差異度值。若差異度值小于事先設定的差異度閾值,則認為兩指紋來自用一用戶,即該用戶為該網(wǎng)站的回訪用戶。
將指紋的識別率作為基于瀏覽器指紋差異度的回訪用戶識別算法準確性的評估指標。其中,指紋識別率表示的是能夠正確地識別出回訪用戶的比例。
為了評估該算法的執(zhí)行效果,設定3個不同的差異度閾值,分別為0.025、0.05以及0.10。在不同差異度閾值下的指紋識別率如表3所示。
表3 不同差異度閾值下的指紋識別率
如表3所示,差異度閾值的設定影響著回訪用戶的識別率。設定的指紋差異度閾值越大,則表示容許的指紋之間的差異程度越大。在上述0.025、0.05以及0.10這3種不同的差異度閾值情況下,指紋的識別率均在86%以上。
綜上所述,基于瀏覽器指紋差異度的回訪用戶識別算法具有一定的可行性且識別回訪用戶的準確率較高。其中,指紋差異度計算以及差異度閾值設定是回訪用戶識別算法中最重要的2個環(huán)節(jié)。選擇適當?shù)牟町惗乳撝的軌蛴行У靥岣呋卦L用戶的識別率。
針對指紋的靜態(tài)匹配方式不能夠完全識別回訪用戶的問題,本文提出了一種基于瀏覽器指紋差異度的回訪用戶識別算法,通過比較瀏覽器指紋之間的差異度,可以有效地識別出網(wǎng)站的回訪用戶。為了驗證該算法的執(zhí)行效果,在線進行了數(shù)據(jù)采集與測試。實驗結(jié)果表明該算法能夠有效地識別回訪用戶,且在差異度閾值選擇得當?shù)那闆r下識別的準確率較高。但是由于采集的指紋數(shù)據(jù)有限,一定程度上影響實驗結(jié)果的準確度。因此在后續(xù)工作中,將盡可能采集更多的指紋樣本數(shù)據(jù),使得實驗結(jié)果更精確,同時在指紋特征參數(shù)的選擇上會嘗試選擇更多潛在的具體區(qū)分性的參數(shù)制作指紋。
[1] SAITO T,ISO Y,KIRYU N.A Study of Technical Aspect of Web Browser Fingerprinting[C]//Proceedings of the 31st Symposium on Cryptography and Information Security.Berlin,Germany:Springer,2010.
[2] 張夢媛.瀏覽器的安全訪問及指紋識別技術(shù)[D].南京:南京郵電大學,2012.
[3] 吳建濤.瀏覽器指紋技術(shù)研究與實現(xiàn)[D].西安:西北大學,2014.
[4] 王研昊,馬媛媛,楊 明,等.基于隱性標識符的零權(quán)限 Android智能終端識別[J].東南大學學報(自然科學版),2015,45(6):1046-1050.
[5] 王研昊.Android設備指紋識別技術(shù)的研究與實現(xiàn)[D].南京:東南大學,2015.
[6] NIKIFORAKIS N,KAPRAVELOS A,JOOSEN W,et al.On the Workings and Current Practices of Web-based Device Fingerprinting[J].IEEE Security & Privacy,2014,12(3):28-36.
[7] ACAR G,JUAREZ M,NIKIFORAKIS N,et al.Fpdetective:Dusting the Web for Fingerprinters[C]//Proceedings of ACM SIGSAC Conference on Computer & Communications Security.Washington D.C.,USA:IEEE Press,2013:1129-1140.
[8] 張玉清,武倩如,劉奇旭,等.第三方追蹤的安全研究[J].通信學報,2014,35(9):1-11.
[9] ECKERSLEY P.How Unique is Your Web Browser[C]//Proceedings of the 10th Privacy Enhancing Technologies Symposium.Berlin,Germany:Springer,2010:1-18.
[10] NIKIFORAKIS N,KAPRAVELOS A,JOOSEN W.Cookieless Monster:Exploring the Ecosystem of Web-based Device Fingerprinting[C]//Proceedings of the 34th IEEE Symposium of Security and Privacy.Washington D.C.,USA:IEEE Press,2013:541-555.
[11] MOWERY K,SHACHAM H.Pixel Perfect:Fingerprinting Canvas in HTML5[C]//Proceedings of Web 2.0 Security and Privacy Conference.Washington D.C.,USA:IEEE Press,2012:1-12.
[12] TAKASU K,SAITO T,YAMADA T.A Survey of Hardware Features in Modern Browsers:2015 Edition[C]//Proceedings of the 9th International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing.Washington D.C.,USA:IEEE Press,2015:520-524.
[13] MOWERY K,BOGENREIF D,YILEK S,et al.Fingerprinting Information in JavaScript Imple-mentations[C]//Proceedings of IEEE International Conference on Acoustics,Speech & Signal Processing.Washington D.C.,USA:IEEE Press,2013:9-12.
[14] MULAZZANI M,RESCHL P,HUBER M,et al.Fast and Reliable Browser Identification with Javascript Engine Fingerprinting[C]//Proceedings of Web 2.0 Security and Privacy Conference.Washington D.C.,USA:IEEE Press,2013:503-506.
[15] UPATHILAKE R,LI Yingkun,MATRAWY A.A Classification of Web Browser Fingerprinting Techniques[C]//Proceedings of the 7th International Conference on New Technologies,Mobility and Security.Washington D.C.,USA:IEEE Press,2015:1-5.
[16] 王 維,王偉平,王建新.一種基于升級瀏覽器指紋的用戶識別方法[C]//第七屆信息安全漏洞分析與風險評估大會論文集.南京:[出版者不詳],2014:189-197.