Passkey
パスワードとの比較
PasskeyはFIDOアライアンスとW3C(The World Wide Web Consortium)が共同で策定した規格で、パスワードレス認証を実現するためのものです。
基本の考え方としては、パスワードの代わりに公開鍵暗号方式を使うということです。 公開鍵暗号方式は、秘密鍵と公開鍵の2つの鍵を使います。秘密鍵は自分だけが持っているもので、公開鍵は他人に教えても良いものです。公開鍵で暗号化したデータは、対応する秘密鍵でしか復号できません。
パスキーを作成する際には、ユーザーのデバイスで秘密鍵と公開鍵を作成します。秘密鍵は、ユーザーのデバイスに安全に保存され、公開鍵はサービス側に保存されます。ユーザーがサービスにログインする際、サービスはユーザーのデバイスにチャレンジ(ランダムなデータ)を送ります。ユーザーのデバイスは、そのチャレンジを秘密鍵で署名し、署名をサービスに返します。サービスは、ユーザーの公開鍵を使って署名を検証し、正当なユーザーであることを確認します。
公開鍵は、秘密鍵が正しいかどうかを確認することしかできないため、サービス側に保存されている公開鍵が漏洩しても、攻撃者がユーザーのアカウントにアクセスすることはできません。
秘密鍵は常にユーザーのデバイス内にしか存在しないため、攻撃者がサービス側のデータベースを攻撃しても、ユーザーの秘密鍵を盗むことはできません。
秘密鍵
パスキーの秘密鍵は、ユーザーのデバイスに安全に保存されます。秘密鍵は、デバイスのSecure EnclaveやTPMなどのハードウェアセキュリティモジュールに格納されることが多く、モジュールの外からアクセスすることはできません。これにより、鍵の安全性が担保されています。TPMを例に挙げると、署名が行われる際には、OSからTPMに対してTPMコマンドを使って署名をしてください、という指令を送ります。TPMはそのデータを受け取って、署名を実施して、署名済みのデータをOSに返します。このように、データを受け取ってから返すまでの処理はセキュリティモジュール内で完結しているため、外部から干渉されることなく安全に署名を行うことができます。
公開鍵
パスキーの公開鍵は、パスキーを使用してログインをするサイトやサービスのサーバーに保存されます。
パスキーの利点
- セキュリティの向上: パスワードはしばしば弱く、使い回されることが多いため、攻撃者にとって狙いやすいターゲットとなります。パスキーは公開鍵暗号方式を使用するため、パスワード漏洩のリスクが大幅に減少します。
- ユーザー体験の向上: ユーザーは複雑なパスワードを覚える必要がなく、デバイスの生体認証(指紋認証や顔認証など)を使って簡単にログインできます。
- フィッシング攻撃の防止: パスキーは特定のデバイスに紐づいているため、攻撃者がユーザーのパスキーを盗んでも、別のデバイスからは使用できません。
パスキーの課題
- 対応デバイスの必要性: パスキーを利用するには、対応するデバイスやブラウザが必要です。古いデバイスやソフトウェアでは利用できない場合があります。
- バックアップとリカバリー: デバイスを紛失した場合、パスキーを復元する方法が必要です。多くのサービスは、アカウント回復のための代替手段を提供していますが、これがユーザーにとって煩雑になることがあります。
- 普及の遅れ: パスキーはまだ新しい技術であり、すべてのサービスが対応しているわけではありません。普及には時間がかかる可能性があります。
まとめ
パスキーは、パスワードに代わる安全で便利な認証方法として注目されています。セキュリティの向上とユーザー体験の改善が期待されますが、対応デバイスの必要性やバックアップの課題も存在します。今後、より多くのサービスがパスキーに対応することで、インターネット上の認証方法が大きく変わる可能性があります。
参考資料
Windows Hello - Windows apps - Microsoft Learn
パスキーとは?概要・セキュリティ・実装方法 - passkeys.com
トラステッド プラットフォーム モジュール技術概要 - Microsoft Learn
Passkeys - Google for Developers\