WebAuthn/Passkeyでの生体認証の対応状況

2024年2月現在でのブラウザとサイトごとのログイン認証の対応状況をまとめた。  
私が関心のあるサイトや用意できる環境のみしか調べられていないのはご容赦願いたい。

## WebAuthn/Passkey の対応状況

### macOS での対応状況

| | Safari | 一部の Chromium<br>ブラウザ<br>(下記参照) | 他の Chromium<br>ブラウザ | Firefox |
|:--|:--:|:--:|:--:|:--:|
| **プラットフォーム依存の認証** | ● | ● | - | ● |
| Touch ID / Apple Watch<br>を使った認証 | ● | ● | - | ● |
| iCloud キーチェーンへの対応 | ● | ● | - | ● |
| **セキュリティキーによる認証** | ● | ● | ● | ● |
| **QRコード読み取りによる認証** | ● | ● | ● | ● |
| **パスワードマネージャ** | ● | ● | ● | ● |

* プラットフォーム依存の認証はデバイスの指紋認証や顔認証、 PIN などを使用した認証であり、デバイス間で同期されないとしている。ただ Safari の iCloud Passkey のようにデバイス間で同期される場合もある。
* セキュリティキー認証では、 YubiKey などのような物理キーを使って行う認証。認証時に物理キーを接続し、キー本体のボタンを押すことで認証される。場合によってはキーの PIN コードが要求されることがある。
* QR コードの読み取りによる認証では、モバイルデバイスを使用して認証を行う方法である。認証時に画面に表示されるQRコードをモバイルデバイスで読み取り、モバイルデバイスに保存された認証情報をもとに認証を行う。
	- ブラウザとモバイルデバイス双方でネットワーク接続し、 Bluetooth がオンになっている必要がある。
	- iPhone / iPad のカメラで読み取ると iCloud に保存される。
	- 認証キーの追加の方法
		- Chromium系の場合、各サイトのアカウント設定からセキュリティキーを追加しようとすると「セキュリティキー」か「他のデバイス」かの選択ができるようになるので、そこで「他のデバイス」を選択してQRコードを読み取れば登録できる。
		- Chromium系ブラウザでQRコードを表示させて iPhone / iPad で読み取れば、同じ iCloud アカウントを使用する全デバイスの Safari で iCloud Passkeys を介してログインできるようになるので、 Chromium 系ブラウザを介すれば Safari で Touch ID によるログインができるようになる。
* パスワードマネージャに認証情報を保存して、認証を代行させる方法もある。
	* 例えば 1Password などがこれに対応している
	* パスワードマネージャのブラウザ拡張機能をインストールしておくと、　Web サイトへのログイン時にブラウザ固有の認証インターフェースを遮って、ログイン情報をパスワードマネージャに保存するか聞いてくる。

#### Safari

* プラットフォーム依存の認証
	* iCloud キーチェーンを使用している場合、 iCloud Passkeys が有効になり、デバイス間で同期される。 iBridge 非搭載 Intel Mac も含め、最新の macOS で対応する。認証には Touch ID / ログインパスワードを使用する。

#### Chromium

* Touch ID や Apple Watch を使った認証により、 iCloud キーチェーンに認証情報を保存する機能を有するブラウザは次の通り。 Safari と認証情報は共有される。
	- [Google Chrome](https://encrypted.google.com/chrome/)
	- [Brave](https://brave.com/ja/)
* Touch ID や Apple Watch を使った認証により、ブラウザが独自に認証情報を保持する対応するブラウザは次の通り。この場合、 Chromium ブラウザ間では認証情報は共有されない。
	- [Google Chrome](https://encrypted.google.com/chrome/)
	- [Microsoft Edge](https://www.microsoft.com/ja-jp/edge)
	- [Brave](https://brave.com/ja/)
	- [Vivaldi](https://vivaldi.com/ja/)
	- [Opera](https://www.opera.com/ja)
	- [Opera GX](https://www.opera.com/ja/gx)
	- [Opera Crypto](https://www.opera.com/ja/crypto)
	- [Arc](https://arc.net)

#### Firefox

* iCloud キーチェーンに認証情報を共有することができる。

### iOS での対応状況

* Safari でも他のブラウザでも、 Touch ID / Face ID を使った認証や、セキュリティキーを使った認証、QRコード読み取りによる認証に対応している
* iCloud Passkeys にも対応している

### Windows での対応状況

* 各ブラウザが認証を Windows セキュリティに丸投げしているようで、基本的にどのブラウザも対応している。
	* 1つのブラウザでアカウントに登録すれば他のブラウザでも使える。
* 但し、 Firefox からだとなぜか登録に失敗するので、登録は他のブラウザを使おう。
* Windows 11 の場合はTPMがあるから仮想マシンの場合も含め基本的に使えるのかな。ログインパスワードか Windows Hello を使うようだ。

### その他の対応状況
Android や Chrome OS 、 一般の Linux デバイスなどは確認していないのでよくわからない。わかる方がいたら教えてください

## 対応状況

* 確認した限りでは以下に挙げるサイトは生体認証、セキュリティー認証に対応している
* ワンタイムパスワード認証とか、ソーシャルログインとか、独自のログインシステムを採用しているとか、生体認証やセキュリティー認証には対応していないサイトは掲載しない
* Chromium じゃないと対応しないサイトがある (表中 ▲ で表示)

| サイト | TOTP | 物理キー | 生体認証 | QR読み取り |
|:--|:--:|:--:|:--:|:--:|
| [GitHub](https://github.com/settings/two_factor_authentication/configure) | ● | ● | ● | ● |
| [GitLab](https://gitlab.com/-/profile/two_factor_auth) | ● | ● | ● | ● |
| [Dropbox](https://www.dropbox.com/account/security) | ● | ● | ● | ● |
| [WordPress](https://wordpress.com/me/security/two-step) | ● | ● | ● | ● |
| [Mastodon](https://mastodon.social/settings/two_factor_authentication_methods) | ● | ● | ● | ● |
| [Google](http://g.co/passkeys) | ● | ● | ● | ● |
| [Vivaldi](https://vivaldi.net/wp-login.php?redirect_to=https%3A%2F%2Fvivaldi.net%2F) | ● | ● | ● | ● |
| [Pastery](https://www.pastery.net/account/) | ● | ● | ● | ● |
| [Microsoft](https://account.live.com/proofs/manage/additional) | ● | ▲ | ▲ | ▲ |
| [NVIDIA](https://profile.nvgs.nvidia.com/security) | ● | ● | ● | ● |
| [Proton](https://account.proton.me/u/0/mail/account-password#two-fa) | ● | ● | ● | ● |
| [Adobe](https://account.adobe.com/security) | ● | ● | ● | ● |
| [Amazon.co.jp](https://www.amazon.co.jp/ax/claim/webauthn/enroll) | ● | ● | ● | ● |
| [Amazon.com](https://www.amazon.com/ax/claim/webauthn/enroll) | ● | ● | ● | ● |
| [AWS Console](https://ap-northeast-1.console.aws.amazon.com/iam/home?region=ap-northeast-1#/security_credentials) | ● | ● | - | ● |
| [Facebook](https://www.facebook.com/security/2fac/settings) | ● | ● | - | ● |
| [Twitter](https://twitter.com/settings/account/login_verification) | ● | ● | - | ● |
| [Bitbucket](https://bitbucket.org/account/settings/two-step-verification/manage) | ● | ● | - | ● |
| [1Password](https://my.1password.com/profile/2fa) | ● | ● | - | ● |
| [Bitwarden](https://vault.bitwarden.com/#/settings/two-factor) | ● | ● | ● | ● |
| Keeper | ● | ● | - | - |
| [LastPass](https://lastpass.com/) | ● | ※ | ※ | ※ |
| [Nord](https://my.nordaccount.com/account-settings/account-security/) | ● | ● | - | ● |
| [Zoho](https://accounts.zoho.com/home#multiTFA/modes) | ● | ● | - | - |
| [Yahoo!](https://login.yahoo.com/myaccount/security?intl=jp&lang=ja-jp) | ● | ● | - | ● |
| [Aol](https://login.aol.com/account/security?intl=jp&lang=ja-jp) | ● | ● | - | ● |
| [MoneyForward](https://id.moneyforward.com/webauthn/credentials) | ● | - | ● | - |
| [Nintendo](https://accounts.nintendo.com/passkey) | ● | - | ● | - |
| [Yahoo! JAPAN](https://account.edit.yahoo.co.jp/manage_auth_device) | - | - | ● | ● |
| [PayPal](https://www.paypal.com/myaccount/security/) | - | - | ● | - |
| [dアカウント](https://id.smt.docomo.ne.jp/ast/tra/id/conts/setwebauthn/top/) | - | - | ● | - |
| [au ONE](https://id.auone.jp/security/fido_info.html) | - | - | ● | - |

- GitHub について
	* パスキーとセキュリティキーの両方があるが、同じキーを両方に登録することはできない。
	* セキュリティキーとして登録した既存のキーはパスキーに移動できるが、逆はできない。
	* パスワード入力の代わりとしてパスキー認証を使用できる。
- Microsoft について
	* Windows PC でなくとも「Windows PC の使用」から生体認証を登録可能
	* 「セキュリティキー認証」にはQRコードの読み取りによる認証も含んでいる
	* なぜか Safari では生体認証やセキュリティキーが使用できない
		* どうやらユーザーエージェントによって対応の可否を決めているようで、 Firefox や Chromium にUAを偽装すれば登録/使用ができる。OSを Windows に偽装する必要はない。
		* 上表で ▲ を付けたのはこれが理由。
		* 最近は Microsoft Authenticator がデフォルトになっているようなので、 Chromium でも使えないことがある。
	* 通常は Microsoft アカウントのページからセットアップすることで生体認証が使えるようになるが、 Microsoft アカウントに登録済みの Windows PC は自動的に登録されているようだ。
- Google について
	* 2023年5月あたりから「パスキー」に対応した。それまではセキュリティキーやTOTP、 Google Smart Lock のみであったが、指紋認証などに対応している。
	* パスキーはパスワードの代わりとなる。
	* 従来の2段階認証はTOTPとセキュリティキーに対応している。
	* パスキーの名称は20文字が上限である。
- Proton にに浮いて
	* 登録できる生体認証やセキュリティキーの数は10個が上限
- Adobe について
	* 登録したキーの名称を変更することはできず、登録した際のブラウザのUAでキーの名称が勝手に決められてしまう。つまり、同じ名前のキーが複数存在するということがあり得てしまう。
	* パスキーはあくまでメールアドレスを入力する代わりでしかなく、 Adobe Account Access 或いはパスワードが必要である
- Amazon.co.jp / Amazon.com について
	* 登録したパスキーの名称を変更することはできない。
	* Amazon.com には Amazon.co.uk など amazon.com とログイン情報が共有される他国の Amazon アカウントも含んでいる。登録したパスキーも共有される。
- Facebook について
	* QR読み取り認証が Safari で登録に失敗する
	* Facebook では一時期生体認証が使えたが、ある時から使えなくなった
- NVIDIA について
	* 明示されていないが、登録数に上限があるみたいだ。 5,6 個キーを追加すると、それ以上登録できなくなる。
- 1Password, Twitter について
	* QR読み取りでログイン可能だが、登録は Chromium でしかできない
		* Chromium でQRコードを表示して iPhone/iPad で読み取って登録すれば、同じ iCloud アカウントを使用する全デバイスの Safari で iCloud に保存したパスキーが Touch ID や Face ID だけで使えるようになる。
- Bitwarden について
	* パスキーは5つまで登録可能
	* パスキーの名称を変更することはできない
- LastPass, Keeper について
	* 有料会員にならないと使えない認証方法があったり (LastPass)、そもそも有料会員しかアクセスできない (Keeper) ようなので、詳細はわからない。上表で ※ を付けたのはそれが理由。
- AWS Console について
	* 複数の認証方法が使えるようになった
	* QRコード読み取りによる認証がなぜか登録に失敗する
- Yahoo!, Aol について
	* TOTP、(セキュリティキーorQR読み取り) のどちらか一方しか登録できない
- Zoho について
	* YubiKey を選択すればQRコードを読み取りによる認証が可能だが、なぜかQR読み取りでのログインに失敗する。
	* OneAuth も選択可能で、メインの認証手段を選択できる
	* パスキーに対応しているとされているが、生体認証を登録することはできない
- MoneyForward, Nintendo について
	* 登録したパスキーの名称を変更することはできない。
- Yahoo! JAPAN について
	* 表示されるデバイス情報はUAから取得しているみたいだが、 iPhone 複数台とか、 Mac 複数台持っている人は区別ができないし、 Brave のような Chrome に偽装するブラウザは Chrome と区別できない。
	* 登録されている端末の名称変更ができればいいのだけど、 Yahoo! JAPAN はなぜかその機能がない。
	* 登録件数に上限があるので注意
	* かつては TOTP 認証が可能であったが、サービス終了した。
- PayPal, au ONE, dアカウント について
	* スマートフォンからのみ登録可能
		* つまり、ユーザーエージェントを iPhone などにすればデクストップからでも登録できる
	* 登録したキーの名称を変更できない
	* キーを追加するには携帯電話番号の登録が必要になることがある

## デモサイト

- [Webauthn.io](https://webauthn.io)
- [Webauthn.me](https://webauthn.me)
- [Descope Passkeys Demo](https://passkeys.guru)
- [Passage Console](https://console.passage.id/profile)
- [Authgear Example App](https://demo-authgear-website.authgearapps.com/login)

## 役に立ちそうなサイト
- [Passkeys.directory](https://passkeys.directory)  
    1Password によるパスキーに対応したサイトの一覧

## 追記

* 2021/3/11 : Vivaldi ブラウザが生体認証に対応していたので追加
* 2021/5/5 : いくつかのサイトを追加
* 2021/6/12 : iOS の Safari 以外が対応したので追加
* 2021/7/10 : いくつかのサイトを追加
* 2022/4/1 : Windows についての情報を追加
* 2022/7/31 : Microsoft アカウントのログインが Safari で動作するようになった
* 2022/8/26 : AWS を追加、 GitLab, Bitbucket, Zoho を修正
* 2022/11/13 : Proton を追加、 QRコード読み取りによる認証について情報追加
* 2022/12/11 : QRコード読み取りに関して情報を追加
* 2023/3/26 : 見やすく表記を改めた
* 2023/5/4 : Google がパスキーに対応したので修正
* 2023/5/13 : Vivaldi コミュニティを追加
* 2023/6/3 : Opera, Opera GX が生体認証に対応していたので追加
* 2023/6/23 : Adobe を追加、 Opera Crypto が生体認証に対応していたので追加
* 2023/7/24 : NVIDIA を追加、 Arc が生体認証に対応していたので追加
* 2024/1/30 : Firefox の認証方法が更新されたので修正
* 2024/2/10 : Chromium の情報を更新、Nintendo、Amazon、MoneyForward、PayPal、dアカウント、au One の情報を追加