iOS16 Beta版での WebAuthn 周り機能調査
先日 iPhone SE 3 を手に入れたので以前から気になっていた iOS16 Beta の WebAuthn 周りの挙動を確認してみました。
※ iOS16 Beta での機能調査という名目ですが iOS15 でも開発プレビュー機能として公開されていた機能も含んでいます。
WebAuthn Level 3
iOS16 Beta版の挙動の話の前に、少し前に公開された FIDO Alliance のホワイトペーパーの内容を理解しておくと後のユースケースが理解しやすいので少し解説します。
こちらのペーパーでは以下の2点が FIDO 認証における課題として取り上げられていました。
- 認証情報(クレデンシャル)を持つデバイス紛失時のリカバリーが困難
- 物理セキュリティーキーの導入障壁が高い
この問題に対して以下の2点を盛り込んだ WebAuthn Level 3 を提案されています。
- 解決法1: 複数デバイス間でのクレデンシャル共有
- 解決法2: スマートフォンをローミング認証器として利用できるようにする
この解決法1,2に該当する機能が iOS16 Beta版には実装されています。
以降の項ではこれらの実装の機能を解説していきます。
備考: このホワイトペーパーは公式から日本語翻訳が出されているので不自由なく読めると思いますが、ritouさんの方の記事も参考になります。(しました)
iCloud キーチェーンを用いたクレデンシャル共有
同じ iCloud アカウントを利用している Apple 端末間で登録されているクレデンシャルが共有されるようになりました。
これにより、クレデンシャルを管理している端末を紛失しても、同じ iCloud にサインインしている端末が存在すればサービスの認証を行うことが可能です。
スマートフォンをローミング認証器として利用できる
iOS16 Beta版では上記のようにスマートフォンをローミング認証器として登録できるようになりました。
以前までは「FaceID/TouchID※」 or 「セキュリティーキーを使用」の選択肢しかなかったのですが、新たに「iPhone、iPad、またはAndroidデバイス」の選択肢が増えています。
※ 前述の iCloud でのクレデンシャル共有の機能のため 「iCloud キーチェーン」という選択肢になっています
ここで表示される QRコードを読み込むと「読み込んだスマートフォン」と「QRコードを表示した端末」間で bluetooth で接続されクレデンシャルの登録ができます。
これは caBLE でクレデンシャルを連携しているっぽいです(推測)
Tips: Chrome Canary での機能
ちなみにこの機能は Chrome Canary でも搭載されています。
下図では「新しい Android スマートフォンを追加」とありますが、iPhoneからも読み込んで登録可能です。
なにがうれしいのか?
冒頭に説明したホワイトペーパーにもあった、クレデンシャルを管理する端末の買い替え/紛失によって認証手段を失う確率が減りました。
ユースケース1: iPhone を持つユーザ
これは想像するのは容易く当然な話ですが、iPhone を失くしたとしても iCloud にログインができて、かつ対応する端末を新たに購入すれば再度サービスにログインすることが可能です。
ユースケース2: TouchID に対応していない古い Mac と iPhone を持つユーザ
おそらくスマートフォンをローミング認証器として利用できる機能はMacOS側でも対応されると思います。
その場合、TouchID を持たない Mac (ex: MacBookPro Early 2015)からスマートフォンをローミング認証器として登録ができます。ここでもし Mac を新たに買い替えをしたとしても、同じくローミング認証器として iPhone で認証をすればサービスにログインが可能です。
同じく、iPhone 側を紛失/買い替えをしたとしてもこちらも iCloud 上でクレデンシャルは共有されているためサービスにログインが可能です。
ユースケース3: Android から iPhone に乗り換えたユーザ
スマートフォンをローミング認証器として利用できるようになったため、スマートフォン買い替え時に古い方のクレデンシャルを新しい方でも利用できるようになりました。
感想
WebAuthn(FIDO) 周りは端末交換問題はかなり根深い問題で解決が難しいと思っていたのですが、今回 iOS16 Beta版を触ってかなりスマートに解決されていると思いました。Google や Microsoft もこういった方法にかなり前向きに対応しているみたいなので※、これでより多くのサービスが WebAuthn を採用して認証周りの煩わしさがなくなるとよいですね。
※ gigazine の記事
一方で懸念点もいくつかあります。
認証可能なクレデンシャルが端末に依存しなくなったことでサービス側がユーザにどのクレデンシャルで認証をしてもらうのかの問題です。例えば、Android → iPhone 乗り換え時はスマホのローミング認証器化機能で認証はできますが、UX的には iPhone で再度登録してもらって iPhone 単体で認証を完結できたほうがよいはずです。しかし、サービス側からは認証フローはブラウザを介したブラックボックスになっているのでなにかそこらへんのうまい訴求はできるのか...という感想ですね。
検証した端末
- iPhone SE3 (iOS16.0 Beta)
- iPad gen5 (iPadOS16.0 Beta)
- MacBookPro (16-inch, 2019)
- Chrome Canary 106.0.5212.0
- moto g pro (Android 12)
Discussion