公開鍵暗号において、指紋 (しもん) またはフィンガープリント () とは、公開鍵を識別するための短いバイト列である。指紋は公開鍵に暗号学的ハッシュ関数を適用することで作成される。指紋はこれを作成するのに使用した鍵よりも短いので、鍵の管理作業を単純化することができる。マイクロソフトのソフトウェアでは、拇印 (ぼいん、) と呼ばれている。
指紋の作成.
指紋は通常、以下の手順で作成される。
鍵認証での指紋の使用.
インターネットなどの信頼できない手段によって公開鍵を入手した場合、入手した者はその公開鍵を検証することを望む。指紋は短いバイト列なので、これよりも遥かに長い公開鍵を伝えることが困難な信頼できる手段でも伝えることができ、公開鍵の検証を行うことができる。
例えば、アリスがボブの公開鍵を検証したい場合、彼女は電話や直接会うなどの方法でボブと連絡をして、ボブの公開鍵の指紋を読み上げてもらうか、指紋が書かれた紙を渡してもらう。アリスはこの信頼できる指紋が入手した公開鍵のものと一致するかを確認することができる。このように、値を交換して比較することは、値が長い公開鍵ではなく短い指紋である場合には簡単なことである。
指紋は鍵認証データの交換または保管を自動化する場合にも役に立つ。例えば、公開鍵のサイズが問題となる鍵認証データをプロトコルを介して送信するかデータベースに格納する必要がある場合、指紋の交換または保管がより現実的な解決策になる可能性がある。
更に、ユーザーがダウンロードしたばかりの公開鍵を第三者による検索エンジンで確実に見つかるように、指紋を検索エンジンで照会することができる。検索エンジンが適切なサイトにリンクされた指紋を参照して結果を返した場合、中間者攻撃のような攻撃によって、鍵が改竄されていないことにより確信することができる。
指紋の用例.
指紋のセキュリティ.
指紋のセキュリティに対する主な脅威は、攻撃者が被害者の公開鍵と指紋が一致する鍵ペアを作成する原像攻撃である。攻撃者は被害者に成り済まして被害者の公開鍵の代わりに自身の公開鍵を提示する可能性がある。
一部のシステムに対する二次的な脅威は衝突攻撃である。攻撃者は自身の指紋と一致する複数の鍵ペアを作成する。これによって攻撃者は自分が作成した署名の否認や、その他の混乱を起こす可能性がある。