四つの名前から見える、パスワードを終わらせるための分業
Passkey対応という言葉を見かける機会が増えた。しかし説明を読み進めると、FIDO、FIDO2、WebAuthn、CTAPといった似た名前が次々に現れ、結局どれが技術で、どれが製品なのか分からなくなる。
この混乱を解く鍵は、四つを競合する認証方式として並べないことにある。これらは同じ階層の言葉ではない。標準を作る団体、その団体が推進する認証方式、Webサイトから認証機能を呼び出すAPI、そして利用者が実際に保存して使う認証資格情報が、一つのログイン体験の中に重なっている。
まずFIDOとは、Fast IDentity Onlineの略称であり、同時にFIDO Allianceという業界団体を指す言葉でもある。FIDO Allianceは2012年、強力な認証技術の相互運用性を高め、利用者が多数のパスワードを作成・記憶しなければならない問題を軽減するために設立された。したがってFIDOは、単一の暗号方式の商品名ではない。パスワードへの依存を減らすための仕様群と、その普及を進める標準化活動の総称に近い。
従来のパスワード認証では、利用者とサービス事業者が同じ秘密を共有する。利用者が入力したパスワードと、サービス側が保存している検証情報が対応していなければならない。そのため、偽サイトにパスワードを入力させるフィッシングや、漏えいした認証情報の使い回しが成立する。
FIDO認証は、この共有秘密の構造を公開鍵暗号へ置き換える。登録時に認証器が鍵の組を作り、秘密鍵は認証器側に保持され、サービスには公開鍵が登録される。ログイン時には、サービスから送られた要求に秘密鍵で署名し、サービスが公開鍵で確認する。サービスごとに異なる資格情報が作られ、生体情報や秘密鍵そのものがサービス側へ送られるわけではない。
ここで登場するのがWebAuthnである。WebAuthnは「Web Authentication」の略で、Webアプリケーションが公開鍵資格情報を作成し、認証に利用するための標準APIである。策定主体はW3Cであり、2019年に正式なWeb標準となった。現在の仕様は、Webサイトがブラウザを介して認証器へ登録や認証を要求し、特定のRelying Party、つまりサービス提供者に結び付いた公開鍵資格情報を扱う仕組みを定義している。
WebAuthnは、Webサイトとブラウザの間だけの話ではない。実際に鍵を保管し、署名する装置は認証器と呼ばれる。スマートフォンやPCに内蔵された認証機能もあれば、USBやNFCで接続するセキュリティキーもある。
ブラウザやOSと、外部の認証器がどのように通信するかを定めるのがCTAP、Client to Authenticator Protocolである。CTAPはFIDO Allianceが策定し、USB、NFC、Bluetoothなどを通じて、クライアントと認証器が要求や応答を交換する方法を定めている。WebAuthnがWebサービスから認証を呼び出す側の標準であるのに対し、CTAPは端末と認証器を接続する側の標準だと捉えると分かりやすい。
そしてFIDO2とは、主としてWebAuthnとCTAPを組み合わせた認証基盤を指す。WebAuthnだけではWebアプリケーションから認証器を利用するAPIの説明にとどまり、CTAPだけでは認証器との通信手順にとどまる。その二つが組み合わさることで、Webサービス、ブラウザやOS、認証器が相互運用できる。FIDO Alliance自身も、FIDO2をWebAuthnとCTAPによって構成される仕様群として説明している。
ではPasskeyとは何か。
PasskeyはFIDO2やWebAuthnとは別の暗号方式ではない。WebAuthnで扱われる「発見可能な資格情報」を、利用者向けのログイン手段として表現した名称である。利用者はパスワードの文字列を覚えて入力する代わりに、端末や資格情報管理サービスに保存されたPasskeyを、生体認証や端末のPINなどで解除して使用する。passkeys.devは、PasskeyをFIDO2/WebAuthnのdiscoverable credentialを利用者向けに表現する一般名詞と定義している。
Passkeyには、複数端末間で同期できるものと、特定の端末やセキュリティキーに固定されるものがある。したがって「Passkeyはすべてクラウド同期される」と考えるのも正確ではない。同期型Passkeyは機種変更や複数端末での利用を容易にし、デバイス固定型Passkeyは鍵を特定の認証器から移動させない運用に向く。
四つの言葉を整理すると、FIDOはパスワードへの依存を減らすための標準化活動と仕様群、FIDO2はWeb認証を実現するWebAuthnとCTAPを中心とした仕組み、WebAuthnはWebサイトが公開鍵資格情報を利用するためのW3C標準API、Passkeyはその仕組みの上で利用者が作成・保存・使用する認証資格情報の呼び名となる。
この違いが分かると、「あるサービスがPasskeyに対応した」というニュースの意味も変わって見える。それは新しい暗号方式を発明したという話ではない。すでに標準化されたWebAuthnとFIDOの仕組みを、自社のアカウント登録、端末間同期、ログイン画面、回復手続きへ組み込んだという実装上の出来事である。
同様に、ブラウザがWebAuthnの新機能へ対応したという話と、OSがPasskeyの保存・移行方法を改善したという話も同じではない。前者はWebアプリケーションと認証機能をつなぐ標準の実装に関わり、後者は資格情報を利用者がどのように保有し、別の端末で再利用するかという運用に関わる。
この四つの名前が並存しているのは、認証技術が無秩序に分裂したからではない。業界団体、Web標準、端末通信、利用者体験という異なる仕事が分担されているからである。
パスワードを終わらせることは、一つの優秀な暗号方式を作れば完了する問題ではない。Webサイト、ブラウザ、OS、端末、認証器、資格情報管理サービスが、共通の約束に従って動かなければならない。FIDO、FIDO2、WebAuthn、Passkeyという四つの言葉は、その長い分業の異なる断面を表している。