Yubikeyを導入しました
認証情報の管理には1Passwordを使っており定評のあるサービスなので一応安心だと思っていますが、 1Passwordだけに頼っていてこれが漏えいしたらまずいことになると不安になり、Yubikeyを導入しました。
導入したモチベーション
現在も利用してないサイトも含めると800近い認証情報があり、とても人力では管理できないので認証情報には 1Passwordを使用しています。
1Passwordではダッシュで区切られた34文字の英数字(128ビット)で構成されたシークレットキーと1Password 利用時に入力するマスターパスワードを合わせて多分160ビット程度の暗号鍵で認証情報を暗号化していることになります。シークレットキーは1Passwordを設定したとき入力するだけですしマスターパスワードも自身で暗記に頼ってるので外部に漏れることはないと思いますし暗号強度十分だとおもいます。
しかし、例えば使っているMacが盗まれたりした場合、Macの認証を突破されるとシークレットキーは保持されているので頼るはマスターパスワードのみです。40ビット程度でしょうか。ちょっと心もとなくなってきます。漏れたが場合800近いサイト(大半は使っていませんが)が乗っ取られることになるので、リスクはかなり高いと言えます。
そのため、少なくとも1Passwordを使う上でのセキュリティー強度をもう少し上げておきたいと思ったのがきっかけです。
導入方針
一応私はITエンジニアですが、セキュリティの専門家というわけではありません。 以下に述べることは、素人の個人的な意見だと思ってください。
この状況をちょっと改善しておこうと思いました。改善に際して、次のような方針で検討してみました。 基本的は1Passwordでの管理は一応安心なので大半は1Passwordに任せて、1Passwordの認証を強化しようという作戦です。
- 1Password の認証に2FA1を取り入れる。
- 1Password のシークレットキー + マスターパスワードを強化する。
- 1Password以外のサービスの認証は基本的に1Passwordに集約する。
- ただし、重要アカウントについては、1Passwordだけに依存させない。
また、それほど長く生きられず家族を残して先立つことになるので、家族がスムーズに引き継げる方式が望ましいと考えました。
実際の改善策
1Passwordの認証への2FA適用
1Passwordは認証情報の管理の一環として、2FAにTOTP2などをサポートしていますが、1Password自体の認証はデフォルトではシークレットキー+マスターパスワードのみで2FAはオフになってます。
1Passwordの "Use your secrity key as a second factor for your 1Password account"という記事を見ると、Security KeyとAuthenticator(例の6桁の数字と生成するアプリ)が1Passwordの2FAとして設定できるようです。 「それって2FAの意味があるのか?」という議論はありますが、Google AuthenticatorをやめてAuthenticatorは1Passwordにパスワードとも集約しておきながら、1PasswordのためにAuthenticatorを使う気にはなれません。
ここは迷わず Security Key です。
Security Keyと言えば Yubikeyです。種類がたくさんあって迷うところですが、次の2つのYubicoのガイドを見るとすっきりします。
私の条件を整理すると、次の通りです。
- Mac/Android で使用するのでUSB Type-Cのものがいい
- Mac/Androidで使用するので差しっぱなしにはできない
- AndroidはNFCが使えると便利かも
条件からYubikey 5C NFCを購入しました。
Yubikeyは必ず2本セットで購入しましょう。物理的なキーなので紛失のリスクがあるため、バックアップを準備しておかないと後で困ることになります。
設定手順は、"Use your secrity key as a second factor for your 1Password account"にステップバイステップで記載されています。
これで新しいデバイスで1Passwordを使おうとすると、次の2つの条件をクリアしないと1Passwordが使用できなくなりました。
- 登録した Yubikeyを保持している。
- Yubikeyに登録した FIDO2のPINを正しく入力できる。
ただ、新しいデバイスでなければ意味がありませんので、次の強化策に移りましょう。
1Password のシークレットキー + マスターパスワードの強化
1Passwordを既にインストールしているデバイスでは、シークレットキーとマスターパスワードで認証情報が保護されています。これもシークレットキー[所持]とマスターパスワード[記憶]と2つを使った多要素認証ですが、自身のMacが第三者の手に渡ったとなると、シークレットキーは奪われていますから頼りはマスターパスワードです。
1Passwordの[記事]によると、マスターパスワードの平均的なエントロピーは40ビット程度だそうです。おそらく文字数では7桁前後なのだと思います。
私は使用しているパスワードのエントロピーも推定70ビット程度だと思います。
簡単に強度を上げるならば、マスターパスワードの桁数を増やせばよいのです。しかし、そうすると今度は記憶が難しくなります。覚えられずにメモに書き留めたりすれば逆効果です。
そのため、Yubikeyを利用することにしました。 YubikeyにはSecure Static Passwordという機能があります。これはModhex3で32文字の文字列を生成しておき、Yubikeyへのタッチでインプットできる仕組みです。
1Passwordのマスターパスワードとして、自分で設定したパスワード+YubikeyのSecure Static passwordを組み合わせてセットしました。Secure Static Passwordは128ビットのエントロピーを持ちますから自分のパスワードと合わせて200ビット近い強度を持たせることができました。
重要アカウントの1Password依存の回避
Google、Fastmail、Gitlabを重要アカウントと位置づけました。
これらは1Passwordの通知などに使っており、1Passwordに問題があったときに一緒に巻き込まれてはリカバリーが難しくなるアカウントです。そのため通常のログインなどには 1Passwordを使用していますが、 2FAにはYubikeyを使用するように設定を変更し 1Passwordは2FAから外しました。
これで1Passwordのアカウントが乗っ取られるようなことがあっても、この3つは何とか確保できるのでリカバリーの対応も考えられるようになります。
まとめ
1Password は便利ですが、これがやられると全部ダメになる急所でもあります。 今回はYubikey を導入して1Password の守りを固めてみました。
普段はMacもAndroidも生体認証があるのでYubikeyを使うシーンはそれほど多くなく、 それほど利便性が下がった印象もないので気軽に取り組めると思います。
- ただし、私はセキュリティの専門家ではないので、参考程度に読んでいただければと思います。
- Yubikey は絶対に2本セットで購入して同じ設定を確実にしましょう。
関連記事
-
2FAは"Two-Factor Authentication"の略で、セキュリティ強化のために2つの異なる要素で認証すること。例えばこれまで使われてきたパスワードは「知識」で認証しているので、それとは異なる「生体認証」と組み合わせて本人確認を行う方法。 ↩
-
Time-Based One-Time Password。最近よくみるパスワードのほかに6桁の数字を入れさせられるやつ。 ↩
-
ModHex (Modified Hexadecimal) はYubicoによって開発されたエンコーディング方式で、キーボードをシミュレートするためキーレイアウトの互換性と可読性向上のために、あえて16文字のみを使用しています。 ↩