🔑

iPhoneでApple IDのセキュリティキーにYubiKey 5C Nanoを登録して利用する

2024/09/14に公開

背景

こちらのスクラップの通りYubiKey 5C Nanoを買い直しました。

https://zenn.dev/nyuyuyu/scraps/0cfc7ab4387832

YubiKeyはOpenPGP Cardとしてのみ利用しているのですが、Apple IDの二要素認証のセキュリティキーとしてYubiKeyが利用できるようになっていた事を思い出しました。

https://www.yubico.com/blog/how-to-add-yubikeys-to-apple-id-a-step-by-step-guide/

セキュリティキーを登録しておくと信頼したデバイスへの6桁の確認コードが送信されなくなり、代わりにセキュリティキーが要求されるようです。

Appleのサポートページを見るとYubiKeyについては5C NFC5Ciが挙げられています。ここで、最近になってType-Cポートに対応したiPhoneでもセキュリティキーとして5C Nanoを利用できるのか?という疑問が生じたので試してみる事にします。

iPhoneからApple IDのセキュリティキーを登録するにあたって

結論から先に書くと、iPhone 15 Pro Max(iOS 17.6.1)のType-Cポートに挿した5C Nanoをセキュリティキーとして登録する事ができました。

ただし、OTPが有効になっている場合はYubiKeyがキーボードデバイスとして認識される[1]ので、iPhoneにYubiKeyを挿してPINの入力を促された時にオンスクリーンキーボードが表示されずPINが入力できないといった事態に陥ります[2]。これは、YubiKeyの登録プロセス中にPINが入力できないので登録自体ができない、登録済みのYubiKey[3]のPINを求められた時にはPINの入力ができず認証プロセスを完了させる事ができないという事を意味します。つまり、OTPが有効でPINが設定されたポートが1つしかないYubiKeyをセキュリティキーとしてiPhoneで利用する事は事実上不可能という事です。

また、OTPが有効でPINを設定していないYubiKeyをiPhoneから登録するプロセスにおいて、登録するYubiKeyの名前を入力する画面にオンスクリーンキーボードが出てこないのもかなり戸惑います。しかし、この挙動については登録する名前をデフォルトのまま[4]にして進める事で登録自体は可能です。

このような挙動はYubicoも把握しているようで、iPhoneにOTPが有効なYubiKeyを挿した状態でYubico Authenticatorを起動するとOTPを無効化するように勧められます。


Yubico Authenticatorのスクリーンショット

以上の事から、以下のすべてに当てはまる場合は5C NFCや5Ciを選択するしかなさそうです[5]

  1. iPhoneで使いたい
  2. OTPを利用したい
  3. PINを設定したい

iPhoneからApple IDのセキュリティキーを登録する

1. YubiKeyの設定

YubiKey Managerを使って5C Nanoの設定をします。

まずは前述の通りOTPを無効にします。あとはFIDO U2FかFIDO2(もしくはその両方)を有効にします[7]。二要素認証時にPINによる保護をしたい場合はFIDO2を有効にしてPINを設定しておきましょう。PINによる保護が不要な場合はFIDO U2Fだけ有効にするか、FIDO2も有効にしてPINを未設定にしておいても大丈夫です。

また、その他の機能(PIV/OpenPGP/OATH)は有効でも無効でも登録に影響はありませんでした。

2. YubiKeyの登録

前述したiPhoneで登録します。

iPhoneの設定 -> 自分のユーザ名 -> サインインとセキュリティ -> 2ファクタ認証 -> セキュリティキーから登録します。基本的には画面の指示に従えば登録できます。

PINを設定している場合

  1. YubiKeyをiPhoneに挿す
  2. YubiKeyの金属の部分をタップする
  3. PINを入力する
  4. 一度YubiKeyを抜いてもう一度iPhoneに挿す
  5. YubiKeyの金属の部分をタップする
  6. 登録するYubiKeyの名前を入力する

PINを設定していない場合

  1. YubiKeyをiPhoneに挿す
  2. YubiKeyの金属の部分をタップする
  3. 登録するYubiKeyの名前を入力する

登録したセキュリティキーを使って二要素認証をパスする

セキュリティキーを求められた時に5C Nanoを挿し、(設定していれば)PINを入力した後にYubiKeyの金属の部分をタップすれば二要素認証をパスできました。簡単ですね。

まとめ

OTPを無効にするかPINの設定をしない事でApple IDのセキュリティキーとしてYubiKey 5C NanoをiPhoneから登録できる事と利用できる事が分かりました。また、FIDO U2F/FIDO2のどちらかに対応していればセキュリティキーとして登録できる事も分かりました[8]

これらの事から、NFCやLightningポートを持たない5C Nano以外のYubiKeyについてもFIDO U2F/FIDO2に対応していて接続可能なポートがあれば概ねApple IDのセキュリティキーとして利用できると考えてよさそうです。(iPhoneで利用する場合の制約も同じく)

幸いな事に所持しているデバイスのすべてにType-Cポートがあり、YubiKeyでOTPを使う予定は無いので5C NanoをApple IDのセキュリティキーに登録してしばらく様子を見てみようと思います。

脚注
  1. 仕組み上あたりまえの事ですが。 ↩︎

  2. iPadやMacにはこの問題はありません。キーボードデバイスが接続された時にオンスクリーンキーボードが非表示になるのはiOS特有の挙動です。 ↩︎

  3. iPadやMacからでもセキュリティキーを登録する事が可能です。 ↩︎

  4. この名前は後から変更する事ができます。 ↩︎

  5. 5C NFCや5CiはそれぞれのインタフェースでOTPの有効/無効を切り替える事ができるはずなので、例えばType-C側はOTPを有効、NFC側はOTPを無効にし、iPhoneではNFC側を利用すればこの問題は回避できると思われます。(未検証です) ↩︎

  6. どちらもYubiKeyである必要はありません。 ↩︎

  7. どちらも工場出荷時に有効になっています。 ↩︎

  8. 明文化されたドキュメントを見つけられなかったので実際に試した甲斐がありました。 ↩︎

Discussion