web-dev-qa-db-ja.com

人間の拇印を暗号でハッシュする方法はありますか?

サムプリントリーダーで一貫して再現できる形式に、人間のサムプリントを暗号化してハッシュする方法はありますか?

拇印ハッシュのデータベースを作成できると仮定すると、私の意図は、そのハッシュを「知っているもの」でソルト処理して、拇印データベースが認証以外の目的で使用されないようにすることです。

質問

  • ハッシュ(人間の指紋)を「ソルト」して認証に使用することは妥当ですか?

  • デバイス間の正確性を保証する技術要件(解像度、指ごとのデータポイントなど)はありますか?

5

@Xanderが指摘するように、非常によく似た質問が尋ねられました 昨日 。確かに:

  • フィンガープリントからキーを導出できる場合は、そのキーをハッシュしてハッシュ値を取得できます。
  • フィンガープリントをハッシュできる場合は、ハッシュ値をキーとして使用できます。

だから彼らは本当に同じ質問です。そして答えは:人々はそれに取り組んでいます、それはまだうまくいっていませんが、何年にもわたって改善するかもしれません。


ただし、重要な点を指摘しておきます。「知っているもの」は、「攻撃者が知らないもの」でもあるという理由だけで認証に価値があります。権力を与えるのは秘密です。

他のバイオメトリック測定と同様に、指紋は実際には機密性には影響しません(多くのシステムがそのように使用しようとしますが)。指紋の重要な特徴は、指紋が人間に付着していることです。人間がリーダーで自分の指を使用すると、彼は自分の指紋を使用せざるを得なくなります。確かに、それが最新の指紋リーダーの革新です。検出しているものが本当に名目上の所有者の体にまだ付いている人間の指であることを確認しようとするシステムです。

機密性は、セキュリティ上の指紋の大部分ではありません。あなたの指紋は秘密ではありません:あなたはそれらを残しますeverywhere、あなたの車、あなたが通過するすべてのドアハンドル、エレベーターのボタン、バーで使用するすべてのガラス...指紋をキー(または、どのように表示したいかに関係なく、ハッシュ値)に変換し、そのキーをこれらのプリントのいずれかのコピーからオフラインで再構築できます。ここには秘密はほとんどありません。

要約すると:指紋をキーに確実に変換できたとしても、それをとして使用することはお勧めできません。シークレットキー。ただし、indexingキーとして役立ちます。セキュリティではなく、パフォーマンスのためです。

11
Thomas Pornin

暗号化ハッシュアルゴリズムは、入力のわずかな違いでも異なるダイジェスト値を生成するのに優れていると考えてください。入力の1ビットの変更でさえ、完全に異なるハッシュ値を生成する一連の変更を引き起こします。プリイメージ耐性は、暗号化ハッシュアルゴリズムに必要な特性です。

指紋を見てみましょう。指紋の問題の1つは、識別マーク間の関係が読み取り値間で一定であることが保証されていないことです。体のさまざまなレベルの液体が原因で指がわずかに腫れたり、センサーエレメント間でわずかにずれたり、汚れが付着したりする可能性があり、それはエレメントの違いに相当する十分な差である可能性があります読みの間。 1ビットの変更でも、完全に異なるハッシュが出力されることを覚えておいてください。したがって、正確な画像の読み取りや印刷物のスナップショットを直接ハッシュすることはできません。

ただし、画像は処理できます。すべてのプリントには、特定可能なポイントである「ランドマーク」のセットがあります。分岐は2つの尾根が合流する場所であり、ロッドは尾根が終わる場所であり、島は短い小さな尾根などです。これらのランドマークは識別でき、相互に関連して測定できます。たとえば、拇印をグリッドに配置する場合、各セルに含まれるランドマークで各セルを識別することができます。

問題はグリッドを揃えることになります。印刷物が読み取られるたびにグリッドが同じようにレイアウトされない場合、同じハッシュを生成しません。

プリントには、アーチ、ループ、渦巻きの3つの基本的な形しかありません。 (たとえば)すべてのArchタイプの印刷の特徴を使用して、3つの必要な参照点を作成し、グリッドを整列させることができるように思えます。次に、それを処理して、考えられるすべてのランドマークを識別します。しかし、それから何ですか?すべてのランドマークが毎回同じセルに到達したという保証はありますか?グリッド線の周りにファジーゾーンを設定しようとする場合、どのランドマークがファジーゾーンにほとんど(またはそこから)落ちないのかをどのようにして知ることができますか?

(参照点の中心からラジアルを使用しようとする場合も同じ懸念が当てはまります。ベクトルにどれだけの許容誤差を組み込んでいますか?

一番下の行は、印刷物が再現可能な方法で正確に並べられることは決してないため、毎回ハッシュから正確に同じ値を取得するのが難しい場合があることです。

では、ハッシュを使用してプリントを安全に保つにはどうすればよいでしょうか。ユーザーが最初に印刷を登録すると、同じグリッドベースのスキームを使用してそれを分析し、ハッシュを生成します。次に、ファジーゾーンに該当する可能性のあるランドマークを分析し、考えられる順列ごとに個別のハッシュを計算します。 1人のユーザーの印刷の潜在的な価値をすべて表す、大量のハッシュをすばやく構築します。後で、ユーザーのプリントが読み取られてハッシュ化されると、ファイルのハッシュの完全なセットでそれを検索し、ユーザーを識別します。

2
John Deters

John Detersの回答は、私の問題の理解とほぼ一致しています。

唯一の違いは、最終的な観察(「可能な各順列」の派生テンプレートで「ファジーゾーン」の登録時に配列全体を作成するための巧妙なブルートフォーススキーム)が、残りの部分で識別された困難と一致していないように見えることです。投稿:元の未加工画像の単一ビットの最も小さな変化は無関係なハッシュを作成し、パターン分析からテンプレートにエンコードすると、この影響を軽減します(生体認証形状グリッド情報のデータのビット数は基礎となるより高い解像度のビットマップ画像)、一致するハッシュを生成するための正確なビットごとの同一の2番目の読み取りを探しています。 1つだけではなく多くの場所がある場合でも、問題を回避できない場合があります。

開始画像および将来の可能性のある画像のファミリーの「すべての可能な順列」の数が増加するにつれて、これは特定の解像度の回答スペースにあるすべての値の完全なセットよりもはるかに小さいにもかかわらず、少なくとも2つの問題:

1)他の人の可能な一致の完全なセットが私たち自身の非常に大きなセットと重複するため、誤検出の可能性が増加します。

2)これを「ハッシュ」問題として扱うことの価値は後退します-おそらく、同じ人物の写真をハッシュするよりも完全に扱いにくいですが、ハッシュされたバージョンの識別子が実用的で信頼できる問題のクラスにはないようです。

0
user127327