|
去年4季度,俺寫了4篇《TrueCrypt 使用經(jīng)驗(yàn)》,又寫了3篇 Linux 方面的掃盲,導(dǎo)致本系列又中斷了幾個(gè)月。經(jīng)熱心讀者提醒,現(xiàn)繼續(xù)補(bǔ)上。 本系列的前面三篇,咱們聊了瀏覽器的基本防范。對(duì)于“隱私要求不高并且技術(shù)水平也不高”的同學(xué),那三篇基本上夠了。后面俺要繼續(xù)聊瀏覽器方面的問題,面向的是那些“對(duì)隱私要求較高,同時(shí)也具有一定折騰能力”的同學(xué)。今天這篇談?wù)劄g覽器的“指紋”是如何暴露你的隱私,順便分享一些防范技巧。 ★啥是“指紋”?看過警匪片或者破案小說的同學(xué),應(yīng)該都知道“指紋”在刑偵中的作用——警方雖然沒有直接看到犯罪現(xiàn)場(chǎng)的作案人員,但可以根據(jù)現(xiàn)場(chǎng)留下的指紋來猜測(cè)/判斷作案人員。 如果你時(shí)常接觸信息安全領(lǐng)域的一些資料,也會(huì)聽到“指紋”這個(gè)形象的說法(比如:操作系統(tǒng)指紋、網(wǎng)絡(luò)協(xié)議棧指紋、等等)。IT 領(lǐng)域提到的“指紋”一詞,其原理跟“刑偵”是類似的——“當(dāng)你需要研究某個(gè)對(duì)象的類型/類別,但這個(gè)對(duì)象你又無法直接接觸到。這時(shí)候你可以利用若干技術(shù)來獲取該對(duì)象的某些特征,然后根據(jù)這些特征來猜測(cè)/判斷該對(duì)象的類型/類別?!?br> ★啥是“指紋”的“信息量”?在 IT 領(lǐng)域有各種各樣的特征可以用來充當(dāng)“指紋”。這時(shí)候就需要判斷,用哪個(gè)特征做指紋,效果更好。為了討論這個(gè)問題,就得掃盲一下“指紋的信息量”。 為了幫助大伙兒理解,先舉一個(gè)例子: 假設(shè)你要在學(xué)校中定位某個(gè)人,如果你光知道此人的性別,你是比較難定位的(只能排除 1/2 的人);反之如果你不知道性別,但是知道此人的生日,就比較容易定位(可以排除掉大約 364/365 的人,只剩大約 1/365 的人)。為啥捏?因?yàn)椤吧铡北取靶詣e”更加獨(dú)特,所以“生日”比“性別”能夠提供更多的信息量。 從這個(gè)例子可以看出:某個(gè)特征越獨(dú)特,則該特征的信息量越大;反之亦然。信息量越大的特征,就可以把對(duì)象定位到越小的范圍。 ★“指紋”的“信息量”如何度量——關(guān)于指紋的比特?cái)?shù)?(本節(jié)涉及到中學(xué)數(shù)學(xué),數(shù)學(xué)很差的或者對(duì)數(shù)學(xué)有恐懼感的讀者,請(qǐng)直接無視) 在 IT 領(lǐng)域中,可以用【比特?cái)?shù)】來衡量某個(gè)指紋所包含的信息量。為了通俗起見,先以前面提到的“性別”來說事兒。性別只有兩種可能性——“男”或者“女”,并且男女的比例是大致平均的。(喜歡抬杠的同學(xué),別跟俺扯啥雙性人,俺沒空搭理)所以,當(dāng)你知道了某人的性別,就可以把范圍縮小到原先的 1/2。用 IT 的術(shù)語(yǔ)來講,就是:“性別”這個(gè)特征只包含一個(gè)比特的信息量。 以此類推: 當(dāng)我們說:“某特征包含3比特信息量”,意思就是:該特征會(huì)有8種大致平均的可能性(8等于2的3次方)。一旦知道該特征,可以把目標(biāo)定位到八分之一。 當(dāng)我們說:“某特征包含7比特信息量”,意思就是:該特征會(huì)有128種大致平均的可能性(128=2^7)。一旦知道該特征,可以定位到 1/128 再來說“生日”。(不考慮閏年的情況下)生日有365種可能性(并且也是平均分布的),所以生日包含的比特?cái)?shù)大約是 8.51。為啥是 8.51 捏,因?yàn)?2 的 8.51 次方 約等于 365。因此,知道了某人的生日就可以把范圍縮小到 1/365 通過上述舉例,大伙兒對(duì)于指紋的信息量,應(yīng)該有一些粗淺的認(rèn)識(shí)了吧? ★多個(gè)指紋的綜合定位如果能同時(shí)獲取【互不相關(guān)】的若干個(gè)指紋,就可以大大增加定位的精確性。 比如要在某個(gè)公司里面定位某人,如果你知道此人的“生日”和“生肖”,那么就可以達(dá)到 1/4380(1/4380 = 1/12 * 1/365) 的定位精度。因?yàn)榫C合定位之后,比例之間是【乘法】的關(guān)系,所以范圍就被急劇縮小了。 為啥俺特別強(qiáng)調(diào)“互不相關(guān)”捏?假如你同時(shí)知道的信息是“生日”和“星座”,那么定位的精度依然是 1/365——因?yàn)樯盏男畔⒁呀?jīng)包含了星座的信息。所以,只有那些相互獨(dú)立的特征(所謂的相互獨(dú)立,數(shù)學(xué)稱為“正交”),在綜合定位的時(shí)候才可以用【乘法】。 ★啥是“瀏覽器的指紋”?前面說的是預(yù)備知識(shí),現(xiàn)在開始進(jìn)入正題。 當(dāng)你使用瀏覽器訪問某個(gè)網(wǎng)站的時(shí)候,瀏覽器【必定會(huì)暴露】某些信息給這個(gè)網(wǎng)站。為啥俺強(qiáng)調(diào)“必定”捏?因?yàn)檫@些信息中,有些是跟 HTTP 協(xié)議相關(guān)的(本章節(jié)說的 HTTP 協(xié)議是廣義的,也包括 HTTPS)。只要你基于 HTTP 協(xié)議訪問網(wǎng)站,瀏覽器就【必定】會(huì)傳輸這些信息給網(wǎng)站的服務(wù)器。 再羅嗦一下:HTTP 協(xié)議是 Web 的基石。只要你通過瀏覽器訪問 Web,必定是基于 HTTP 協(xié)議的。因此,Web 網(wǎng)站的服務(wù)器必定可以獲取到跟你的瀏覽器相關(guān)的某些信息(具體是哪些信息,俺下面會(huì)聊)。 ★“瀏覽器指紋”如何暴露隱私?“瀏覽器指紋”的機(jī)制跟 cookie 有點(diǎn)相似。關(guān)于 cookie 的作用,建議那些健忘的同學(xué)先去“前面的博文”復(fù)習(xí)一下。 對(duì)于“瀏覽器指紋”導(dǎo)致的隱私問題,俺舉2個(gè)例子來說明其危害。 ◇對(duì)于無需登錄的網(wǎng)站如果你的瀏覽器允許記錄 cookie,當(dāng)你第一次訪問某網(wǎng)站的時(shí)候,網(wǎng)站會(huì)在你的瀏覽器端記錄一個(gè) cookie,cookie 中包含某個(gè)“唯一性的標(biāo)識(shí)信息”。下次你再去訪問該網(wǎng)站,網(wǎng)站服務(wù)器先從你的瀏覽器中讀取 cookie 信息,然后就可以根據(jù) cookie 中的“唯一標(biāo)識(shí)”判斷出,你之前曾經(jīng)訪問過該網(wǎng)站,并且知道你上次訪問該網(wǎng)站時(shí),干了些啥。對(duì)付這種 cookie 很簡(jiǎn)單,你只需要在前后兩次訪問之間,清空瀏覽器的 cookie,網(wǎng)站就沒法用 cookie 的招數(shù)來判斷你的身份。 但是“清空 cookie”這招對(duì)“瀏覽器指紋”是無效滴。比如說你的瀏覽器具有非常獨(dú)特的指紋,那么當(dāng)你第一次訪問某網(wǎng)站的時(shí)候,網(wǎng)站會(huì)在服務(wù)器端記錄下你的瀏覽器指紋,并且會(huì)記錄你在該網(wǎng)站的行為;下次你再去訪問的時(shí)候,網(wǎng)站服務(wù)器再次讀取瀏覽器指紋,然后跟之前存儲(chǔ)的指紋進(jìn)行比對(duì),就知道你是否曾經(jīng)來過,并且知道你上次訪問期間干了些啥。 ◇對(duì)于需要登錄的網(wǎng)站假如網(wǎng)站沒有采用“指紋追蹤”的技術(shù),那么你可以在該網(wǎng)站上注冊(cè)若干個(gè)賬號(hào)(馬甲)。當(dāng)你需要切換身份的時(shí)候,只需要先注銷用戶,清空瀏覽器的 cookie,然后用另一個(gè)賬號(hào)登錄。網(wǎng)站是看不出來的。 一旦網(wǎng)站采用“指紋追蹤”的技術(shù),即使你用上述方式偽造馬甲,但因?yàn)槟阌玫氖峭粋€(gè)瀏覽器,瀏覽器指紋相同。網(wǎng)站的服務(wù)器軟件可以猜測(cè)出,這兩個(gè)賬號(hào)其實(shí)是同一個(gè)網(wǎng)民注冊(cè)的。 ★“瀏覽器指紋”比“cookie”更隱蔽,更危險(xiǎn)剛才對(duì)比了“瀏覽器指紋”和“cookie”兩種身份追蹤技術(shù)。兩者的原理類似——都是利用某些特殊的信息來定位你的身份。兩者的本質(zhì)差異在于: 1. cookie 需要把信息保存在瀏覽器端,所以會(huì)被用戶發(fā)現(xiàn),也會(huì)被用戶清除。 2. 而“瀏覽器指紋”無需在客戶端保存任何信息,不會(huì)被用戶發(fā)覺,用戶也無法清除(換句話說:你甚至無法判斷你訪問的網(wǎng)站到底有沒有收集瀏覽器指紋)。 ★“瀏覽器指紋”包含哪些信息?瀏覽器暴露給網(wǎng)站的信息有很多種,常見的有如下幾種: ◇User Agent關(guān)于 User Agent 是啥,俺已經(jīng)在本系列前面的博文中掃盲過了(請(qǐng)看“這篇”),健忘的同學(xué)先去復(fù)習(xí)一下,再繼續(xù)往下看。 ◇屏幕分辨率這個(gè)比較通俗易懂。俺稍微補(bǔ)充一下:這一項(xiàng)不僅包括屏幕的尺寸,還包括顏色深度(比如你的屏幕是16位色、24位色、還是32位色)。 ◇時(shí)區(qū)這個(gè)也比較通俗。對(duì)于大部分天朝的網(wǎng)友,你的時(shí)區(qū)應(yīng)該都是“東8區(qū)” ◇瀏覽器的插件信息也就是你的瀏覽器裝了哪些插件。 再羅嗦一次:瀏覽器的“插件”和“擴(kuò)展”是兩碼事兒,別搞混了。本系列前面的博文掃盲了兩者的差異,鏈接在“這里”。 ◇瀏覽器的字體信息和瀏覽器相關(guān)的一些字體信息。 如果你的瀏覽器安裝了 Flash 或 Java 插件,有可能會(huì)暴露某些字體信息。所以俺在本系列的第2篇就警告了瀏覽器插件的風(fēng)險(xiǎn)。 ◇HTTP ACCEPT這是 HTTP 協(xié)議頭中的一個(gè)字段??紤]到列位看官大都不是搞 IT 技術(shù)的,俺就不深入解釋這項(xiàng)。 ◇其它以上就是常見的瀏覽器指紋。當(dāng)然啦,還有其它一些信息也可以成為“瀏覽器指紋”,考慮到篇幅,俺就不一一列舉并解釋了。有興趣的同學(xué),請(qǐng)自行閱讀 Mozilla 官網(wǎng)的文檔(在“這里”。提醒一下:是洋文) ★如何看自己瀏覽器的指紋?關(guān)于瀏覽器指紋導(dǎo)致的隱私問題,可能是由“電子前哨基金會(huì)”(簡(jiǎn)稱 EFF)率先在2010年曝光的。后來 EFF 提供了一個(gè)頁(yè)面,幫助網(wǎng)友看自己瀏覽器的指紋(請(qǐng)猛擊“這個(gè)鏈接”)。 打開此頁(yè)面之后,當(dāng)中有一個(gè)大大的,紅色的“TEST ME”按鈕。點(diǎn)一下此按鈕,稍等幾秒鐘,會(huì)顯示出一個(gè)表格,里面包含你當(dāng)前的瀏覽器的指紋信息。 在這個(gè)表格中會(huì)列出每一項(xiàng)指紋的“信息量”以及該指紋的“占比”。關(guān)于“信息量”的含義,本文前面已經(jīng)掃盲過,此處不再羅嗦。你只需記住,某項(xiàng)的信息量越大,就說明該項(xiàng)越獨(dú)特。而越獨(dú)特的指紋,對(duì)隱私的威脅也就越大。 考慮到篇幅有點(diǎn)長(zhǎng),今天先聊到這里。俺爭(zhēng)取明后天發(fā)下一篇,聊聊如何防范“瀏覽器指紋”導(dǎo)致的隱私風(fēng)險(xiǎn)。 回到本系列的目錄 版權(quán)聲明 本博客所有的原創(chuàng)文章,作者皆保留版權(quán)。轉(zhuǎn)載必須包含本聲明,保持本文完整,并以超鏈接形式注明作者編程隨想和本文原始地址: http://program-think./2014/01/privacy-protection-5.html |
|
|