Canvas Fingerprinting 初探 – 想逃也逃不掉的網站追蹤技術

4 / 25, 2015 HTML5 , JS , 網路安全

一直以來網站追蹤個別使用者的方法都是在 Cookie 中植入 UUID ,透過唯一不重複的 UUID ,就可以知道這個使用者是誰了,但是隨著隱私權高漲,開始有用戶會阻止 Cookie 儲存了,而且把這些資訊存在 Cookie 本身也有風險所在,因為可以輕易的被竄改或是移除,於是有人很奇葩的找到一個方法,可以在不用到 Cookie 的方法下追蹤用戶:使用 Canvas.

Canvas 是 HTML5 中用來繪圖的一個元素,為什麼可以這樣追蹤呢,但是事實就是可以,先來說古一下,這個構想是在 2012 年首度在 “Pixel Perfect: Fingerprinting Canvas in HTML5" 論文中被提出來的構想,並在隨後的論文 The Web Never Forgets 有更詳盡的解釋。

基本上 Canvas Fingerprinting 的概念就是因為 HTML5 中的 Canvas 這個元素在執行繪圖時,會受到瀏覽器(不同瀏覽器解析 Canvas 的方法不一樣)、瀏覽器設定(有無 3D 加速之類的)、瀏覽器版本、螢幕畫質、系統版本、硬體資訊等等因素而影響,因此即使同一段 Code ,用戶之間生出來的 Canvas 幾乎不可能完全一樣,於是我們就可以運用這種情況,來判斷使用者,而且更糟糕的,即使使用無痕式瀏覽器,因為系統資訊沒變,生出來的 Canvas 也是一樣的,所以理論上幾乎無法防範這種追蹤技術。

But,人生就是要有一個 But 才好玩,這種技術也不是完全無法防止啦,目前 Tor Browser 的作法是如果偵測到疑似在追蹤用戶的 Canvas 就一律返回空白元素,同時也有瀏覽器的外掛可以反追蹤了,但是即使如此,這種追蹤技術還是相當的恐怖。如果你覺得這個技術很新興還沒人使用,那可就錯囉,其實已經有不少網站正在在使用這種追蹤技術了,包含 AddThis 、白宮網站等等。

我們來做的 Demo

現在我們在 Chrome 的正常分頁和無痕式開起來,會發現兩個視窗生出來的 Base64 一模一樣,也就是說兩個 Canvas 是完全一樣的,也就是說即使用無痕式,網站仍然可以追蹤到你
canvas-fingerpint-1

我們來作個跨瀏覽器測試,使用 Chrome 和 Firefox,就會發現同樣的 Canvas 在瀏覽器之間生出來的 Base64 截然不同,也就是說兩個 Canvas 是不一樣的
canvas-fingerpint-2

Tor Browser 則會阻擋 Canvas 執行並詢問使用者是否允許
canvas-fingerpint-3

  • secret

    知道這些資訊幹嘛?

    • s3131212

      辨識和追蹤用戶啊

      • secret

        可以幹嘛?

        • s3131212

          追蹤你在做什麼,分析你的使用習慣之類的啊

  • fishlover2009

    然後我發現現在的網頁廣告很可怕…
    有次我在購物網站找有沒有賣冷凍鰻魚
    然後之後好幾天我瀏覽其他網頁
    所有的廣告本來內容是遊戲啊 電腦硬體啊
    全部都變成鰻魚XDDD
    (看的都餓了XD)

    • s3131212

      原來樓主喜歡鰻魚(筆記

  • fishlover2009

    蠻想知道有沒有人去做這個的碰撞機率估計?
    不知道遇到相同機率跟一般的hash(CRC32 MD5 SHA-256…)比起來大概是如何?

    如果是幾台剛出廠的同型電腦一開機就瀏覽這個網頁
    會不會遇上相同的機率就大幅提高??

    • s3131212

      我之前試過了,仍然不一樣,我也不知道為什麼

      • fishlover2009

        其實我有點在想
        在現實中我們去便利商店買東西的時候
        店員基本上也會記得你長什麼樣子/特徵之類的
        (尤其是你特別讓人印象深刻的時候)
        之後店員把這些事拿來聊天/po上網
        感覺上一般也認為這是沒什麼關係的事

        可是在網站上感覺就不一樣了
        大家會排斥網站去記得你的興趣/瀏覽記錄/點擊/表單等等資料
        而如果把這些取得的資料拿去跟別人分享更是被大眾所討厭的事

        是什麼原因造成這樣的差距的呢??(沉思)
        是因為人的記憶跟電腦記憶的精確度有很大差距的關係嗎?
        或是在現實中被收集和記錄的資訊
        與網路上被收及記錄的資訊間
        類型/隱私性/重要性…等等有所差別?

        • s3131212

          這問題就跟你會很大方的跟住你對面的人說你的生日,但是到了網路上卻不能讓世界的另一端的人知道你生日一樣,隱私權這種東西,之前有人說過或許是個「偽議題」啦
          不過在下我是認為,隱私權之所以伴隨著網路高漲,主要是因為你的街坊鄰居知道你是誰,到大家都知道你是誰,程度上的落差啦…

          • fishlover2009

            XD

          • Anon

            blah blah blah 5.7 bits of entropy blah blah blah = ineffective blah blah blah easily blocked blah blah blah