Passkeys · FIDO2 / WebAuthn

パスキーとは

パスキー(Passkeys)は、パスワードの代わりにログインに使う「鍵」です。FIDO Allianceと W3C が標準化した FIDO2 / WebAuthn の仕組みにもとづき、指紋や顔、PIN で本人確認するだけでサインインできます。覚えるものも、入力するものもありません。

01

一言でいうと

利用者のデバイスの中で作られる、公開鍵暗号の鍵ペアです。

パスキーを登録すると、デバイス(スマートフォン、PC、セキュリティキー)の中で「秘密鍵」と「公開鍵」のペアが生成されます。秘密鍵はデバイスの外に出ず、サービス側には公開鍵だけが保存されます。ログインのたびに、サービスが送ってきた使い捨ての「チャレンジ」に秘密鍵で署名し、サービスは公開鍵でその署名を検証します。

利用者から見ると、「指紋や顔をかざす」「PINを入力する」だけ。パスワードのように覚える・入力する・使い回す、という行為そのものがなくなります。

秘密鍵はデバイスから出ないサーバにも、ネットワーク上にも、秘密鍵は存在しません。
鍵はサイトごとに別パスキーは登録したサービスのドメイン(オリジン)に紐づき、他のサイトでは使えません。
本人確認はデバイス側生体情報はデバイスの外に送られず、サービス側は受け取りません。

02

仕組み

登録と認証、2つの「セレモニー」で成り立ちます。

パスキーには「登録(Registration)」と「認証(Authentication)」の2つの流れがあります。どちらも、サービス側(RP: Relying Party)がチャレンジを発行し、デバイス側が本人確認のうえで応答し、サービス側が検証する、という構造は同じです。以下は Quado を使った場合の登場人物で描いています。

A登録(Registration)— パスキーを作る

  1. お客様のシステムQuado ログイン済みの利用者が「パスキーを登録」を選ぶと、お客様のシステムが Quado の登録APIを呼び出します。Quado は使い捨てのチャレンジと、受け入れる認証器の条件などを含む「登録オプション」を返します。
  2. お客様のシステムブラウザ / アプリ 登録オプションがブラウザに渡り、ブラウザは WebAuthn API(navigator.credentials.create())を呼び出します。
  3. ブラウザ / アプリ認証器 認証器(Touch ID / Face ID / Windows Hello / セキュリティキー など)が本人確認を行い、このサービス専用の鍵ペアを新しく生成します。秘密鍵は認証器の中に保存されます。
  4. 認証器ブラウザお客様のシステムQuado 公開鍵と、認証器の種類を示すアテステーション情報がサーバに戻ります。Quado がチャレンジ・オリジン・署名・アテステーションを検証し、公開鍵を利用者の識別子に紐づけて保存します。

結果:デバイスに秘密鍵、Quado に公開鍵。これでパスキーが使える状態になります。

B認証(Authentication)— パスキーでログインする

  1. お客様のシステムQuado 利用者が「パスキーでログイン」を選ぶと、お客様のシステムが Quado の認証APIを呼び出し、使い捨てのチャレンジを含む「認証オプション」を受け取ります。
  2. お客様のシステムブラウザ / アプリ ブラウザが WebAuthn API(navigator.credentials.get())を呼び出します。
  3. ブラウザ / アプリ認証器 認証器が本人確認(生体認証・PIN)を行い、このサービスの秘密鍵でチャレンジに署名します。秘密鍵そのものは外に出ません。
  4. 認証器ブラウザお客様のシステムQuado 署名がサーバに戻ります。Quado が登録済みの公開鍵で署名を検証し、チャレンジ・オリジン・署名カウンタも確認します。検証結果を受けて、お客様のシステムがログインを成立させます。

結果:ネットワークを流れるのは「チャレンジ」と「署名」だけ。盗まれても再利用できず、偽サイトでは有効な署名が作れません。

トップページのシステム構成で、お客様のシステムと Quado の位置づけを図解しています。

03

パスワードとの違い

パスワードパスキー
サーバが持つものパスワード(のハッシュ)。漏えいすると総当たりの対象に。公開鍵のみ。漏えいしてもなりすましには使えない。
フィッシング偽サイトに入力すれば盗まれる。鍵がオリジンに紐づくため、偽サイトでは有効な署名が作れない。
使い回し同じパスワードを複数サービスで使うと、1件の漏えいが連鎖する。サービスごとに別の鍵ペア。構造的に使い回しが起きない。
利用者の負担覚える・入力する・定期的に変える・忘れたらリセット。生体認証やPINで完了。覚えるものがない。
運用コストパスワードリセット対応、複雑性ポリシーの周知。リセット業務が激減。代わりにデバイス紛失時のリカバリー設計が必要。
多要素認証SMS や ワンタイムパスワードを追加して実現。「持っている(デバイス)」+「本人である(生体/PIN)」を1回の操作で満たす。

04

パスキーの種類

Synced passkeys

同期パスキー

iCloud キーチェーン、Google パスワードマネージャー、各種パスワードマネージャーなどを通じて、同じアカウントのデバイス間で秘密鍵が同期されるタイプ。機種変更やデバイス追加が容易で、一般消費者向けサービスに向きます。

Device-bound passkeys

デバイス固定パスキー

秘密鍵が1台のデバイス(セキュリティキー、PCのTPM、スマートフォンのセキュア領域など)から出ないタイプ。鍵がどこにあるかを厳密に管理できるため、金融や社内システムなど高い保証レベルが必要な場面に向きます。

このほか、スマートフォンに保存したパスキーで PC のブラウザにログインする「クロスデバイス認証」(QRコードを読み取り、Bluetooth で近接を確認する方式)も標準化されており、パスキーを持たないデバイスからも安全にログインできます。

どの種類を受け入れるかは、サービス側(RP)が登録時のオプションで制御できます。Quado は認証器から返るアテステーションや登録時の属性をもとに、ポリシーに応じた受け入れ判定を行えます。

05

用語の整理

FIDO(ファイド)
Fast IDentity Online。パスワードに依存しない認証の標準化を進める業界団体 FIDO Alliance、およびその規格群の総称。
FIDO2
FIDO Alliance の最新世代の規格セット。ブラウザ向けの WebAuthn と、認証器とクライアントの間の CTAP の2つで構成されます。
WebAuthn
Web Authentication。W3C が標準化したブラウザの API。navigator.credentials.create() / get() で認証器を呼び出します。主要ブラウザが対応済み。
CTAP
Client to Authenticator Protocol。PC やスマートフォンと、外部の認証器(セキュリティキーやスマートフォン)が USB / NFC / Bluetooth でやり取りするためのプロトコル。
パスキー(Passkey)
FIDO2 / WebAuthn の認証資格情報(クレデンシャル)を指す、利用者向けの呼び名。2022年以降、Apple・Google・Microsoft が共通の名称として採用しました。技術的には「発見可能なクレデンシャル(discoverable credential)」を指すことが多い用語です。
認証器(Authenticator)
鍵ペアを生成・保管し、本人確認と署名を行う装置やソフトウェア。デバイス内蔵の「プラットフォーム認証器」(Touch ID、Windows Hello など)と、外付けの「ローミング認証器」(セキュリティキーなど)があります。
RP(Relying Party)
パスキーで利用者を認証するサービス側のこと。本ページでは「お客様のシステム」。RP の識別子(RP ID)はドメイン名で、パスキーはこの RP ID に紐づきます。
UAF / U2F
FIDO2 以前の規格。UAF はモバイルアプリ向けのパスワードレス認証、U2F はセキュリティキーによる二要素認証。Quado は FIDO2 に加えてこの2つにも対応しています。

06

導入に必要なもの

パスキー対応は「ブラウザの API を呼ぶだけ」で終わりません。サービス側には、FIDO プロトコルを正しく処理するサーバが必要です。

  1. 1

    画面側:WebAuthn の呼び出し

    ログイン画面・登録画面から WebAuthn API を呼び、認証器とやり取りする部分。各ブラウザ・OS が標準で提供しています。

  2. 2

    サーバ側:FIDO サーバ

    チャレンジの発行と管理、アテステーション・署名の検証、公開鍵と署名カウンタの保管、認証器の受け入れポリシー。ここが最も実装・維持の難しい部分で、Quado が担う領域です。

  3. 3

    設計:導線とリカバリー

    既存の ID / パスワードとの併用、複数デバイスの登録、デバイス紛失時の復旧手段、対象とする認証器の範囲。技術よりも、ここが導入の成否を分けます。

Quado は FIDO Alliance の Universal Server 認定(FIDO2 / UAF / U2F)を取得した FIDO サーバパッケージで、お客様のオンプレミス環境や VPC 内に配置できます。既存システムからは登録・認証の REST API を呼び出すだけで、パスキーを導入できます。

07

よくある質問

デバイスを紛失したらログインできなくなりますか?

同期パスキーであれば、同じアカウントの別デバイスから引き続きログインできます。デバイス固定パスキーの場合は、あらかじめ複数のデバイス(または予備のセキュリティキー)を登録しておくか、既存の認証方式による復旧導線を用意しておきます。サービス設計の段階でリカバリー手段を決めておくことが重要です。

生体情報がサーバに送られることはありますか?

ありません。指紋や顔の照合はデバイスの中だけで完結し、サーバに送られるのは「本人確認が成功した」という結果を含む署名だけです。Quado が保持するのも利用者の識別子と公開鍵のみです。

どのブラウザ・OS で使えますか?

iOS / iPadOS / macOS(Safari など)、Android(Chrome など)、Windows(Edge、Chrome、Firefox)をはじめ、主要な環境が WebAuthn に対応しています。同期パスキーの対応範囲は OS とパスワードマネージャーによって異なるため、対象とする利用者の環境に合わせて設計します。

既存のパスワード認証と併用できますか?

できます。一般的には、まずパスワード認証でログインした利用者にパスキーを登録してもらい、次回以降はパスキーを優先する、という段階的な移行が行われます。Quado は REST API で動作するため、既存の認証基盤に後付けで組み合わせられます。

同期パスキーは安全ですか?

秘密鍵はエンドツーエンドで暗号化されて同期され、サービス側(RP)の観点では署名検証の仕組みは変わりません。一方で「鍵がクラウドアカウントに依存する」という性質があるため、より高い保証が必要な用途ではデバイス固定パスキーのみを受け入れる、といったポリシー制御が有効です。

Next step

パスキー導入を、
Quado で。