最初に確認しておくべき、たった一つの前提
2本のYubiKeyといえば、ほぼ間違いなくプライマリ1本と予備1本という構成になります——そこは正しい認識です。確認しておくべきなのは、実際のところ「予備」が何を意味するのかという点です。Yubico自身のガイダンスはこの点について率直です:アカウントに登録されていない予備の鍵は、プライマリを紛失した際に何の助けにもならない。引き出しの中にしまい込まれ、どこにも登録されていない2本目の鍵は、バックアップではなく、たまたま紛失したものと同一の、単なる未使用の2台目のデバイスに過ぎません。
正しいやり方はこうです:初期セットアップの際に、両方の鍵を同時にすべてのアカウントへ登録する——「今はプライマリだけ登録して、予備は後で追加する」ではありません。その「後で」は、プライマリを紛失するより先にはなかなかやって来ないものです。
YubiKeyが実際に行っていること
YubiKeyは単一の認証方式ではなく、1つのUSBデバイスにいくつもの方式がまとめられたものであり、どれが使われるかは登録先のアカウントが何をサポートしているかによって決まります:
| プロトコル | 用途 |
|---|---|
| FIDO2 / WebAuthn | パスワードレスサインインとパスキー(Google、Microsoft、GitHub、多くの最新の「セキュリティキー」2FAプロンプト)。タッチが必要で、レジデント(ディスカバラブル)資格情報にはPINが必要。 |
| FIDO U2F | 旧式の第二要素プロンプトで、WebAuthnの前身にあたる。フォールバックとして今も広くサポートされている。 |
| OTP(Yubico OTP / HOTP) | ワンタッチでのワンタイムパスワード生成。一部の企業VPNやYubico自身のサービスで使用される。 |
| TOTP | 標準的な30秒ごとに更新されるコード。鍵側に保存され、スマホアプリの代わりにYubico Authenticatorアプリから読み取る。 |
| PIV(スマートカード) | 証明書ベースのログイン——Windows Hello for Business、SSH鍵の保管、コード署名。 |
| OpenPGP | 暗号化・署名用のGPG鍵の保管。署名付きgitコミットを含む。 |
「日常的なアカウントログイン」において重要なのは、FIDO2/WebAuthnと、サイト側がまだ対応していない場合のU2Fの2つです。PIVとOpenPGPについては、この先の自然なステップとして最後に触れます。
ツール:Yubico Authenticatorとykman
- Yubico Authenticator——GUIアプリ。TOTPコードの表示、FIDO2 PINの管理、基本的なデバイス情報を扱う。
ykman——その下地となるコマンドラインツール。同等の機能に加え、スクリプトによる調査が可能——ここでは特に、2本の鍵が実際に同等であることを、両方に等しく頼る前に確認するのに役立つ。
ykman list ykman info
鍵を1本ずつ挿してykman infoを実行し、ファームウェアのバージョンを比較してください。別々の時期に購入した鍵は、異なるハードウェアリビジョンで異なるFIDO2機能セットを持っている場合があります——予備が必要になる当日ではなく、今のうちに知っておく価値があります。
ステップ1:両方の鍵にPINを設定する
FIDO2のレジデント資格情報(「パスキー」)には、アカウントのパスワードとは別に、鍵自体へのPINが必要です:
ykman fido access change-pin
あるいはYubico Authenticatorでは:鍵アイコン → FIDO PINs → Set PIN。
ステップ2:同じタイミングで、両方の鍵をすべてのアカウントに登録する
これは「引き出しの中の予備」というやり方が省いてしまうステップであり、まさに2本の鍵を持つことの意味そのものです。
- アカウントのセキュリティ/2FA設定に移動し、Add security key(表記はサービスにより異なる)を選択する。
- プライマリの鍵を挿入し、指示されたらタッチし、そのまま
YubiKey Primaryとラベル付けする。 - 間を置かず、同じセッション内で、予備の鍵についても同じ作業を繰り返し、
YubiKey Spareとラベル付けする。 - アカウントのセキュリティページに、1本ではなく2本の異なる鍵が表示されていることを確認する。
| アカウント | 備考 |
|---|---|
| メインのメールアカウント | 最優先事項——他のほぼすべてのアカウントのパスワードリセットフローは、メール経由で行われる。 |
| パスワードマネージャー | 他のすべてのリカバリコードがここに保存されている可能性が高いため、これ自体が単一障害点になってはならない。 |
| Microsoftアカウント / Windows Hello | クラウドアカウントと、別途Windowsサインインの両方をカバーする。 |
| GitHub / GitLab | WebAuthnの2FAに対応し、別途PIV/OpenPGPベースの署名付きコミットとSSHにも対応する。 |
| 各種VPN / 会社のSSO | リモートでロックアウトされた場合、最も復旧が困難になりがちなアカウント。 |
ステップ3:2本の鍵を、本当に別々の場所に保管する
両方の鍵をあらゆる場所に登録しておけば、「1本の鍵を紛失した」という事態には対応できます。しかし「両方の鍵が入ったバッグごと紛失した」という事態には何の役にも立ちません。これは両方が同じキーホルダーに付いている場合の現実的な故障モードです。Yubicoの推奨は、予備を「安全だがアクセス可能などこか」——自宅の金庫、耐火ボックス、貸金庫、あるいは信頼できる人物のもと——に保管することであり、特にプライマリが普段からある場所には置かないことです。
ステップ4:リカバリコードは第3の層
ほとんどのサービスは、2FAを最初に有効化する際にワンタイムのリカバリコードを生成します。これらは真の最終手段として保存しておいてください——プライマリを紛失し、かつ予備にも手が届かない場合(例えば予備を持たずに旅行中など)に使います。これらは2本の物理的な鍵を登録することの代わりにはならず、どちらの鍵もまったく利用できない場合に残された最後の手段です。
Windows固有の設定
Settings -> Accounts -> Sign-in options -> Security key -> Manage
これはPC自体へのサインイン用に鍵を登録するものであり、Webアカウントの2FAとは別の登録です。サインインできなくなると本当に困るようなマシンでは、ここでも両方の鍵を登録してください。Windows Hello for Businessの下では、純粋なFIDO2ではなく、鍵のPIV/スマートカード側が使われることが多くあります。
詳細ガイドを入手する
完全版のガイドには、プロトコルの完全な一覧表、アカウントごとの登録チェックリスト、ykmanコマンドリファレンス、予備が実際に機能することを確認するためのテスト方法、そしてこの先の展開(ハードウェアに裏付けられたSSH鍵、署名付きgitコミット)が含まれています。