Asial Blog

Recruit! Asialで一緒に働きませんか?

Canvas Fingerprintingというトラッキング技術

カテゴリ :
バックエンド(プログラミング)
タグ :
セキュリティ
JavaScript
HTML5
坂本です。

今回はユーザをトラッキングする技術の一つであるCanvas Fingerprintingについて取り上げたいと思います。

Canvas Fingerprintingとは



Canvas Fingerprintingはマシン固有の振る舞いをするHTML5 CanvasのAPIを使ったトラッキングID生成技術です。
このAPIはマシンのGPUやグラフィックドライバによって振る舞いが変わります。
そのため、APIを使ってレンダリングされたグラフィックスをトラッキングIDとして利用することでユーザの追跡を行うことができるわけです。

特徴



この技術の特徴としてはユーザがCanvas Fingerprintingの追跡から逃れることが難しい点です。
これまでのアクセスログ解析ツールではCookieに記録してあるトラッキングIDでユーザの動向を追跡するのが主流となっていました。
そのため、追跡されたくなければCookieを削除してしまえば良かったのです。

ところがCanvas FingerprintingはアクセスごとにCanvas FingerprintingでトラッキングIDを生成してサーバへ送るため特別なことをしないかぎりは追跡が続いてしまうわけです。

今のところ防ぐ手段は
・Javascriptを停止する。
・Tor BrowserなどのCanvas Fingerprinting対策されたブラウザを使用する。
しかありません。

Javascriptを停止してしまうと多くのWebサイトが正常に動作しなくなりますし
Chrome大好き人間からするとTor Browserを使用するには抵抗があります。

精度の問題



あまり弱点の無いトラッキング技術に思われそうです弱点もあります。
Canvas Fingerprintingで生成されたトラッキングIDはマシンによっては安定しないようなのです。
GPUやグラフィックドライバの実装によっては特定の端末では全て同じトラッキングIDが出力されたり
ブラウザの設定によっては同じマシンなのに違うトラッキングIDが出力されたりするようです。

実際に使用するためには



ちょっと難しそうな印象を受けると思いますが今では簡単にトラッキングIDを生成するコードがGithubで公開されています。
https://github.com/Valve/fingerprintjs

  1. $ bower install fingerprint

でインストールしてJavascriptに

  1. var fingerprint = new Fingerprint({canvas: true}).get();

これだけでトラッキングIDを取得できます。
※試しに利用して何かあっても責任は取れませんので注意してください。

本当に危ないのか?



今のところ追跡をされても問題はないと考えられていますが本当のところどうなのでしょう?
悪用されてしまうとしたらどのようなものになるか考えてみます。

ダミーアカウントの無意味化



アカウントを複数持って怪しいサイトではダミー情報を入力して試すなんてことがあると思います。
Canvas FingerprintingのトラッキングIDと個人情報をどこかから取得できれば個人は特定されてしまいます。
こんな事になればメールを入力していないのに怪しいサイトからスパムメールが飛んでくることになりかねません。

個人情報問い合わせサービスの出現



トラッキングIDをキーにして個人情報を取得できるWebサービスが出てきたらとんでもないことになりそうです。
名簿業者なんかが始めたら恐ろしいことになります。
この人はこっそりアダルトサイトを使ってるとか個人情報に付加されてしまったり。

というかすでに存在しているのかも・・・。

まとめ



Canvas Fingerprintingと英語で言われても今のところ危機感があまり無い気がします。
でも、よく考えるとFingerprintingとは日本語で指紋のことなんですね。
現実世界で例えるならレストランで食事をし終わった食器の指紋を店が記録してるくらいの気持ち悪さでしょうか。
取られたからってどうなるという訳ではないですが気持ちのいいものではありません。

この技術がどのように使用されていくのかは気にしていたほうがいいと思います。