EFF 的 Cover Your Tracks 只測量你的瀏覽器有多獨特,不測量它是否安全或被偽造。這篇文章講清楚這個分數能說明什麼、不能說明什麼。
執行 EFF 的 Cover Your Tracks,你會拿到一行聽起來相當嚇人的結果:你的瀏覽器指紋在最近測過的幾千個樣本中是獨一無二的。人很容易把這行字讀成一張成績單——「你及格了」或「你不及格」,評判的是你整體的隱私狀況。但它不是。這個數字只回答一個問題:你這套瀏覽器信號組合有多容易被辨識出來。這比「我安全嗎」「我的瀏覽器有沒有說謊」「我有沒有受到追蹤防護」這些更大的問題要窄得多。把唯一性數字當成這些更大問題的答案,是大家誤讀自己結果最常見的方式。
核心要點
- 「N 分之一」這個數字測量的是唯一性——有多少其他被測瀏覽器和你的信號組合完全一致——而不是安全性、誠實度,也不是整體防護水準。
- Cover Your Tracks 在這個數字旁邊還會給出另外幾項結果,但那些是獨立的追蹤器封鎖通過/未通過測試,並不參與唯一性數字的計算。
- 「N 分之一」是相對於該工具自己最近的樣本而言,不是相對於整個網際網路;背後的數學是資訊理論意義上的熵,以位元計算,近似獨立的信號其位元數可以相加。
- 罕見的指紋不等於被偽造的指紋,常見的指紋也不等於隱私安全——唯一性和連貫性是完全不同的兩個維度。
- 如果反指紋擴充功能本身就成了那個罕見、可辨識的信號,它反而會讓你的唯一性分數變得更差,而不是更好。
- 這個工具只能看到 JavaScript 在你瀏覽器內部能讀到的東西——它沒有辦法把這些資訊和你的連線實際來自哪個 IP 做比對。
「N 分之一」到底是什麼意思
Cover Your Tracks(EFF 早期 Panopticlick 研究計畫的後繼者)會蒐集一批瀏覽器可讀的信號——例如你的 User-Agent 字串、已安裝字型、Canvas 與 WebGL 輸出、螢幕幾何參數——然後檢查它最近的其他訪客當中,有多少人回報了和你完全相同的組合。如果最近這批樣本裡沒有人和你一樣,它就把你的指紋標記為「唯一」;如果有幾百人和你一樣,它就會回報這個群體規模。
同一個頁面上,這個數字旁邊還並排放著另外幾項結果,把它們和唯一性區分開,問題就解決了一半。除了指紋之外,Cover Your Tracks 還會跑幾項「通過/未通過」的追蹤器封鎖測試:模擬的追蹤廣告有沒有被擋下、隱形的追蹤信標有沒有被擋下、你的瀏覽器會不會對承諾遵守 Do Not Track 的網域放行;如果這些追蹤器載入了但 Cookie 被擋掉,則記為「部分防護」。每一項的具體做法,EFF 都寫在方法說明裡。這些測試評的是你的內容封鎖器,並不參與「N 分之一」的計算——後者只由指紋信號算出。把整個頁面當成一個綜合成績來讀,混亂就是從這裡開始的。
唯一性數字背後的數學是熵,以位元為單位:一個信號只有在它足夠「令人意外」時才有資訊量,而近似獨立的信號會以位元數相加的方式合併。EFF 自己寫的這篇底層數學科普短文,很值得一讀:資訊理論與隱私入門。關於單一信號的「位元」如何合併成一個數字,以及一個舒適的匿名集大小是什麼樣子,我們在瀏覽器指紋熵與匿名集詳解一文中講過完整的機制。
最容易讓人搞錯的地方是分母。「N 分之一」是相對於Cover Your Tracks 最近測量過的那批人群而言,不是相對於地球上的每一個瀏覽器。會主動去找指紋檢測工具來跑的人,本來就比一般網路使用者更在意隱私,而且這個工具的取樣視窗是有限的。你相對整個網際網路的真實罕見程度,任何單一工具的數字都無法告訴你——但作為一個相對信號,這個數字依然有用,而且就它實際測量的東西而言,它是誠實的。
常見的誤讀:罕見不等於可疑,常見不等於安全
最大的一個誤解,是把唯一性直接等同於對可信度的判決。無論從哪個方向看,這套邏輯都不成立。
一台完全原生的瀏覽器——不裝任何擴充功能、全部預設設定、字型就是作業系統內建的那套——依然可能因為一張高階小眾顯示卡、一種地區性鍵盤配置,或者一個不常見的螢幕解析度,而得到很高的唯一性分數,同時完全沒有被竄改過的痕跡。這台瀏覽器沒有任何東西是假的,它只是一個不太常見、但每一項都如實回報的組合。Cover Your Tracks 上的高唯一性,是一個隱私問題——你容易被跨網站辨識出來——而不是詐欺或偽造的信號。
這是和連貫性完全不同的一個維度:瀏覽器的各項信號是否彼此吻合、是否符合真實實作應有的行為。CreepJS 的測謊模型專門用來抓這類矛盾——例如一個聲稱是某瀏覽器的 User-Agent,配上一個只可能來自另一種瀏覽器的渲染簽章。一台瀏覽器可以同時既完全連貫又高度唯一,也可以看起來完全常見卻依然過不了連貫性檢查。《指紋測試工具為何對你眾說紛紜》更詳細地拆解了這種區別,還講到第三類——廠商匿名度綜合評分,它把唯一性、連貫性和不公開的啟發式規則混在一起,得出一個無法直接和前兩者比較的專有數字。
反過來的誤解同樣常見:以為一個「常見」的結果就代表自己不會被追蹤。共同的指紋只是堵掉了一條路徑——基於唯一性的辨識。Cookie、登入狀態和帳號層級追蹤根本不在乎你的 Canvas 雜湊值有多獨特,這些也完全不會出現在唯一性數字裡。
反直覺的結果:擴充功能可能讓你變得更糟
有一點會讓裝了隱私擴充功能、期待分數變好的人感到意外:分數有時反而會變差。
大多數反指紋擴充功能的做法,是偽造或隨機化幾項信號——一個假的 Canvas 雜湊值、一個被抖動過的 WebGL 參數、被封鎖的字型列舉。如果這種偽造行為本身可以被偵測出來——而它往往真的可以,因為只有一小部分訪客會裝這個特定擴充功能——那麼「這台瀏覽器的 Canvas API 明顯被改過」本身就會變成一個罕見、可辨識的信號。裝完一個擴充功能之後,你反而可能比裝之前更容易被指紋辨識,而不是更不容易。我們的《瀏覽器擴展的隱私風險》一文講了擴充功能在指紋之外帶來的更廣泛信任問題。
另一種思路是走「一致化」而不是「隨機化」:與其隱藏你的值,不如讓所有人的值都變得一樣。這正是 Firefox 的 privacy.resistFingerprinting(在 Tor 瀏覽器中始終開啟)背後的設計——具體它偽造了哪些內容、為什麼它直接針對人群規模而不是試圖偽裝某一個信號,可參見《resistFingerprinting 詳解》。它之所以有效,是因為有一個龐大且步調一致的人群共同使用它——人群本身就是防護。一個人單獨跑一套自己特有的隨機化方案,背後沒有這樣一個人群;這也正是為什麼同樣自稱「反指紋」的兩種做法,會落在唯一性分數的兩端。
分數看不見的地方:瀏覽器之外的一切
Cover Your Tracks 讀取的每一個信號,都來自你瀏覽器自身的 JavaScript 環境。這帶來了一個結構性的硬限制:它沒有辦法把瀏覽器聲稱的內容,和伺服器實際觀察到的連線情況做比對。
Intl.DateTimeFormat().resolvedOptions().timeZone 告訴腳本的,只是你的作業系統被設定成回報哪個時區——它對你的流量走了什麼路徑完全不知情。一台瀏覽器完全可以在透過另一個大陸的 VPN 出口節點連線的同時,回報一套完全合理、內部自洽的時區與語言組合,而一個純瀏覽器端的指紋檢測根本沒有管道注意到這一點。要抓住這一點,需要第二次、伺服器端的觀察:把連線實際來自的 IP,和瀏覽器自稱的內容做比對。《時區與語言洩漏:當瀏覽器與 IP 自相矛盾》完整講述了這套機制,而 BrowserInsight 的 VPN/代理檢測正是圍繞純瀏覽器端分數補不上的網路側這一半打造的。
這不是 Cover Your Tracks 的缺陷——它只是完全落在一個頁面自身 JavaScript 所能觀察到的範圍之外。了解這個邊界的存在很重要,這樣一個乾淨的唯一性結果,就不會被誤讀成你整套設定在其他方面也都健康。
看懂結果,而不是過度解讀
Cover Your Tracks 的結果,對它專門要回答的那一個問題非常有用:相對於該工具最近看到的樣本,你目前這套瀏覽器可讀信號組合有多容易被辨識出來。可以搭配執行 BrowserInsight 的指紋檢測,看看這個數字背後的各項信號被單獨攤開呈現——Canvas、WebGL、字型、navigator 屬性——而不是被壓縮成一個數字;再配合 VPN/代理檢測,取得任何純瀏覽器端工具都無法單獨完成的網路側比對。
常見問題
Cover Your Tracks 分數很高,是不是代表我的瀏覽器被偽造或入侵了?
不是。這只代表你這套信號組合,在該工具最近測過的瀏覽器中並不常見——這是一個關於可追蹤性的隱私問題,不是任何東西被偽造或損壞的信號。一台完全真實、未經修改的瀏覽器,只要擁有一套不常見的硬體或字型組合,同樣可能得到很高的唯一性分數。
Cover Your Tracks 顯示我的瀏覽器能封鎖追蹤器,唯一性分數是不是就沒問題了?
不是,這是兩組各自獨立的結果。追蹤器封鎖測試檢查的是:模擬的廣告、隱形信標,以及承諾遵守 Do Not Track 的網域,你的封鎖器是怎麼處理的。而「N 分之一」只由你的指紋信號算出。一台瀏覽器完全可能每一項封鎖測試都通過,同時依然高度唯一——因為擋掉一個追蹤器的請求,並不會改變你的 Canvas、字型和螢幕參數向那些確實載入成功的頁面回報什麼。
為什麼我裝了隱私擴充功能之後,唯一性分數反而變差了?
因為這個擴充功能的偽造或隨機化行為本身可能變成一種罕見、可被偵測出來的模式,而罕見正是這個分數所測量的東西。像 Firefox 的 resistFingerprinting 這類一致化防護之所以能避開這個問題,是因為它讓一大群人回報完全相同的值,而不是讓一台瀏覽器的值和所有人都不一樣。
同一台瀏覽器,兩次執行 Cover Your Tracks 會不會得到不同的數字?
會,因為「N 分之一」這個數字是相對於該工具最近測量過的那批人群而言,而這批樣本會隨時間變化。這個結果反映的是你相對於那個特定樣本的罕見程度,而不是一個固定不變的通用罕見度數字。
Cover Your Tracks 會偵測 VPN 或基於 IP 的追蹤嗎?
不會。它只讀取 JavaScript 在你瀏覽器內部能拿到的信號,沒有辦法看到伺服器實際觀察到的連線來源 IP。要做時區或語言與 IP 歸屬地的比對,需要像 VPN/代理檢測這樣的伺服器端工具。


