web-dev-qa-db-ja.com

テキストドキュメントの指紋を保護する

目的はハッシュと同じです。機密ドキュメントのセットが与えられたら、それらを処理して、ソルトハッシュ/ bcryptのような安全なものを保存したいと思います。後で新しいドキュメントが提供されたときに、それがデータベースにすでに存在するかどうかを確認したいと思います。

リークモニタリングのようなもの。

問題は、この新しいドキュメントが元のドキュメントのわずかに変更されたバージョンである場合、システムはそれらが非常に類似していると言う必要があることです。

このタスクを解決するために、最初にテキストを正規化(句読点、大文字と小文字、切り捨てなどを削除)してから、ファジー重複検索(ほぼ重複とシングルリング)を実行することを検討しました。

とにかく、それが安全かどうかはわかりません。たとえば、シングルウィンドウがかなり小さい場合、ブルートフォースが発生する可能性があります。ウィンドウの長さが3文字と50文字の場合、125kの組み合わせが得られ、衝突はほとんどありません。塩漬けも役に立ちません。攻撃者はアルゴリズムを知っており、ブルートフォーシングを「xyz」ではなく「xyzsalt」として編成し、125kの「xyz」のすべての組み合わせを試すことができます。このアプローチのセキュリティで他に何が間違っている可能性があるか誰が知っていますか?

だから、それが私が尋ねたい理由です:あいまいマッチング/ほぼ重複した検索のためのいくつかの安全なアルゴリズムはありますか?

3
Mixo123

ハッシュは確かにあなたが探しているものの反対です(入力の変更は完全に異なるハッシュにつながります)。代わりに 知覚ハッシュ を試すことができます。

ハッシュ/ソルトの試行に関する補足として:

  • なぜ塩漬けが必要なのですか?誰かが元のドキュメントを再構築できるようなものではありません(パスワードを再構築してハッシュと比較するのと同様です->したがって、ソルトが必要です)。
  • なぜbcrypt?これは遅いアルゴリズム(パスワードに最適)ですが、速度が必要な場合は、潜在的な攻撃者の速度を落とす必要はありません(繰り返しますが、誰もドキュメントを再構築してハッシュし、ハッシュと比較することはありません)
2
WoJ