Web客戶端追蹤(下)—瀏覽器指紋追蹤

隨著互聯(lián)網(wǎng)絡(luò)的廣泛普及冕房,數(shù)以億計(jì)網(wǎng)民的網(wǎng)絡(luò)行為數(shù)據(jù)早已成為最寶貴的資源,企業(yè)通過五花八門的各種手段了解網(wǎng)民的行為和隱私數(shù)據(jù)牢屋,用于廣告投遞且预、用戶興趣分析等,進(jìn)而作為決策的依據(jù)烙无。利用Web客戶端對(duì)用戶行為進(jìn)行收集和追蹤是重要手段之一锋谐。

本文繼《淺談Web客戶端追蹤(上)》繼續(xù)對(duì)主流的Web客戶端追蹤技術(shù)進(jìn)行分析,主要介紹典型的指紋追蹤技術(shù)和WebRTC技術(shù)截酷,介紹一些簡(jiǎn)單的防跟蹤的方法涮拗,并給出相關(guān)參考供感興趣的朋友深入研究。

一迂苛、 典型追蹤技術(shù)

1. 瀏覽器指紋追蹤

類似人的外貌和指紋三热,Web客戶端(這里主要指瀏覽器)也有多種“外貌”信息和“指紋”信息,將這些信息綜合分析計(jì)算后三幻,可對(duì)客戶端進(jìn)行唯一性識(shí)別就漾,進(jìn)而鎖定、追蹤念搬、了解網(wǎng)民行為和隱私數(shù)據(jù)抑堡。

1) 基本指紋

基本指紋是任何瀏覽器都具有的特征標(biāo)識(shí)摆出,比如硬件類型(Apple)、操作系統(tǒng)(Mac OS)夷野、用戶代理(User agent)懊蒸、系統(tǒng)字體荣倾、語言悯搔、屏幕分辨率、瀏覽器插件 (Flash, Silverlight, Java, etc)舌仍、瀏覽器擴(kuò)展妒貌、瀏覽器設(shè)置 (Do-Not-Track, etc)、時(shí)區(qū)差(Browser GMT Offset)等眾多信息铸豁,這些指紋信息“類似”人類的身高灌曙、年齡等,有很大的沖突概率节芥,只能作為輔助識(shí)別在刺。可以在該網(wǎng)址進(jìn)行查看本地瀏覽器的基本特征头镊,https://www.whatismybrowser.com/

圖片 1

2) 高級(jí)指紋

基本指紋就像是人的外貌特征蚣驼,外貌可以用男女、身高相艇、體重區(qū)分颖杏,然而這些特征不能對(duì)某個(gè)人進(jìn)行唯一性標(biāo)識(shí),僅使用基本指紋也無法對(duì)客戶端進(jìn)行唯一性判定坛芽,基于HTML5的諸多高級(jí)指紋對(duì)此提供了新思路留储。

①、Canvas指紋

說到高級(jí)指紋咙轩,不得不提Canvas指紋获讳,Canvas(畫布)是HTML5中一種動(dòng)態(tài)繪圖的標(biāo)簽,可以使用其生成甚至處理高級(jí)圖片活喊。2014年9月丐膝,ProPublica報(bào)道:新型的Canvas指紋追蹤正在被用到“上到白宮,下到Y(jié)ouPorn”等眾多網(wǎng)站胧弛,事實(shí)上早在2012年已有研究報(bào)告[6]分析稱canvas指紋被用于跟蹤用戶尤误。

圖片 2

利用Canvas進(jìn)行追蹤的一般過程大致如下:

圖片 3

基于Canvas標(biāo)簽繪制特定內(nèi)容的圖片,使用canvas.toDataURL()方法獲得圖片內(nèi)容的base64編碼(對(duì)于PNG格式的圖片结缚,以塊(chunk)劃分损晤,最后一塊是32位CRC校驗(yàn))作為唯一性標(biāo)識(shí),如下圖红竭。

圖片 4
圖片 5

Canvas指紋的原理大致如下:

相同的HTML5 Canvas元素繪制操作尤勋,在不同操作系統(tǒng)喘落、不同瀏覽器上,產(chǎn)生的圖片內(nèi)容不完全相同最冰。在圖片格式上瘦棋,不同瀏覽器使用了不同的圖形處理引擎、不同的圖片導(dǎo)出選項(xiàng)暖哨、不同的默認(rèn)壓縮級(jí)別等赌朋。在像素級(jí)別來看,操作系統(tǒng)各自使用了不同的設(shè)置和算法來進(jìn)行抗鋸齒和子像素渲染操作篇裁。即使相同的繪圖操作沛慢,產(chǎn)生的圖片數(shù)據(jù)的CRC檢驗(yàn)也不相同。

在線測(cè)試地址:https://www.browserleaks.com/canvas达布,可查看瀏覽器的Canvas唯一性字符串团甲。

圖片 6

Canvas的兼容情況:幾乎已被所有主流瀏覽器支持,可以通過大部分的PC黍聂、平板躺苦、智能手機(jī)訪問!

圖片 7

②产还、AudioContext指紋

HTML5提供給JavaScript編程用的Audio API則讓開發(fā)者有能力在代碼中直接操作原始的音頻流數(shù)據(jù)匹厘,對(duì)其進(jìn)行任意生成、加工雕沉、再造集乔,諸如提高音色,改變音調(diào)坡椒,音頻分割等多種操作扰路,甚至可稱為網(wǎng)頁(yè)版的Adobe Audition。

AudioContext指紋原理大致如下:

方法一:生成音頻信息流(三角波)倔叼,對(duì)其進(jìn)行FFT變換汗唱,計(jì)算SHA值作為指紋,音頻輸出到音頻設(shè)備之前進(jìn)行清除丈攒,用戶毫無察覺哩罪。

圖片 8

方法二:生成音頻信息流(正弦波),進(jìn)行動(dòng)態(tài)壓縮處理巡验,計(jì)算MD5值际插。

圖片 9

AudioContext指紋基本原理:

主機(jī)或?yàn)g覽器硬件或軟件的細(xì)微差別,導(dǎo)致音頻信號(hào)的處理上的差異显设,相同器上的同款瀏覽器產(chǎn)生相同的音頻輸出框弛,不同機(jī)器或不同瀏覽器產(chǎn)生的音頻輸出會(huì)存在差異。

從上可以看出AudioContext和Canvas指紋原理很類似捕捂,都是利用硬件或軟件的差異瑟枫,前者生成音頻斗搞,后者生成圖片,然后計(jì)算得到不同哈希值來作為標(biāo)識(shí)慷妙。音頻指紋測(cè)試地址:https://audiofingerprint.openwpm.com/

3) 硬件指紋

硬件指紋主要通過檢測(cè)硬件模塊獲取信息僻焚,作為對(duì)基于軟件的指紋的補(bǔ)充,主要的硬件模塊有:GPU’s clock frequency膝擂、Camera虑啤、Speakers/Microphone、Motion sensors猿挚、GPS咐旧、Battery等。更多細(xì)節(jié)請(qǐng)參考:https://arxiv.org/pdf/1503.01408v3.pdf

4) 綜合指紋

Web世界的指紋碰撞不可避免绩蜻,將上述所有的基本指紋和多種高級(jí)指紋綜合利用,進(jìn)行分析室埋、計(jì)算哈希值作為綜合指紋办绝,可以大大降低碰撞率,極大提高客戶端唯一性識(shí)別的準(zhǔn)確性姚淆。測(cè)試地址:https://panopticlick.eff.org/

圖片 10

2. 跨瀏覽器指紋

上述指紋都是基于瀏覽器進(jìn)行的孕蝉,同一臺(tái)電腦的不同瀏覽器具有不同的指紋信息。這樣造成的結(jié)果是腌逢,當(dāng)同一用戶使用同一臺(tái)電腦的不同瀏覽器時(shí)降淮,服務(wù)方收集到的瀏覽器指紋信息不同,無法將該用戶進(jìn)行唯一性識(shí)別搏讶,進(jìn)而無法有效分析改用戶的的行為佳鳖。

近期有學(xué)者研究了一種跨瀏覽器的瀏覽器指紋,其依賴于瀏覽器與操作系統(tǒng)和硬件底層進(jìn)行交互進(jìn)而分析計(jì)算出指紋媒惕,這種指紋對(duì)于同一臺(tái)電腦的不同瀏覽器也是相同的系吩。更多技術(shù)細(xì)節(jié)請(qǐng)參考:

http://yinzhicao.org/TrackingFree/crossbrowsertracking_NDSS17.pdf

3. WebRTC

WebRTC(網(wǎng)頁(yè)實(shí)時(shí)通信,Web Real Time Communication)妒蔚,是一個(gè)開源項(xiàng)目穿挨,旨在使得瀏覽器能為實(shí)時(shí)通信(RTC)提供簡(jiǎn)單的JavaScript接口,說的簡(jiǎn)單明了一點(diǎn)就是讓瀏覽器提供JS的即時(shí)通信接口肴盏,讓瀏覽器實(shí)時(shí)獲取和交換視頻科盛、音頻和數(shù)據(jù)。WebRTC實(shí)現(xiàn)了三個(gè)API菜皂,分別是:

MediaStream:通過MediaStream的API能夠通過設(shè)備的攝像頭及麥克風(fēng)獲得視頻贞绵、音頻的同步流。

RTCPeerConnection:RTCPeerConnection是WebRTC用于構(gòu)建點(diǎn)對(duì)點(diǎn)之間穩(wěn)定幌墓、高效的流傳輸?shù)慕M件但壮。

RTCDataChannel:RTCDataChannel使得瀏覽器之間(點(diǎn)對(duì)點(diǎn))建立一個(gè)高吞吐量冀泻、低延時(shí)的信道,用于傳輸任意數(shù)據(jù)蜡饵。

基于WebRTC的實(shí)時(shí)通訊功能弹渔,可以獲取客戶端的IP地址,包括本地內(nèi)網(wǎng)地址和公網(wǎng)地址溯祸。其原理是利用到RTCPeerConnection 的API肢专,大致函數(shù)如下:

圖片 11

利用WebRTC能做的事情還遠(yuǎn)不止這些,比如使用其探測(cè)掃描內(nèi)網(wǎng)信息焦辅,進(jìn)行語音博杖、視頻交流,更多技術(shù)細(xì)節(jié)請(qǐng)參考:

http://net.ipcalf.com

https://diafygi.github.io/webrtc-ips/

圖片 12

二筷登、 防客戶端追蹤措施

1. 瀏覽器設(shè)置

基于上述客戶端追蹤技術(shù)和原理剃根,對(duì)瀏覽器設(shè)置提出一些簡(jiǎn)單的防御措施,大致如下:

①前方、使用隱身模式狈醉,目前主流的瀏覽器都支持該模式。

②惠险、禁用Cookie和JavaScript(此項(xiàng)可能導(dǎo)致頁(yè)面顯示不正常苗傅,慎用)

③、禁用WebRTC班巩,如Firefox瀏覽器:打開about:config渣慕,找到media.peerconnection.enabled的項(xiàng),設(shè)置成 false

④抱慌、禁用Geolocation逊桦,F(xiàn)irefox瀏覽器:打開about:config,找到geo.enabled 的值遥缕,設(shè)置其值為 false彬檀。Chrome 點(diǎn)擊設(shè)置(Settings)灯抛,從顯示高級(jí)設(shè)置(Show advanced settings)上,找到隱私(Privacy)并且點(diǎn)擊內(nèi)容設(shè)置(Content settings), 在窗口里找到定位(Location)并設(shè)置選項(xiàng)不允許任何網(wǎng)站追蹤你的物理位置(Do not allow any site to track your physical location)

⑤倍靡、限制API訪問文件資源時(shí)序信息炼彪,惡意網(wǎng)站會(huì)通過檢測(cè)瀏覽器緩存的時(shí)序信息胎署,包括訪問和忽略第三方網(wǎng)站的資源颠悬,來判斷使用者是否訪問過第三方網(wǎng)站。Firefox瀏覽器:打開about:config鸡号,將dom.enable_resource_timing, dom.enable_user_timing 和dom.performance.enable_user_timing_logging 設(shè)置為 false转砖,來阻止這些 API 運(yùn)行。

2. 插件

推薦幾個(gè)較好的插件來阻止第三方廣告追蹤和廣告:

①、Ghostery府蔗,個(gè)人使用推薦晋控,官網(wǎng)地址:

https://www.ghostery.com/try-us/download-browser-extension

②、Privacy Badger姓赤,官網(wǎng)地址:

https://www.eff.org/privacybadger/

③赡译、uMatrix(僅Chrome和FireFox):

https://addons.mozilla.org/en-us/firefox/addon/umatrix/

④、NoScript(僅FireFox):

https://addons.mozilla.org/en-US/firefox/addon/noscript/#

⑤不铆、Chameleon(僅Chrome):

https://github.com/ghostwords/chameleon

三蝌焚、 參考資料

指紋生成工具: https://github.com/Valve/fingerprintjs2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市誓斥,隨后出現(xiàn)的幾起案子只洒,更是在濱河造成了極大的恐慌,老刑警劉巖劳坑,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毕谴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泡垃,警方通過查閱死者的電腦和手機(jī)析珊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔑穴,“玉大人,你說我怎么就攤上這事惧浴〈婧停” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵衷旅,是天一觀的道長(zhǎng)捐腿。 經(jīng)常有香客問我,道長(zhǎng)柿顶,這世上最難降的妖魔是什么茄袖? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮嘁锯,結(jié)果婚禮上宪祥,老公的妹妹穿的比我還像新娘。我一直安慰自己家乘,他們只是感情好蝗羊,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仁锯,像睡著了一般耀找。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上业崖,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天野芒,我揣著相機(jī)與錄音蓄愁,去河邊找鬼。 笑死狞悲,一個(gè)胖子當(dāng)著我的面吹牛撮抓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播效诅,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼胀滚,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了乱投?” 一聲冷哼從身側(cè)響起咽笼,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎戚炫,沒想到半個(gè)月后剑刑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡双肤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年施掏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茅糜。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡七芭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔑赘,到底是詐尸還是另有隱情狸驳,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布缩赛,位于F島的核電站耙箍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酥馍。R本人自食惡果不足惜辩昆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旨袒。 院中可真熱鬧汁针,春花似錦、人聲如沸峦失。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尉辑。三九已至帆精,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卓练。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工隘蝎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人襟企。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓嘱么,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親顽悼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曼振,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容