実質的なパスワードを増やすことは難しい
「実質的なパスワード」とは?
A さんが
GitHub のパスワードをabc123に設定していたとする
Google のパスワードをdef456に設定していたとする
GitHub には Gmail のアドレスで登録している
この場合、A さんの GitHub アカウントを乗っ取ろうとする攻撃者は、A さんの Google アカウントのパスワードdef456さえ突き止めれば、GitHub からパスワードリセットのリクエストを送ることで A さんの GitHub アカウントにアクセスできる。
このようにして「これさえ特定できればサービス X にログインできる情報」を「サービス X の実質的なパスワード」と呼ぶことにする。
上記の A さんの例だとまあそりゃそうだよなという感じかもしれないが、次に B さんのことについて考える。
B さんは
GitHub のパスワードをaiueo123に設定していたとする
Twitter のパスワードをaiueo456に設定していたとする
Facebook のパスワードをaiueo789に設定していたとする
Steam のパスワードをaiueoABCに設定していたとする
Google のパスワードをp4ssw0rdに設定していたとする
各サービスには Gmail のアドレスで登録している
この場合、せっかく各サービスごとに使うパスワードを変えたのに、攻撃者は、実質的なパスワードp4ssw0rdさえわかってしまえば全サービスへログインできてしまう。
これの対策をどうとる?
2FAか?
2FAは多くの場合アプリかSMS
あるいはメールでログインコードがくることもある e.g. Steam
アプリでもSMSでも、スマホにログインできちゃえばコードは見放題。この場合、実質的なパスワードはスマホのロック解除コード(incl.生体認証)ということになる。
ただし、この場合はスマホのロック解除コード+スマホのハードウェア本体が必要になるので、かなり堅牢度は高い
というか 2FA 有効なアカウントでパスワードリセットをリクエストされたときってどうすればいいんだっけ?
リカバリーコードなど?
逆にいえば、2FAしない限りはどんなにパスワードをサービスごとに変えても無駄ということになる