どのように1Passwordへのログイン方法を管理しているか
まえがき
昨年LastPassのセキュリティインシデントが話題になりましたが、みなさんはパスワードや秘匿情報の保護はどのようにされていますか?
SSOログインや、YahooさんのようにSMS認証でパスワードそのものを排除する方式もあったり様々なパターンがでてきました。
とはいえ、引き続きID/Passwordを必要とする場面はまだまだ継続するんじゃないかなと思っています。
また、WEBサイトのID/Password以外にもクレジットカード番号や、ソフトウェア開発するときに必要となるSSH秘密鍵等のように保存しておきたい秘匿情報も多いかと思います。
1Passwordを使って、ローカルにファイル(~/.configや.env)として置かれてる生のパスワードなどを削除した@Web Scratchにもあるように、ローカルからどんどん秘匿情報を削除する素晴らしい方法もあります。
私も日々生成される秘匿情報は1Passwordに格納しています。
そんな秘匿情報の塊である1Passwordをどのように自分が管理しているかを書いていこうと思います。
注意
- 私はセキュリティの専門家ではありません
- そのため、ここに述べている内容はあくまでも一個人としての見解になるため、同じようにするかは自己責任でお願いいたします
- もし懸念点や、間違った認識をしていたらご指摘いただけると助かります🙏
- 1Password以外のパスワードマネージャで、このやり方はおすすめしません
- Secret Keyの有無がその理由です。後述しますが、YubiKeyのSecure Static Password以外にもn桁の文字を入れているとはいえ、IDとマスターパスワードだけでログインできるパスワードマネージャにこのやり方だと、キーロガーに対して弱い印象があります
- 人によっては過剰に対策していると感じる場合もあるかもしれません
- 私は1Passwordに保存している情報は漏れると警察に届けるレベルのものがあるため、基本的にはできる対策は全て行っています
- 逆に、パスワードマネージャには最悪漏れても大丈夫な情報しか保存しない場合は他のパスワードマネージャを使ったり、AirTagはつけなくても良いかと思います。
- セキュリティは守るべき情報資産を明確化し、リスクコントロールするところに意味があると思うので個々の事情で調整いただければと思います
概要
概要図
概要図の補足
- WEBサイトのログイン情報のような秘匿情報は全て1Passwordに保存
- YubiKeyにはApple AirTagを一緒にくっつけておいて紛失に気がつけるようにしておく
- 目的は、紛失になるべく早めに気がついて1Passwordのパスワード変更できるようにするためになります。iPhoneで手元から離れたときに通知を設定しています(2023/02/03追記)
- YubiKeyのSecure Static Passwordに数十桁以上の英数記号を登録しておく
- 例えば、40桁の英数記号等
- 1Passwordのマスターパスワードは
- 任意のn桁の文字列 + YubiKeyのSecure Static Password
- Secure Static Passwordだけだと紛失対策に少し不安が残るため
- GoogleやAWSのような第三者に不正アクセスを許容できないサービスは、YubiKeyを2要素認証として使う
- Google: 他のサービスの2段階認証や、ログイン通知先としてe-mailを使うことがあり、そこでgmailを使うことが多いため、不正アクセスは許容できない
- AWSやGCPといったクラウドサービス: 業務利用であれば顧客情報、個人利用でも暗号通貨の発掘や、他への不正アクセスの踏み台にされかねないので、不正アクセスは許容できない
- ECサイトのような不正アクセスをギリギリ許容できるサービスは、1Passwordで全てログイン処理ができるようにする
- ECサイト: 利用者側として不正アクセスをされたとしても、漏れる情報は以下の情報なので個人的には許容しています(もちろん人や立場によって何が許容できるかは違うと思います)
- 個人情報(住所・名前・電話番号等)
- クレジットカード情報
- 最悪不正利用されたとしても補償される
- 不正利用されたときに即時で気がつけるようKyashのようにPush通知が飛ぶものを利用しています
- 購入履歴
- ECサイト: 利用者側として不正アクセスをされたとしても、漏れる情報は以下の情報なので個人的には許容しています(もちろん人や立場によって何が許容できるかは違うと思います)
このやり方で検討したこと
- YubiKeyを紛失 or 一時的に誰かにYubiKeyを使われてSecure Static Passwordを窃取された場合
- 1Passwordに不正アクセスされないか
- 以下の2つの観点から紛失に数日以内に気がついて1Passwordのパスワードを変更すれば大丈夫と考えています。また、早期に気がつけるようにApple AirTagを利用しています
- Secret Keyが必要なため
- これは34桁あるため、数日程度でブルートフォースアタックで把握するのは難しいかなと思っています
- Secure Static Passwordだけではマスターパスワードにならないため
- n桁の文字列 + Secure Static Passwordを組み合わせてマスターパスワードとなる
- Secret Keyが必要なため
- もし、キーロガーやショルダーハッキングの可能性まで考慮するなら、1Passwordのマスターパスワードの定期的な変更も視野にいれると良さそうかなと思っています
- 定期変更は何年も前から推奨されなくなっていますが、定期変更を強制すると簡単なパスワードを設定しがちという背景にあります。今回はYubiKeyに複雑なパスワードを簡単に設定しておけますし、変更先も1Passwordだけなので、半年や1年に1回程度なら変えるのはありだと思っています
- 以下の2つの観点から紛失に数日以内に気がついて1Passwordのパスワードを変更すれば大丈夫と考えています。また、早期に気がつけるようにApple AirTagを利用しています
- 1Passwordにログインできなくならないか
- 以下の対策をしておけば1Passwordにログインできなくなることはほぼ無いかと思います
- YubiKeyは2本設定しておく
- 複数のデバイス(PC/スマホ/iPad等)にログイン設定しておく
- マスターパスワードはYubiKeyを2本持っておけばなんとかなるが、Secret KeyでEmergency Kitの保存先が参照できなくなったパターンを考慮
- 以下の対策をしておけば1Passwordにログインできなくなることはほぼ無いかと思います
- 1Passwordに不正アクセスされないか
なぜ1Passwordなのか
LastPassやKeeper等、さまざまなパスワードマネージャが存在しています。
私は1Passwordを使い続けているのですが、以下の理由があります。
秘匿情報保管庫(以下Vault)の流出時におけるブルートフォースアタックに強い
これは、1Passwordの場合、秘匿情報を暗号化するときにマスターパスワード(いわゆるログインパスワード)以外にもシークレットキーという要素を組み合わせていることに由来します。
一般的なパスワードマネージャはマスターパスワードを利用してデータを暗号化してからインターネット上に送信しています。
問題は、このパスワードの長さです。
パスワードマネージャにログインするときのパスワードはメモ帳に記録して都度参照するわけにはいかないので、脳内に記憶しておける長さ(8桁~16桁程度)を選定される方が多いと思います。
この桁数が少なければ少ないほどVaultが流出したときにレインボーテーブルの攻撃に弱くなります。
※どのパスワードマネージャも一定回数のストレッチングを行っていてこの回数も関係しますが、割愛します。
※LastPassの場合はサービス初期ユーザーはストレッチング回数が少なく(5,000回)設定されていることもセキュリティインシデントの時に話題になりました
1Passwordの場合、アカウント作成時にデバイス上で34桁の英数字を生成(Secret Key)し、マスターパスワードと組み合わせることで強固な暗号化処理を施します。
※Secret Keyは初回ログイン時に入力を求められますが、以降はデバイスやブラウザに保存され入力が不要になります。
引用: https://support.1password.com/secret-key-security/
暗号化通信の復号されるリスクに強い
これは、SRP(Secure Remote Password)プロトコルを利用していることに由来します。
私もまだまだちゃんと仕組みまでは飲み込めていませんが、
ネットワーク経由でパスワードを送信せずに、認証することができるみたいです。
これによって、TLS通信がどこかで復号されたときにログイン情報を抜き取られることを防ぐことができます。
TLS通信が復号され抜き取られるリスクについてどこまで考えるかは悩ましいのですが、プロトコルとしての脆弱性ではなく、TLSの暗号化・復号処理を行うソフトウェア側でバグや脆弱性が見つかることを考えると現実的な脅威と考えています。
これは、2014年にOpenSSLのHeartbleedを経験された方は実感されやすいかと思います。
引用: https://blog.1password.com/developers-how-we-use-srp-and-you-can-too/
- SRPプロトコルについて
あとがき
fujiawraさんも言及されていますが、まだまだローカルにあるやばいファイルは存在し続けています。
各パスワードマネージャも大体CLIがあったり、AWS Secrets Managerっぽい機能等、ソフトウェア開発するときに焦点をあてた開発も進められています。
今後は各社がローカルから秘匿情報を扱わなくて良くなるような連携してくれるとよりありがたいな〜と希望をいだきつつ締めたいと思います。
Discussion