指紋 (公開鍵暗号)
SSHなどのシステムでは、ユーザーは指紋を手動で交換および確認を行い鍵認証を行うことができる。ユーザーが他のユーザーの指紋を承認すると、その指紋または公開鍵がそのユーザーの名前かアドレスと共にローカルに保存され、以降のそのユーザーとの通信では自動的に認証されるようになる。
X.509ベースの公開鍵基盤などのシステムでは、指紋は主にルート鍵の認証に使用される。これらのルート鍵は、ユーザー鍵を認証するために使用できる証明書を発行する。証明書をこのように使用することで、ユーザー間の指紋の検証を省くことができる。
PGPやGroove(英語版)などのシステムでは、指紋は以下のような用途で利用することができる。指紋は他のユーザーまたは認証局の鍵の認証に使うことができる。PGPではユーザーが互いに公開鍵に署名しあうことでWeb of trustを形成することができ、指紋はこの作業をより簡単に行うために使用されている (例えばキーサインパーティーなど)。
指紋のセキュリティに対する主な脅威は、攻撃者が被害者の公開鍵と指紋が一致する鍵ペアを作成する原像攻撃である。攻撃者は被害者に成り済まして被害者の公開鍵の代わりに自身の公開鍵を提示する可能性がある。
一部のシステムに対する二次的な脅威は衝突攻撃である。攻撃者は自身の指紋と一致する複数の鍵ペアを作成する。これによって攻撃者は自分が作成した署名の否認や、その他の混乱を起こす可能性がある。
原像攻撃を防ぐために、指紋に使用される暗号学的ハッシュ関数は、第二原像攻撃耐性を持つ必要がある。衝突攻撃が脅威である場合は、暗号学的ハッシュ関数は衝突耐性も持つべきである。より短くより有用な指紋のために暗号学的ハッシュ関数の出力を切り捨てることは許容できるが、この場合の指紋は力まかせ探索攻撃に対して暗号学的ハッシュ関数の特性を保持するのに十分な長さでなければならない。
実際には、現在使用されている殆どの指紋は、切り捨てられていないSHA-1またはMD5に基づいたものである。2019年時点ではSHA-1とMD5の強衝突耐性は突破されているが、原像攻撃耐性はある。従って、将来的にはSHA-2やSHA-3が利用されるようになる。しかし、これらの出力が長い暗号学的ハッシュ関数に基づく指紋は、SHA-1またはMD5に基づく指紋よりも切り捨てられる可能性が高くなる。
指紋の長さを最小限に抑える必要がある状況では、指紋の計算コストを増やすことで指紋のセキュリティを高めることができる。例えば、CGAでは「ハッシュ拡張」と呼ばれ、誰でも指紋を計算して0から始まるハッシュサムを検索する必要がある。これは高コストな操作だと見做されている。