BLOGMarTechのトレンドや要素技術、各種サービスについて取り上げて紹介していきます。オープンソースTweet以前も触れた「Fingerprint2」によるブラウザフィンガープリンティング。先日の記事ではブラウザフィンガープリンティングの仕組みとその実現に利用している情報群を概観し、各ブラウザでの検証結果について紹介しましたが、今回は実装の詳細を見てみます。「FingerPrint2」でハッシュ値作成に使われている技術群のなかで興味深かったものを紹介していきます。インストールされているフォントリスト「JS/CSSによりインストールされているフォントを検知する」という技術、個人的に興味深かったのですがこれ自体は枯れた技術のようで、少なくとも2008年頃には開発やそれにまつわる議論が存在していたようです。なかでも有名なのは下記のJavaScriptライブラリです。(残念ながら本家サイトは閉じてしまったよう)大まかな処理の流れは下記の通りです。http://www.lalit.org/lab/javascript-css-font-detect/」というコメントの通り、上記ライブラリを参照して実装されています。Canvasフィンガープリント次はCanvasというJavaScriptを使って動的に図を描くために策定された仕様を使用したフィンガープリンティングです。CanvasはGIFやJPEG、Flashなどを利用せずに図を表示するものですが、実際にその図が表示される寸法や位置、色は、OSの環境によって細かく異なります。それがいかにブラウザやOSの環境によって異なるのかについては、35のブラウザ環境におけるCanvas画像の表示の違いを示した下記アニメーションがわかりやすいのではと思います。出典:https://browserleaks.com/canvas#how-does-it-workこれを利用しているのがCanvasフィンガープリントです。ここでは下記のような流れでハッシュ値を作成しています。Canvas上で様々なパターンの図を作成。文字のほかに、長方形や円弧、その塗りつぶしなど。toDataURL()関数を利用して1の図をそれらを画像バイナリファイルのbase64エンコード文字列に変換ここではピクセル単位の違いが文字列の差となって表れるため、その環境特有のデータとなる「FingerPrint2」の利用推奨オプションこのような興味深い技術から構成される「FingerPrint2」ですが、実用にはいくつか制約があります。OSやブラウザのバージョン自動更新により容易にUserAgentが変更になる最近のOSやブラウザは起動時にバックグラウンドでバージョンを自動で更新します。これにより、UserAgentのバージョン部分が変更になることによってフィンガープリントも変わってしまいます。するのが望ましいでしょう。ちなみにバージョンを削除してUserAgentのOS名とブラウザ名だけでハッシュ値を作成するカスタマイズ方法もGithub上で紹介されています。API」にはSSLページでしか利用できないという制約があるため、ユーザーがSSLページなのか非SSLページなのかでフィンガープリント値も変わってしまいます。するのが良いでしょう。(そして、これ一つとっても「FingerPrint2」を実用に乗せるための開発者達の苦労が伺えます...。)まとめ:「ポストGDPR」時代のオープンソースによるユーザートラッキング一つ一つの取得情報に、技術的にすごく難しいわけではない、だけどなかなか普通には思いつかないようなアイデアが詰まっているブラウザフィンガープリンティング。このようなユーザートラッキング手法がGDPRの施行アドブロックの使用普及ITPなどに見られるクッキーや端末ID利用の制限強化といった流れのなかで、オープンソースでたくさんの協力者間で知恵を出し合いながら開発・利用が進んでいるのは大変興味深い事象です。いつかウェブ上で個人を識別する方法として、CookieやLocalStorageなどに変わる、より便利でセキュアな手法となる日が来ることを期待しながら、引き続き注目していければと思います。»プロフィールデジタルマーケッターとしてキャリアを始めた後、ウェブエンジニアに転身し、コンバージョン率改善系のSaaSプロダクト開発・提供をリードエンジニアとして主導してきました。Technology)について紹介していきます。※ここで発信する情報は著者個人の見解に基づくものであり、所属企業・団体を代表するものではありません。(1)リンクこのブログについてスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。