デバイスフィンガープリントまたはマシンフィンガープリントとは、識別を目的としてリモートコンピューティングデバイスのソフトウェアとハードウェアに関して収集される情報のことです。この情報は通常、フィンガープリンティングアルゴリズムを用いて簡潔な識別子に変換されます。最も一般的なタイプの1つはブラウザフィンガープリントであり、これはデバイスのWebブラウザとのやり取りによって収集される情報に依存します。 [ 1 ]: 1
デバイスフィンガープリントは、ブラウザで永続的な Cookie (およびゾンビ Cookie ) を読み取れない、または保存できない場合、クライアントIP アドレスが隠されている場合、または同じデバイスで別のブラウザに切り替えた場合でも、個々のデバイスを完全にまたは部分的に識別するために使用できます。[ 2 ] これにより、サービスプロバイダは、ID 盗難やクレジットカード詐欺を検出して防止できる可能性がありますが、[ 3 ] : 299 [ 4 ] [ 5 ] [ 6 ]個人が追跡を回避しようとしている場合でも、個人の閲覧履歴の長期記録を収集し、ターゲット広告[ 7 ] : 821 [ 8 ] : 9またはターゲット攻撃[ 9 ] : 8 [ 10 ] : 547 を配信することも可能になり、インターネットのプライバシー擁護者にとって大きな懸念となっています。[ 11 ]
基本的なウェブブラウザの設定情報は、実際の人間のウェブトラフィックを測定し、さまざまな形式のクリック詐欺を排除するために、ウェブ分析サービスによって長年収集されてきました。1990年代後半に導入されて以来、クライアントサイドスクリプティングは徐々に多様な情報の収集を可能にし、一部のコンピュータセキュリティ専門家は、2003年にはすでにウェブブラウザが提供する一括パラメータ抽出の容易さについて不満を述べ始めていました。[ 12 ]
2005年、カリフォルニア大学サンディエゴ校の研究者らは、 TCPタイムスタンプを使用してデバイスのクロックスキューを推定し、その結果としてデバイスのハードウェアフィンガープリントをリモートで取得できることを示した。 [ 13 ]
2010 年、電子フロンティア財団(EFF) は、訪問者がブラウザのフィンガープリントをテストできる Web サイトを立ち上げました。[ 14 ] 470,161 個のフィンガープリントのサンプルを収集した後、ブラウザのフィンガープリンティングから少なくとも 18.1 ビットのエントロピーが可能であることを確認しました。 [ 15 ]しかし、これはキャンバスのフィンガープリンティングが進歩する前のことであり、キャンバスのフィンガープリンティングはさらに 5.7 ビットを追加すると主張しています。EFF が運営するツール Panopticlick は、フィンガープリントの 83.6% がユニークであり、Flash または Java の場合は 94.2% がユニークであることを示しました。[ 16 ]
2012年、カリフォルニア大学サンディエゴ校の研究者であるキートン・モウリーとホバフ・シャチャムは、 HTML5のcanvas要素を使用してWebブラウザのデジタル指紋を作成する方法を示した。 [ 17 ] [ 18 ]
2013年には、 Alexaの上位10,000サイトのうち少なくとも0.4%が、いくつかの既知の第三者によって提供されたフィンガープリンティングスクリプトを使用していることが判明した。[ 10 ]: 546
2014年には、Alexaのトップ10,000サイトのうち5.5%が、合計20のドメインによって提供されるキャンバスフィンガープリンティングスクリプトを使用していることが判明しました。スクリプトの圧倒的大多数(95%)はAddThisによって提供されており、AddThisはその年の1月に一部のクライアントの知らないうちにキャンバスフィンガープリンティングの使用を開始しました。[ 19 ]: 678 [ 20 ] [ 17 ] [ 21 ] [ 4 ]
2015年に、ブラウザフィンガープリンティングから保護する機能がFirefoxバージョン41で導入されましたが[ 22 ] 、それ以来、デフォルトでは有効にならず、実験段階のままになっています[ 23 ] 。 同年、Disconnect Mobileが公開したリストにあるサードパーティドメインからのスクリプトをブロックすることで、プライベートブラウジング中のトラッキングから保護するEnhanced Tracking Protectionという機能がFirefoxバージョン42で導入されました[ 24 ]。
2016年にAmIUniqueが行った調査によると、指紋の89.4%は固有のものであり、指紋を識別するための属性は絶えず進化している。[ 16 ]
WWDC 2018 でAppleはmacOS MojaveのSafariが「ユーザーがWebを閲覧する際に簡略化されたシステム情報を表示し、システム構成に基づいて追跡されることを防ぐ」と発表した。 [ 25 ] 2018年の調査「Hiding in the Crowd」では、指紋の33.6%しか固有ではないことが判明した。モバイルデバイスではその差はさらに大きく、以前のデータでは81%だったのに対し、モバイル指紋の固有性は18.5%だった。この調査では、デスクトップコンピュータの指紋は主に属性の組み合わせによって固有であるのに対し、モバイルデバイスは固有の値を持つ属性を提示することも示された。[ 16 ]
2019年、Firefoxバージョン69以降、拡張トラッキング保護は、プライベートブラウジング以外のブラウジング時にもすべてのユーザーに対してデフォルトで有効になりました。[ 26 ]この機能は、2015年にプライベートブラウジングを保護するために初めて導入され、その後2018年にオプトイン機能として標準ブラウジングに拡張されました。
デバイス指紋認証の概念の動機は、人間の指紋が持つ法医学的価値に由来する。
時間の経過とともにデバイスを指紋で一意に識別するためには、指紋は十分に多様で十分に安定している必要があります。実際には、多様性も安定性も完全に達成することはできず、一方を改善すると他方に悪影響を与える傾向があります。たとえば、追加のブラウザ設定をブラウザの指紋に統合すると、通常は多様性は増加しますが、ユーザーがその設定を変更するとブラウザの指紋も変更されるため、安定性は低下します。[ 1 ] : 11ただし、ユーザーの反対がない場合、指紋はさまざまなデータに基づいて作成できるため、識別は難しくありません。たとえば、調査によると、ユーザーの56.86%が固有の拡張子を持ち、人口の34%は使用されているフォントの43文字で識別できます。[ 16 ]
ある程度の不安定性は、部分的に異なっていても、おそらく同じデバイスに属すると思われる指紋をリンクすることで補償できます。これは、単純なルールベースのリンクアルゴリズム(たとえば、ブラウザのバージョンのみが異なり、それが時間とともに増加する場合、それらをリンクする)または機械学習アルゴリズムによって実現できます。[ 27 ]
エントロピーは、多様性を測定するいくつかの方法の一つである。
デバイスにローカルにインストールされたアプリケーションは、デバイスのソフトウェアとハードウェアに関する膨大な情報を収集することが許可されており、多くの場合、MACアドレスやマシンハードウェアに割り当てられたシリアル番号などの固有識別子が含まれます。実際、デジタル著作権管理を採用しているプログラムは、まさにこの情報を使用してデバイスを一意に識別します。
ローカルアプリケーションは、識別情報を収集して共有するように設計されていなくても、意図せずして、やり取りするリモートの相手に識別情報を漏洩してしまう可能性があります。最も顕著な例はウェブブラウザで、リモートでの識別を可能にするほど多様で安定した情報を漏洩することが証明されています(§ ブラウザフィンガープリントを参照)。
アプリケーション層より下位の層においても、データ伝送に使用されるプロトコルを活用することで、多様かつ安定した情報を収集できます。OSIモデルの層別に分類すると、フィンガープリンティングに利用できるプロトコルの例は以下のとおりです。
パッシブフィンガープリンティング技術では、フィンガープリンターはターゲットデバイスから発信されたトラフィックを観測するだけでよいのに対し、アクティブフィンガープリンティング技術では、フィンガープリンターはターゲットデバイスへの接続を開始する必要がある。ターゲットデバイスが開始した接続を介してターゲットデバイスとやり取りする必要がある技術は、セミパッシブと呼ばれることもある。[ 13 ]
ウェブブラウザから多様で安定した大量の情報を収集できるようになったのは、1990年代後半に導入されたクライアントサイドスクリプト言語のおかげです。現在では、FingerprintJS、ImprintJS、ClientJSなどのオープンソースのブラウザフィンガープリンティングライブラリがいくつかあり、FingerprintJSが最も頻繁に更新され、ImprintJSとClientJSを大きく凌駕しています。[ 31 ]
ブラウザは、User-Agent リクエスト ヘッダーに、名前とバージョン、および互換性情報を提供します。[ 32 ] [ 33 ]これはクライアントが自由に提供する情報であるため、その身元を評価する際には信頼すべきではありません。代わりに、ブラウザの種類とバージョンは、その動作の癖を観察することによって推測できます。たとえば、HTTP ヘッダー フィールドの順序と数は、各ブラウザ ファミリーに固有です[ 34 ] : 257 [ 35 ] : 357また、最も重要なのは、各ブラウザ ファミリーとバージョンは、HTML5 [ 9 ] : 1 [ 34 ] : 257 、 CSS [ 36 ] : 58 [ 34 ] : 256、およびJavaScript [ 10 ] : 547,549-50 [ 37 ] : 2 [ 38 ] [ 39 ]の実装が異なります。このような違いは、JavaScript を使用してリモートでテストできます。パーサーの動作をハミング距離で比較することで、大多数のブラウザバージョンを効果的に識別し、区別できることが示されている。[ 9 ]: 6
ブラウザ固有の拡張機能やプラグインの組み合わせをフィンガープリントに直接追加できます。[ 10 ] : 545拡張機能は、他のブラウザ属性の動作方法も変更し、ユーザーのフィンガープリントにさらなる複雑さを加える可能性があります。[ 40 ] : 954 [ 41 ] : 688 [ 8 ] : 1131 [ 42 ] : 108 Adobe FlashおよびJavaプラグインは、廃止される前はユーザー情報にアクセスするために広く使用されていました。[ 35 ] : 3 [ 10 ] : 553 [ 39 ]
ユーザーエージェントは、電話の機種などのシステムハードウェア情報をHTTPヘッダーに提供する場合があります。[ 42 ] : 107 [ 43 ] : 111 JavaScriptを使用してCSSメディアクエリの結果を観察することで、ユーザーのオペレーティングシステム、画面サイズ、画面の向き、および表示アスペクト比に関するプロパティも取得できます。[ 36 ] : 59-60
フィンガープリンティングツールは、JavaScript と CSS セレクタを使用してリストを照会することで、ブラウザが以前に訪問したサイトをリスト内で特定することができました:visited。[ 44 ] : 5通常、50 の人気 Web サイトのリストがあれば、独自のユーザー履歴プロファイルを生成するのに十分であり、ユーザーの興味に関する情報も提供できました。[ 44 ] : 7,14しかし、その後ブラウザはこのリスクを軽減しました。[ 45 ]
文字の境界ボックスは、アンチエイリアシングとフォントヒンティングの設定に基づいてブラウザごとに異なり、JavaScriptで測定できます。[ 46 ]: 108
キャンバスフィンガープリンティングは、 WebGLがブラウザで 2D および 3D グラフィックスをレンダリングするために使用するHTML5の canvas 要素[ 47 ]を利用して、インストールされているグラフィックス ドライバ、グラフィックス カード、またはグラフィックス処理ユニット(GPU) に関する識別情報を取得します。キャンバスベースの技術は、インストールされているフォントを識別するためにも使用できます。[ 43 ] : 110さらに、ユーザーが GPU を持っていない場合は、代わりにCPU情報をフィンガープリンティングに提供できます。
キャンバスフィンガープリンティングスクリプトは、まず指定されたフォント、サイズ、背景色のテキストを描画します。次に、ユーザーのブラウザによってレンダリングされたテキストの画像が、ToDataURL Canvas API メソッドによって復元されます。ハッシュ化されたテキストエンコードデータがユーザーのフィンガープリントになります。[ 19 ] [ 18 ]: 2-3,6キャンバスフィンガープリンティング手法は、5.7 ビットのエントロピーを生成することが示されています。この手法はユーザーの GPU に関する情報を取得するため、得られる情報エントロピーは、画面解像度や JavaScript 機能などの従来のブラウザフィンガープリント手法のエントロピーとは「直交」しています。[ 18 ]
ベンチマークテストは、さまざまな単純なアルゴリズムや暗号化アルゴリズムの実行に要するCPU時間を比較することで、ユーザーのCPUがAES-NIまたはIntel Turbo Boostを使用しているかどうかを判断するために使用できます。[ 48 ] : 588
また、デバイスの実際のバッテリー状態に基づいて短期的なフィンガープリントを構築するBattery API [ 49 ] : 256や、ユーザーのエントロピーに基づいて波形を生成するために呼び出すことができるOscillatorNode [ 50 ] : 1399などの専用APIも使用できます。
デバイスのハードウェアID(デバイスのベンダーによって指定された暗号学的ハッシュ関数)も照会してフィンガープリントを作成することができる。[ 43 ]: 109,114
ブラウザフィンガープリンティングの影響を軽減し、不要な追跡を防ぐことでユーザーのプライバシーを向上させるためのさまざまなアプローチが存在するが、現代のウェブブラウザの豊富な機能を維持しながらフィンガープリンティングを完全に防ぐことができる決定的なアプローチは存在しない。

ユーザーは、ブラウザのフォント、デバイスID、キャンバス要素のレンダリング、WebGL情報、ローカルIPアドレスなどの識別情報を最小限に抑えるWebブラウザを選択することで、フィンガープリンティングの可能性を低減しようとする可能性がある。[ 43 ]: 117
2017年、Microsoft Edgeは最もフィンガープリンティングされやすいブラウザとみなされ、次いでFirefox、Google Chrome、Internet Explorer、Safariが続く。[ 43 ] : 114モバイルブラウザでは、Google ChromeとOpera Miniが最もフィンガープリンティングされやすく、次いでモバイル版Firefox、モバイル版Edge、モバイル版Safariが続く。[ 43 ] : 115
Tor Browserは、canvasやWebGL APIなどのフィンガープリンティング可能な機能を無効にし、フィンガープリンティングの試みをユーザーに通知します。[ 19 ]
多様性を減らすため、Torブラウザはウェブページに表示されるウィンドウの幅と高さを任意のピクセル数にすることを許可せず、いくつかの特定の値のみを許可します。その結果、ウェブページはウィンドウボックス化され、ブラウザウィンドウよりわずかに小さいスペースを埋めることになります。[ 51 ]
2020年当時、Chromeはフィンガープリンティングをブロックしていなかったが、Brave、Firefox、Torはブロックしていた。[ 52 ]
フィンガープリンティングに公開される情報の一部(例えばユーザーエージェント)を偽装すると、多様性が低下する可能性があるが、[ 53 ]: 13偽装された情報が、実際のブラウザ情報よりも、そのような戦略を使用していない他のすべてのユーザーとユーザーをより明確に区別できる場合は、その逆の効果も得られる可能性がある。[ 10 ]: 552
各サイト訪問時に情報を異なる方法で偽装すること、例えば、少量のランダムノイズでサウンドとキャンバスのレンダリングを乱すことで、安定性を低下させることができます。[ 7 ]: 820、823この技術は、 2020年にBraveブラウザに採用されました。[ 54 ]
サードパーティ ドメインから提供されるクライアント サイド スクリプト、場合によってはファースト パーティ ドメインも盲目的にブロックすると (たとえば、JavaScript を無効にしたりNoScriptを使用したりすることによって)、Web サイトが使用できなくなることがあります。推奨されるアプローチは、トラッキング ドメインのブラック リストに載っている (ほとんどの広告ブロッカーが採用しているアプローチ) か、過去の観測からトラッキングの意図が推測される ( Privacy Badgerが採用しているアプローチ) かのいずれかの理由で、ユーザーを追跡していると思われるサードパーティ ドメインのみをブロックすることです。[ 55 ] [ 20 ] [ 56 ] [ 57 ]
同じマシン上の異なるブラウザは通常、異なるフィンガープリントを持つが、両方のブラウザがフィンガープリンティングから保護されていない場合、2つのフィンガープリントは同じマシンから発信されたものと識別される可能性がある。[ 58 ]