パスキーはどのような技術に基づいて、なぜ安全なのでしょうか。この記事では、パスキーの背後にある暗号技術とセキュリティの仕組みを、わかりやすく解説します。
公開鍵暗号方式の基本
パスキーの中核技術は「公開鍵暗号方式」です。従来のパスワード認証では、ユーザーとサーバーが同じ「秘密の文字列(パスワード)」を共有していました。サーバーに保存されたパスワードが漏洩すると、すべてのセキュリティが崩壊します。
一方、公開鍵暗号方式では、「公開鍵」と「秘密鍵」という対になった鍵を使います。秘密鍵はユーザーのデバイス上だけで生成・保存され、外部に出ることはありません。公開鍵はサーバーに登録されますが、公開鍵から秘密鍵を推測することは事実上不可能です。この仕組みにより、サーバーが攻撃を受けても秘密鍵が漏洩するリスクはありません。
FIDO2とWebAuthnの標準化
パスキーは、FIDO Allianceが策定した「FIDO2」という標準規格に準拠しています。FIDO2の中核をなすのが「WebAuthn(Web Authentication)」で、これはW3Cによって標準化されたWeb APIです。
WebAuthnのプロトコルでは、以下の流れで認証が行われます。サービスのWebサイトがブラウザに対して「本人確認をしてください」と要求する。ブラウザがユーザーのデバイスに保存されたパスキー(秘密鍵)を使って署名を生成する。生成された署名をサーバーに送信する。サーバーは事前に登録された公開鍵を使って署名を検証し、認証が成功する。
フィッシング耐性のメカニズム
パスキーがフィッシング攻撃に強い理由は、認証情報が「発行元(Webサイトのドメイン)」に紐づいているからです。パスキーは作成時に、どのドメインのためのものかが記録されます。例えば、example.com用に作成されたパスキーは、example.co.jpやgoogle.comの偽サイトでは使えません。ブラウザが自動的にドメインを検証するため、ユーザーが騙されて偽サイトで認証しようとしても、パスキーは機能しません。
生体認証とデバイスロックの連携
パスキーを使うには、デバイスのロックを解除するための生体認証(Face IDや指紋認証)またはデバイスのPINが必要です。これにより、デバイスを紛失しても、第三者がパスキーを使ってログインすることはできません。
生体認証の精度は年々向上しており、最新のスマートフォンでは他人の指紋や顔で認証が通る確率は100万分の1以下です。AppleのTouch IDの誤認識率は5万分の1、Face IDは100万分の1と言われています。
ゼロ知識証明との関係
パスキーは「ゼロ知識証明」の概念を応用したものと言えます。ゼロ知識証明とは、秘密の情報そのものを相手に教えずに、自分がその秘密を知っていることを証明する方法です。パスキーの場合、秘密鍵そのものをサーバーに送信する代わりに、秘密鍵で署名したデータだけを送信します。サーバーは公開鍵で署名を検証することで「正しい秘密鍵を持っているユーザーであること」を確認できます。
まとめ
パスキーの安全性は、公開鍵暗号方式とFIDO2標準規格に裏打ちされています。パスワードのように「覚える情報」ではなく、「持っているデバイスとその本人であること」を証明する方式に移行することで、より安全で便利な認証が実現しているのです。

