皆様どのようにパスワード管理を行っていますか?
Zennを探してもベーシックにまとまった記事は見つからなかったので、このなかなか語られにくい、語りえないトピックについて、誰にでもわかる+何らかの示唆を与えるような概要をこの記事で示します。
我々はパスワードからは逃げられない?
あなたはGoogleアカウントを取得しました。→パスワード1つ、追加認証情報1つの管理が必要になります。
あなたはTwitterアカウントを取得しました。→パスワード1つの管理が必要です。
さらには今まで利用してきたサービスが突然追加認証情報を要求してきて、Google Authenticatorのようなアプリが必要になっていることでしょう。
SNS、ネットショッピング、ニュース、エンタメ、ネットバンク、よく行くお店、ふるさと納税、etc...
ありとあらゆるものがWebと連動していて、パスワード1つを要求してきます。
さらにMFA(多要素認証)が要求されるこの現代においては、さらにもう1つの情報管理が必要なのです。
認証の様式
我々は何を持ってしてWebサービスの利用者本人であるとみなされている(認証されている)のでしょうか?
よくパスワード認証とか言ったりしますが、思いつく限り、一歩踏み込んだ形で整理してみます。
認証に用いるもの | 詳述 |
---|---|
パスワード | パスワードを入力できるか |
ワンタイムトークン(OTP) | ワンタイムトークン(典型的には6桁の数字)を入力できるか |
OAuth | アクセストークン要求を認可する権限があるか |
メールアドレス | 指定メールアドレスのメールボックスにアクセスできるか |
生体 | 指紋・虹彩などの特徴的なパターンをデバイスに入力できるか |
電話番号 | 指定電話番号の電話・SMSを受けられるか |
住所 | 指定住所への書留郵便を受領できるか |
免許・パスポート | 国家発行の免許証などの所有を示せるか |
資金の動きを捕捉する必要がある金融サービスなどは、より煩雑で精度の高い認証を必要とします。一方でその煩雑さが理由でサービスを使わないという選択をすることもあります。
我々はパスワードからは逃げられる?
さて肝心のパスワードを忘れた場合、どうしますか?
この場合Webサービスはメールアドレス認証を要求したり、より堅いサービスだと住所確認が必要になったりします。
パスワードは煩雑な認証プロセスを省略するためのキャッシュのようなものだと考えられます。本当のところ必要がないものですが、様々な都合から存在していると考えられます。
「宵越しのパスワードは持たない」戦略と称して一切のパスワードを記憶しない方法は成立すると思いますが、例えばメールアドレスが凍結されると即座にWebサービスのアクセス権限を失うなどのリスクを考えると現実的ではありません。
パスワードは、実際のところある程度の認証の冗長性(バックアップ)や匿名性の確保を裏で担っているとも言えるでしょう。
パスワードのない世界の実現の結果が、「スマホを水没させたら全サービスが利用できなくなった」では話にならないわけでやはり今後もしばらくはパスワード管理は必要になるのでしょう。
パスワードを管理する
パスワードを管理するための手法やツールはいくつかありますが、やはり専用管理ツールを用いて管理した方が良いと思います。
十分な強度を確保し、かつ使い回しをしないこと、またどのようなサイトでパスワードを設定したかの列挙はできた方が良いからです。紙や記憶だけに頼ろうとするとこの要件を非常に満たしにくくなります。
手動運用<何らかの管理ツールの利用
この不等式は覆らないでしょう。
全てのOSで利用可能なツールを列挙すると、以下のような候補が挙げられると思います。
ツール | どこに保存するか | 無料? | OSS? |
---|---|---|---|
Googleパスワードマネージャー | クラウド | ⭕️ | ❌ |
1password | クラウド | ❌ | ❌ |
LastPass | クラウド | ⭕️ | ❌ |
KeePass | ローカル | ⭕️ | ⭕️ |
Bitwarden | ローカル OR クラウド | ⭕️ | ⭕️ |
クラウドのものはブラウザとの連携性がよく、それゆえに例えばフィッシングやキーロガーによる攻撃に対して一定の耐性があると思いますが、データがネットワークにさらされており、実装が公開されていない以上どのような水準の暗号化が施されているかについてサービス事業者を無条件で信託することになります。
https://gigazine.net/news/20221228-lastpass-statement-explain/
一方で上記記事のようなこともあった関係上、ローカルで扱えるツールを扱えた方が良いのではないかと思います。
ローカルツールをうまく扱うことができれば、ワンタイムトークンだけはローカルで運用するなどの戦略も立てることができます。
Bitwardenも興味深いですがサーバ型のツールであり運用がやや複雑なので、KeePassが汎用性と実用性の観点からいいのではないかと思います。
まとめ
この記事では、パスワードが認証を行う上で本質的に不要であることを述べた上で、パスワードを管理しなければならない現実的な理由が存在することを示しました。
この記事の続編として、パスワード管理ツールKeePassをサクッといい感じに使うための記事を書こうと思っています。
この記事から何か示唆を得られたと思ったら評価💓していただけると幸いです。
今回の記事について追記すべき内容や修正案等がございましたら、ぜひコメントを残していただけると幸いです。よろしくお願いいたします。