前編では「広い意味での」パスキー、元々WebAuthnと呼ばれていた仕組みの紹介を行いました。今回は「狭い意味での」パスキーについて説明していこうと思います。下の図の「?」の部分の話になります。
(クリックで拡大します)
■秘密の隠し場所と、それに伴う問題点
ここまで紹介してきたパスキー(WebAuthn)による認証は、ネットワーク上に認証要素(秘密情報)は流れず、認証情報(結果)のみをやり取りするようになっています。では一切の秘密が無いか、というとそういうわけでもなく、認証情報を作る際に使用される「秘密鍵」とよばれるデータが存在します。秘密鍵は認証を行うためにずっと保存しておく必要があるのですが、ではどこに保存されているのか、これまで説明してきた認証方法の保存場所を図に書き入れてみます。
(クリックで拡大します)
デバイス内の場合やスマートフォン認証の場合は、その端末のTPM内に秘密情報が保存されます。また、セキュリティキーについてはそれ自体がTPMのようなものですので、そのままキー内に保存されます。細かい違いはありますが、これら全ての共通点として、全て「所持」の要素である点、「中に保存してある秘密鍵は取り出せない(*1)」という点があります。
ここまでの話で勘が鋭い方は察して頂けたのではないかと思いますが、この仕組みだと、デバイスの交換、買い替えをする際に認証の再登録が必要になります。再登録の方法としては、例えば現在認証情報を登録してあるデバイスでログイン等を行い、新しいデバイスの認証情報を追加する、といった手段が考えられます。しかし、外付けのセキュリティキーであればともかく、デバイスにTPMが内蔵されているPCやスマートフォンだと、旧デバイスでのログインと新デバイスでの登録が同じユーザーである、という証明をするのに手間が掛かります(*2)。また、一般的にスマートフォンの買い替えなどは旧デバイスを引き取ってもらって新デバイスを入手するケースも多く、同時に旧デバイスと新デバイスを持っている期間が無い場合もあり得ます。
(*1)TPM(またはセキュリティキー)は、登録の際、内部で「秘密鍵」とその秘密鍵で作成された情報かどうかの検証に使う「公開鍵」を作り、「公開鍵」のみをデータとして返します。認証の際も、内部で秘密鍵を用いて認証情報のみを返すため、秘密鍵はTPMから取り出される事がありません。
(*2)Hybrid認証が使える状態であれば、新デバイスから旧デバイスを使ったHybrid認証を行って一度ログインし、その状態で新デバイスの認証登録をする、といった形が考えられます。Hybrid認証が使えない場合は、例えば旧デバイスでログインしてから新デバイス登録用の一時URLを発行して新デバイスで登録する、といった方法などが考えられるかと思われます。
■秘密鍵のデバイス間での共有(マルチデバイスFIDOクレデンシャル)
ここまでの話で出てきた方法は、いずれも秘密鍵が何らかの物理的なデバイスの中にある、というものでした。そして、その共通した問題として、デバイスの交換をする際に再登録の手間が必要になる、という問題がある事がわかりました。
弊社も所属しているFIDOアライアンスでは「世界中のパスワードへの過度な依存を減らすことに貢献する」というミッションを掲げていますが、パスワードに代わる強固な認証の仕組みを作っても、その利便性が低いと一般の利用者は導入してくれません。そこで考え出されたのが、「マルチデバイスFIDOクレデンシャル(MDC)」という、秘密鍵をデバイス間で共有する仕組みです。これが、前編から話し続けていた「狭い意味での」パスキーの話となります。
(クリックで拡大します)
上図のように、MDCではインターネットのサーバー上に秘密鍵が保存されます。認証要求があった場合、他の例だとTPMやセキュリティキーが行っていた認証情報の出力を、クラウド上のサーバーが同じように行う事になります。このクラウド上の仕組みを提供する事業者の事を「パスキープロバイダ」と呼んでいます。
このような形にする事で、デバイスの交換や買い替えの際も複雑な手間を掛けずに、新しいデバイスで今までの認証が利用可能になります。現在、MDCについては、主要なOSを提供しているApple、Google、Microsoftが精力的に実装を進めています。一方で、新しい技術であるがゆえに課題も多く見られる点があり、FIDOアライアンスを中心に様々な議論が進められています。
■「狭い意味での」パスキーを試す(マルチデバイスFIDOクレデンシャル)
MDCの実装については、Apple製品が一歩先行しています。macとiPadを使って、実際にMDCを試してみたいと思います。どちらも現在最新のOSへとアップデート済みで、同一のAppleIDでログインしています。ブラウザはどちらもSafariを利用します。
macのSafariでwebauthn.ioにアクセスし、PINの時と同様にユーザー名を入力して「Register」をクリックすると、Touch IDが要求されます。(この部分は機種や設定状況によって要求される認証は異なると思われます)
画面の指示に従って指紋認証を行うと、登録が完了します。
次に、iPadのSafariで同じようにwebauthn.ioのページを開きます。
実は入力したユーザー名も覚えておいてくれるので、何も入力せず「Authenticate」をタップします。
画面の指示に従ってTouch IDで指紋認証を行います。
この通り、mac側で設定した認証情報が、デバイスの垣根を超えてiPadの方でも利用可能になっています。
■まとめ
ここまで、「パスキー」についての解説を行ってきましたが、如何だったでしょうか。「パスワード」から「パスキー」への進化の形を、ある程度お伝えできたのではないかと思います。パスキーは発表からあまり間も立っていないため、OS・ブラウザ・WEBアプリの対応が必要だったり、わかりやすいユーザーインタフェースの模索や仕様の細部検討など、課題もまだまだあります。ですが、目指す「パスワードの無い世界」がすぐそこまで来ている、と実感しています。この流れを加速して、より安全で使いやすい認証を目指していければと思います。
■余談:「パスキー」という言葉の定義について
現時点では、「パスキー」という言葉が正確に何を指し示すか、という事は明確にはなっていません。今回のブログも、私が入手している情報の範囲で極力正しいと思われるものを取捨選択して説明しています。この一連のブログ記事では、「パスキー」とは、広義としては「WebAuthn」「FIDO認証」の事、狭義としては「マルチデバイスFIDOクレデンシャル(MDC)」の事、というスタンスを取っています。WEB上では、Hybrid認証の部分を指して「パスキー」と呼称している例もよく見かけます。
この表記の定義について、FIDOアライアンスは2022年3月に出したホワイトペーパーで、以下のように記述しています。
FIDO 認証資格情報がマルチデバイス対応資格情報である場合、一部の企業は製品の実装において FIDO 認証資格情報を「パスキー」と呼んでいます。
なお、本書において「passkey」という用語を使用する場合は、第三者が使用していることを例示するものであり、FIDO アライアンスまたはその仕様の正式な用語ではありません。
つまり、FIDOアライアンスとしてはパスキー、Passkey、Passkeysといった用語は定義していない、という事になります。(もしも以降の発表などで明確な定義をしている、といった話がありましたらお教えください)
私のような技術者の立ち位置では定義が曖昧な言葉は好まないのですが、一方で、多くのコンピュータ技術者ではない方々に「パスワードに取って代わる新しい認証」という事を伝えるための言葉として、「パスキー」という言葉はとてもわかりやすいものだと思っています。この「パスキー」という言葉と共に、世界中にFIDO認証技術が広まる事を期待していますし、弊社もその一助となれれば、と思います。
■参考リンク
[実験用サイト]
WebAuthn.io
[FIDOアライアンス]
ホワイトペーパー:マルチデバイス対応FIDO認証資格情報(FIDOアライアンス)
[各社見解]
Google Password Manager のパスキーのセキュリティ(Google)
パスキーのセキュリティについて(Apple)