コンピュータサイエンスにおいて、フィンガープリントアルゴリズムとは、任意の大きさのデータ項目(コンピュータファイルなど)をはるかに短いビット文字列(フィンガープリント)にマッピングする手順であり、人間の指紋が実際上人々を一意に識別するのと同じように、実際上は元のデータを一意に識別します。 [1]このフィンガープリントは、データの重複排除のために使用される場合があります。これは、ファイルフィンガープリント、データフィンガープリント、または構造化データフィンガープリントとも呼ばれます。
フィンガープリントは、通常、大きなデータの比較や転送を避けるために使用されます。たとえば、Webブラウザやプロキシサーバーは、リモートファイルのフィンガープリントのみを取得し、以前に取得したコピーのフィンガープリントと比較することで、そのファイルが変更されたかどうかを効率的に確認できます。[2] [3] [4] [5] [6]
指紋関数は、暗号ハッシュ関数が不要な 大量のデータ ブロックを一意に識別するために使用される高性能ハッシュ関数と見なすことができます。
オーディオ フィンガープリントとビデオ フィンガープリントには特別なアルゴリズムが存在します。

プロパティ
仮想的なユニークさ
フィンガープリント アルゴリズムが本来の目的を果たすには、ファイルの ID をほぼ確実に取得できなければなりません。言い換えると、衝突(2 つのファイルが同じフィンガープリントを生成すること) の確率は、他の避けられない致命的なエラーの原因 (戦争や隕石によるシステムの破壊など) の確率と比較して無視できるほど小さくなければなりません (たとえば、10 −20以下)。
この要件は、チェックサム機能の要件と多少似ていますが、はるかに厳格です。偶発的なデータ破損や転送エラーを検出するには、エラーの統計モデルが与えられれば、元のファイルと破損したバージョンのチェックサムがほぼ確実に異なるだけで十分です。一般的な状況では、この目標は 16 ビットまたは 32 ビットのチェックサムで簡単に達成できます。対照的に、大規模なファイル システムで仮想的な一意性を保証するには、ファイル フィンガープリントの長さが少なくとも64 ビットである必要があります(誕生日攻撃を参照)。
上記の要件を証明する場合、ファイルはファイル間に複雑な依存関係を生み出す、非常に非ランダムなプロセスによって生成されることを考慮する必要があります。たとえば、一般的なビジネス ネットワークでは、通常、わずかな編集やその他のわずかな変更のみが異なるドキュメントのペアまたはクラスターが多数見つかります。優れたフィンガープリント アルゴリズムでは、このような「自然な」プロセスによって、必要なレベルの確実性で明確なフィンガープリントが生成されるようにする必要があります。
複利
コンピュータ ファイルは、連結 (アーカイブ ファイルなど) やシンボリック インクルード ( C プリプロセッサの#includeディレクティブなど) など、さまざまな方法で結合されることがよくあります。一部のフィンガープリント アルゴリズムでは、複合ファイルのフィンガープリントをその構成要素のフィンガープリントから計算できます。この「複合」プロパティは、プログラムの再コンパイルが必要な時期を検出するなど、一部のアプリケーションで役立つ場合があります。
アルゴリズム
ラビンのアルゴリズム
ラビンのフィンガープリントアルゴリズムは、このクラスのプロトタイプです。[7] このアルゴリズムは、実装が高速かつ簡単で、複合化が可能であり、衝突の確率を数学的に正確に分析します。つまり、2 つの文字列rとs が同じwビットのフィンガープリントを生成する確率は、max(| r |,| s |)/2 w -1を超えません。ここで、| r | はrのビット長を表します。このアルゴリズムでは、 wビットの内部「キー」を事前に選択する必要がありますが、この保証は、文字列rとs がキーを知らずに選択される 限り有効です。
ラビンの方法は悪意のある攻撃に対して安全ではありません。敵対的なエージェントは簡単にキーを発見し、それを使用して指紋を変更せずにファイルを変更できます。
暗号ハッシュ関数
主流の暗号グレードのハッシュ関数は、一般的に高品質のフィンガープリント関数として機能し、暗号解読者による厳しい精査を受けており、悪意のある攻撃に対して安全であると考えられているという利点があります。
MD5やSHAなどの暗号化ハッシュ アルゴリズムの欠点は、Rabin のフィンガープリント アルゴリズムよりも実行にかなり時間がかかることです。また、衝突確率の保証も証明されていません。これらのアルゴリズムの一部、特にMD5 は、安全なフィンガープリントには推奨されなくなりました。ただし、意図的なデータ改ざんが主な懸念事項ではないエラー チェックには依然として役立ちます。
知覚ハッシュ
アプリケーション例
NIST は、暗号化ハッシュ関数を使用してファイルのフィンガープリントを作成し、それらをソフトウェア製品にマッピングするソフトウェア リファレンス ライブラリである American National Software Reference Libraryを配布しています。 National Drug Intelligence Centerによって管理されているHashKeeperデータベースは、法執行機関のアプリケーション (押収されたディスク ドライブの内容を分析するなど) で使用するための、「安全であることがわかっている」コンピュータ ファイルと「安全であることがわかっている」コンピュータ ファイルのフィンガープリントのリポジトリです。
コンテンツの類似性検出
フィンガープリンティングは現在、コンテンツの類似性を検出するために最も広く適用されている手法である。この手法では、文書から複数の部分文字列(nグラム)のセットを選択して、文書の代表的なダイジェストを作成する。このセットはフィンガープリントを表し、その要素はミニューシャと呼ばれる。[10] [11]
疑わしい文書は、そのフィンガープリントを計算し、参照コレクションのすべての文書のフィンガープリントの事前計算されたインデックスを使用してミニューシャを照会することで、盗作がチェックされます。他の文書のものと一致するミニューシャは、共有されたテキストセグメントを示し、選択された類似性しきい値を超える場合は潜在的な盗作を示唆します。[12]計算リソースと時間はフィンガープリントの制限要因であるため、この方法では通常、計算を高速化し、インターネットなどの非常に大規模なコレクションでのチェックを可能にするために、ミニューシャのサブセットのみを比較します。[10]参照
参考文献
- ^ Broder, AZ (1993). 「ラビンのフィンガープリント法のいくつかの応用」.シーケンス II: 通信、セキュリティ、およびコンピュータサイエンスの手法. Springer. pp. 143–152. ISBN 0-387-97940-9。
- ^ 重複ファイルおよびほぼ重複ファイルの検出。米国特許 6658423 2003 年 12 月 2 日発行
- ^ AZ Broder (1998)。「文書の類似性と包含について」。議事録。SEQUENCES 1997の圧縮と複雑性 (カタログ番号 97TB100171) 。IEEEコンピュータ ソサエティ。pp. 21–27。CiteSeerX 10.1.1.24.779。doi :10.1109/SEQUEN.1997.666900。ISBN 978-0-8186-8132-5. S2CID 11748509。
- ^ Brin, S.および Davis, J. および Garcia-Molina, H. (1995) Copy Detection Mechanisms for Digital Documents Archived 2016-08-18 at the Wayback Machine . In: ACM International Conference on Management of Data (SIGMOD 1995)、1995 年 5 月 22 ~ 25 日、カリフォルニア州サンノゼ、stanford.edu より。2016 年 8 月 18 日。2019 年 11 月 1 日に閲覧。
- ^ Fan, L.; Cao, P.; Almeida, J.; Broder, A. (2000). 「Summary Cache: スケーラブルな広域 Web キャッシュ共有プロトコル」. IEEE/ACM Transactions on Networking . 8 (3): 281–293. doi :10.1109/90.851975.
- ^ Manber, U. (1994). 「大規模ファイル システムでの類似ファイルの検索」USENIX Winter Technical Conf Proceedings。
- ^ Rabin, MO (1981). 「ランダム多項式による指紋採取」ハーバード大学コンピューティング技術研究センターレポート TR-15-81。
- ^ バルダス、アト;クルーンマー、アンドレス。ラアノハ、リスト (2013)。 「キーレス署名のインフラストラクチャ: グローバル分散ハッシュツリーを構築する方法」。リースでは、ニールソン・H.ゴルマン、D. (編)。安全なITシステム。ノルドセック 2013。コンピューターサイエンスの講義ノート。 Vol. 8208. ベルリン、ハイデルベルク: Springer。土井:10.1007/978-3-642-41488-6_21。ISBN 978-3-642-41487-9. ISSN 0302-9743。
キーレス署名インフラストラクチャ (KSI) は、タイムスタンプとサーバーサポートのデジタル署名サービスを提供するグローバル分散システムです。グローバルな 1 秒あたりのハッシュ ツリーが作成され、そのルート ハッシュ値が公開されます。サービスの実際の実装で発生するサービス品質の問題について説明し、単一障害点を回避して、合理的で安定した遅延のサービスを保証するためのソリューションを紹介します。Guardtime AS は 5 年間 KSI インフラストラクチャを運用してきました。KSI インフラストラクチャの構築方法と、サービスの運用期間中に学んだ教訓をまとめます。
- ^ Klinger, Evan; Starkweather, David. 「pHash.org: オープンソースの知覚ハッシュライブラリ pHash のホームページ」pHash.org 。2018 年 7 月 5 日閲覧。
pHash は、GPLv3 ライセンスの下でリリースされたオープンソースのソフトウェアライブラリで、いくつかの知覚ハッシュアルゴリズムを実装し、独自のプログラムでそれらの関数を使用するための C 風 API を提供します。 pHash 自体は C++ で書かれています。
- ^ ab Hoad, Timothy; Zobel, Justin (2003)、「バージョン管理された文書と盗用された文書を識別する方法」(PDF)、Journal of the American Society for Information Science and Technology、54 (3): 203–215、CiteSeerX 10.1.1.18.2680、doi :10.1002/asi.10170、 2015年4月30日のオリジナル(PDF)からアーカイブ、 2014年10月14日取得
- ^ Stein, Benno (2005 年 7 月)、「Fuzzy-Fingerprints for Text-Based Information Retrieval」、I-KNOW '05 の議事録、第 5 回国際知識管理会議、グラーツ、オーストリア(PDF) 、Springer、Know-Center、pp. 572–579、2012年 4 月 2 日のオリジナル(PDF)からアーカイブ、2011 年10 月 7 日に取得
- ^ Brin, Sergey; Davis, James; Garcia-Molina, Hector (1995)、「デジタル文書のコピー検出メカニズム」、1995 ACM SIGMOD 国際データ管理会議議事録(PDF)、ACM、pp. 398–409、CiteSeerX 10.1.1.49.1567、doi :10.1145/223784.223855、ISBN 978-1-59593-060-6、S2CID 8652205、 2016年8月18日時点の オリジナル(PDF)からアーカイブ、 2011年10月7日閲覧。
