楊立鵬,王 拓,樊春美
(中國鐵道科學研究院,北京 100081)
隨著互聯網+的大力推廣,電子商務平臺也得到了飛速發展,但是這種新的交易方式具有虛擬性、即時性、跨行業地域性等特點,加上目前電子商務的法律法規,行業規則制定,以及第三方支付機制的不完善,安全保障措施不足、電子信息難以作為證據等導致電子商務領域的交易存在一定的風險。由于網絡的開放性,交易者彼此的身份不確定,身份冒用的情況時有發生;在網購過程中,消費者面臨的不是實物而是商家的描述,可能存在商家銷售虛擬貨物,彼此的信用體系并不完善;在互聯網支付的過程中往往通過第三方支付平臺來完成,消費者的身份信息和支付賬戶密碼等信息容易遭遇木馬、黑客的攔截,導致信息外泄。技術欺詐、信息欺詐、網絡釣魚、IP欺詐等,這些都是目前電商領域最常見的欺詐行為[1-3]。
傳統的反欺詐手段一般是通過賬戶、銀行卡、手機、IP等維度進行身份確認。對近年來各大電商網站反欺詐技術手段的應用情況進行匯總研究發現,隨著技術的發展,這些維度逐漸變得易于篡改,反欺詐效果十分有限,通過這些維度難以識別真正的電商客戶。驗證的方式最初使用用戶名、密碼等,后來升級為使用動態口令令牌、數字證書等,增強了安全性,但是目前最好的方式是利用生物特征的唯一標識來進行認證,通過用戶是誰來解決識別真實用戶的問題[4-6]。
瀏覽器指紋技術是指采集電商客戶發起交易的設備環境信息,通過邏輯運算,為每一臺設備上的瀏覽器分配一個唯一的編號。這個編號綜合了用戶的多種信息,并不是單純地依賴用戶名和密碼,提高了用戶的識別能力,并且通過這個唯一標識,反欺詐技術人員可以觀察到客戶交易環境、交易行為的變化,提高反欺詐的能力。
瀏覽器是電商用戶使用最多的程序,通過確定瀏覽器的指紋發現電子商務中潛在的問題具有非常重要的意義。如果根據每個用戶瀏覽器的版本、使用瀏覽器的操作習慣及用戶的常見設置,為其建立唯一的指紋,并且保持一定時間范圍內的穩定性,那么分析者就可以根據瀏覽器指紋來確定具體用戶的身份了。
只要用戶訪問網站,就會泄漏一些信息。這些信息不僅包括比較私密的信息,如用戶IP地址、口令、密碼,還有經常使用的瀏覽器的型號、版本和配置信息等等,所有的信息都會泄漏用戶的行為。為了更好地表示用戶,把所有的信息綜合起來,形成瀏覽器的指紋信息。因此采用基于瀏覽器信息熵的方法唯一地標識使用者的身份。
1.1.1 瀏覽器指紋信息熵
信息熵具有非常多的應用,這里通過建立指紋的信息熵來表示指紋信息。將每個瀏覽器的特征轉換成離散數值,為提高計算效率,避免使用字符串。假定指紋生成函數為F(),每輸入一個新的瀏覽器信息x,都會得到一個新的瀏覽器指紋F(x),該函數會滿足一個離散概率密度函數P(fn),n∈[0,2,…,N]。瀏覽器指紋的結果往往會受到使用者、軟件開發人員、技術事故等多種因素的影響,并且特征集合的大小和采取的數值也不能確定。為了避免引發過多問題,建議N值不要取得太大。使用式(1)表示函數輸出結果的自信息量[7-9]:
I(F(x)=fn)=-log2(P(fn))
(1)
這里采用2作為對數的底數,自信息量I表示為占用的bit位數。P(fn)分布的信息熵為所有瀏覽器自信息量的期望值,表示為:
(2)
由于瀏覽器存在多個組件,針對每個組件定義它的信息量及信息熵:
(3)
(4)
對于指紋的組件不獨立的情況,應該采用條件概率,將式(3)改為:
Is+t(fn,s,fn,t)=-log2(P(fn,s|fn,t))
(5)
在瀏覽器的指紋特征確定后,對于每一個登錄的用戶,使用上述公式即可得到一個瀏覽器的指紋特征。這個值唯一標識一個用戶,但是即使是同一個用戶也不能保證他的配置是一成不變的,因此瀏覽器指紋算法應該能夠具有識別指紋變更但同屬一原指紋的能力,這里采用加強指紋算法。
1.1.2 基于信息熵和相似度計算的加強指紋算法
瀏覽器加強識別指紋算法是專門解決來自同一個瀏覽器但指紋不相同的情況,當信息熵不一致時,進行相似度計算。指紋變化的原因可能是用戶每次訪問的時間不同,或者由于需要查看瀏覽信息的需要,對瀏覽器做了一些必要的更改。在這種情況下,瀏覽器指紋算法應該能夠識別這種異常,對這種差異有一定的容忍度。加強指紋算法就是用來解決這個問題的,兩次指紋信息,如果大部分指紋的信息是一致的,那么就應該認為這是一個原指紋的變種,而不能認定為一個新的指紋。
加強指紋采用相似度的計算來實現[10]。對于每個瀏覽器特征,采用二進制的形式進行區分,簡化相似度的計算方法。對于瀏覽器指紋的每個特征項分別進行完全匹配,如果符合則為1,否則為0。對于不同的特征項給予不同的權重,因此指紋的相似度計算如式(6):
(6)
其中,S表示采集的指紋與數據庫指紋的相似度;Ei表示獲取的瀏覽器指紋特征項;αi表示Ei特征的權重大小。
設置相似度的閾值M,假如S的值大于M,則認為該指紋是加強指紋,否則認為是新的指紋。該算法綜合考慮了各種因素對于瀏覽器指紋的影響,具有非常強的可靠性,而且該算法實現起來比較簡單,因此是一種優秀的加強指紋判定算法。
1.1.3 瀏覽器指紋算法實現
建立一個高效的用戶指紋算法,需要解決的關鍵問題有兩個:一個是使用的指紋識別特征,好的指紋識別特征是提高瀏覽器指紋識別算法有效性的關鍵因素;另外就是如何識別同一個指紋的不同變化,可以避免建立過多的指紋信息,提高識別同一指紋的準確性。對于識別同一個指紋的不同變化,使用加強指紋算法。綜合多種影響因素建立的瀏覽器指紋算法[11-12]的實現過程如下所示:
(1)用戶訪問網站時,采集用戶的用戶名、登錄時間以及IP地址信息,用來提高瀏覽器的真實性。
(2)采集瀏覽器的基本信息,并通過配置的關聯性,確定瀏覽器各個特征。
(3)使用1.1.1介紹的算法,針對瀏覽器的不同組件,生成瀏覽器對應的信息熵。
(4)將用戶名與信息熵建立對應的關系,并將瀏覽器的特征加到對應的后面。
(5)用戶登錄進來后,計算該指紋的信息熵,檢查指紋庫中是否存在該用戶的指紋,如果沒有,則將該用戶的指紋信息加到指紋庫中,否則對比信息熵是否一致。
(6)如果該用戶的信息熵一致,則是回訪用戶,否則,使用式(6)計算登錄用戶與指紋庫中指紋特征的相似度。
(7)如果相似度在一定的容忍范圍內,則判斷為回訪用戶,更新對應的指紋信息,否則為該用戶建立新的指紋。
在生成瀏覽器指紋時,既要為滿足所有用戶的需求生成足夠多的設備指紋,又要能夠對同一個用戶的微小變化生成同一個指紋ID。瀏覽器指紋的生成受多種因素的影響,如用戶更改使用的操作系統的版本,修改瀏覽器的配置,更改瀏覽器的版本等等,每個不同的配置都會產生不同的信息熵,從而生成不同的設備指紋。選擇的影響因素越細,生成的設備指紋的種類就越多,這樣就能夠滿足有著細微差別的用戶,也能夠擁有不同的設備指紋。但是即使是同一個用戶,他的設備指紋也會隨著一系列事件的變化而發生改變,比如安裝或者刪除插件,改變字體,更改Cookie的配置。為了維護用戶設置指紋的穩定性,不能因用戶做一些改變就又生成不同的設備指紋,為此要求采用的指紋特征不能過于詳細。因此在指紋的特征選擇時,要同時考慮生成指紋的多變性和穩定性,這也同時決定著指紋生成算法的有效性。
利用Java語言開發的網站,在用戶登錄時,添加收集瀏覽器信息和生成指紋的算法,為了對比加強指紋的識別能力,分別實現了基于信息熵的指紋識別算法和基于信息熵和相似度的指紋識別算法。使用不同的用戶名,修改不同的配置,進行實驗200次,部分實驗結果如表1所示。
通過計算識別的結果可得,識別指紋的錯誤率降低了10%,從而證明了加強指紋具有比較好的效果。
在正常情況下,當用戶通過瀏覽器訪問一個網站時,該網站便會在使用者電腦上留下Cookie痕跡,根據這個用戶信息,可以追蹤用戶的線上行為,但是用戶可以將Cookie信息刪除,導致無法查看用戶的行為。但是瀏覽器指紋能夠正常地跟蹤用戶。因為它不在用戶的計算機上留下持久的痕跡,具有非常隱秘的性質。

表1 對比實驗結果
注:N為不同指紋,Y為同一個指紋。
如何標記設備一直是在研究的問題,目前最常用的就是Cookie或者Session。Session具有一定的時效性,不能驗證每次登陸的是否為同一用戶。使用Cookie就需要通過瀏覽器set-cookie存儲標識到客戶端,但是會受到條件的限制。首先瀏覽器有定時清除的功能,用戶也可以手動清除、禁止寫入,導致這種標識的穩定性很低,另外標識的粒度比較復雜,不能適配到所有的場景。
因此現在需要一種基于多維度特征的綜合標記方法,能從瀏覽器中獲得UserAgent,Language,Color Depth,CPU class,Platform,Canvas fingerprinting,WebGL fingerprinting等多項維度的數據,采用瀏覽器指紋計算算法得到一個具有綜合評價的唯一標識,可以更好地跟蹤用戶的行為。
用戶只要訪問網站就可能泄露信息,這些信息包括用戶IP、口令、密碼等敏感信息,也包括一些不是特別敏感的信息,比如瀏覽器的型號、版本和配置信息等等。這些信息又可以分為唯一信息和非唯一信息。唯一信息指的是可以唯一標識一個設備的信息,非唯一信息指的是那些用戶可以更改的信息。
為了獲取這些信息,瀏覽器插件、Cookies、用戶提交的Http請求和javaScript腳本被廣泛用于收集瀏覽器特征。這些工具不僅能夠收集獨特的瀏覽器特征信息,還能收集瀏覽器的提供商、瀏覽器的版本號、使用的插件和字體等信息。但是這種獲取方式有一定的限制,就是用戶必須訪問瀏覽器才能使用這些方法。目前一些用戶會更改代理字段甚至偽造,甚至為了保護訪問的隱私,瀏覽器通常使用https的加密數據傳輸模式。但是瀏覽器的流量差異多是由于內核不同導致的,用戶不同,相同瀏覽器的流量差異不會太大,因此采用流量分析法也是一種識別瀏覽器的有效方式[13]。
常用的瀏覽器指紋特征主要有7種:User Agent、HTTP_ACCEPT Headers、瀏覽器插件信息、系統字體庫、顯示器設置(屏幕信息)、時區信息、Cookie。表2展示了各種瀏覽器指紋特征對應的獲取方式和特征描述。

表2 主要的瀏覽器指紋特征
在實際應用中,需要對以上7種瀏覽器指紋特征進行進一步完善、細化和區分。由于每個特征可能擁有不同的狀態,所以使用不同的二進制位來表示每個組件的狀態。
瀏覽器指紋主要用來解決賬號密碼盜用的情況,能夠及時發現交易者使用環境的變化,識別交易的真實用戶,保障網上交易的安全性。瀏覽器指紋的識別流程主要分為瀏覽器特征的獲取、瀏覽器指紋的生成、瀏覽器指紋的識別,具體流程如圖1所示。

圖1 瀏覽器指紋識別流程
在服務器端,除了原服務系統,在相應的數據庫中增加一個指紋信息表,當用戶登錄時,首先對其使用的瀏覽器生成一個瀏覽器指紋,然后判斷這個用戶是否存在,如果不存在說明是一個新的用戶,將它的設備指紋加入到指紋信息表中。
確定該用戶是注冊過的用戶后,判斷他的瀏覽器指紋,看當次登錄的環境是否與以前的一致,如果一致,說明該用戶沒有問題,可以正常地使用網站。否則,需要進一步判斷是否對瀏覽的環境做了修改導致指紋不同,如果是,將數據庫中的指紋更改為當前的瀏覽器指紋,否則,該用戶每次登陸的環境差異過大,需要進一步對其進行驗證。通過這個識別過程,可以及時地發現冒用者,為網絡安全提供了保障。
瀏覽器指紋用來核驗真實性,在訪問和交易的過程中,實時發現具有非常重要的意義,因此可以采用如圖2所示的技術架構。這樣的設計既能滿足大量用戶設備指紋存儲的問題,也能實時地計算設備指紋和比對工作。

圖2 瀏覽器指紋的技術架構
(1)采集指紋。
Http/Js用來收集設備指紋的信息,Http與Js結合的方式,可以將設備指紋的信息收集得更加全面。
(2)瀏覽器指紋的計算。
圖2中上面的Storm主要用來實現設備指紋的計算,判斷設備指紋是否在Redis中,如果該用戶不在瀏覽器指紋數據庫中,則將用戶的信息和瀏覽器指紋一起寫到Hbase中,否則,判斷該指紋是否與數據庫中的指紋一致;如果一致,該用戶合法,繼續執行操作,否則,需要判斷是否是加強指紋;如果是,更新Hbase的瀏覽器指紋,否則該用戶有一定的風險,需進一步驗證。
(3)瀏覽器指紋的存儲。
Hbase可以解決大數據量存儲的問題[14],是對于訪問量大的系統的最佳選擇。使用Storm將數據庫備份到Redis中,可以提高瀏覽器指紋比對的效率。Redis作為內存數據庫,查詢效率非常高,可以迅速地得到比對結果。
(4)其他服務。
搭建Kafka集群,是建立一個分布式消息隊列系統,將收集的信息通過后臺發送給Kafka,防止收集的數據不能被及時處理,起到一個緩沖的作用。Kafka有兩個接收端,除了上面用來計算瀏覽器指紋的Storm,還有下面的Storm,在計算瀏覽器指紋的同時,它根據用戶的信息,去Hbase中查找是否存在該用戶的瀏覽器指紋,如果存在,則將信息同步到Redis中。
Storm是分布式實時計算,具有較強的實時性,在這里用來計算瀏覽器指紋,具有較高的效率,能夠保證系統的實時性,因此使用上面的技術架構可以達到非常好的應用效果。
隨著網絡技術的迅速發展,手機、平板電腦等各種智能設備的加入,網絡訪問和交易也變得越來越頻繁,各種安全問題也逐漸凸顯。傳統的基于用戶名密碼的驗證手段已經不能滿足安全的需要,因此需要綜合用戶的多種信息為其建立一個唯一標識,以此來提高認證的準確性,保護用戶的信息安全。
文中介紹了瀏覽器指紋的生成算法及其應用系統架構的設計。在指紋識別的過程中,綜合使用了完全匹配和部分匹配的方式,可以有效地識別有效指紋的變種,降低錯誤增加指紋的數目,達到最佳的指紋識別效果。在瀏覽器指紋的架構設計中,綜合考慮了高訪問量和實時性的問題,在原系統的基礎上,加上指紋識別系統,可以提高認證用戶的安全性。隨著電子商務遇到越來越多的安全問題,瀏覽器指紋在機器人防范、用戶訪問特征、客戶端數據等方面必將有著更廣泛的應用。
[1] 楊青龍.網購中的欺詐行為研究[J].東西南北·教育觀察,2011(9):19.
[2] MIYAZAKI A D,FERNANDEZ A.Consumer perceptions of privacy and security risks for online shopping[J].Journal of Consumer Affairs,2001,35(1):27-44.
[3] 黎志成,劉枚蓮.電子商務環境下的消費者行為研究[J].中國管理科學,2002,10(6):88-91.
[4] 吉 絢,胡 曼,劉廣宇.網上購物安全性現狀分析[J].中國水運:理論版,2006,4(12):116-117.
[5] 吳凌嬌.網上購物安全問題探討[J].江蘇技術師范學院學報,2006,12(4):68-73.
[6] BODA K,F?LDESM,GULYS G G,et al.User tracking on the web via cross-browser fingerprinting[M]//Information security technology for applications.Berlin:Springer,2011:31-46.
[7] 張夢媛.瀏覽器的安全訪問及指紋識別技術[D].南京:南京郵電大學,2012.
[8] YEN T F,HUANG X,MONROSE F,et al.Browser fingerprinting from coarse traffic summaries:techniques and implications[C]//International conference on detection of intrusions and malware,and vulnerability assessment.[s.l.]:[s.n.],2009:157-175.
[9] 徐 晏,張代遠.基于瀏覽器的用戶身份識別系統[J].計算機技術與發展,2013,23(8):79-82.
[10] 王 維,王偉平,王建新.一種基于升級瀏覽器指紋的用戶識別方法[C]//信息安全漏洞分析與風險評估大會.出版地不詳:中國信息安全測評中心,2014.
[12] 姚全珠,蔣鵬飛,顏麗菁,等.基于瀏覽器指紋技術的預防黃牛黨掛號系統[J].計算機應用,2016,36:276-279.
[13] 李周輝,黃燕群,唐 屹.瀏覽器識別研究[J].信息網絡安全,2016(3):34-39.
[14] 陸 婷,房 俊,喬彥克.基于HBase的交通流數據實時存儲系統[J].計算機應用,2015,35(1):103-107.