タイトルで結論言い切っちゃっているので、前書きの方が長いエントリになりそうです。
1月28日に、「パスキーのすべて」という本を共著で出版させてもらうことになりました。
出版社の技術評論社のページに、本書の「はじめに」を掲載頂いています。1分で読み終わるので是非ご覧ください。また、本文のサンプルが数ページありますので、コンテンツの雰囲気をつかんでいただければと思います。
また、共著者のえーじさんが、本を紹介するブログを書いてくださっています。
諸先輩方のように、毎日ブログを書くことは私にはとても難しいので、3人で共著なのを理由にして、年初から1月28日の発売まで、3日に1本ぐらいの感覚で、どこかのブログで記事を書き続けるチャレンジをしてみたいと思います。1ヶ月ぐらいならきっと続くことを祈ります。これは8本目。
先日、Qiitaで、パスワードマネージャーしか使えないパスワード入力フォームという記事を公開しました。
その後、「ドラッグドロップで突破できるよ」とのご指摘をコメントで頂戴し、修正するなど、思ったより多くの方に見ていただくことができました。
もちろん、あくまでネタとして楽しんでもらう記事でしたが、この記事を書いてから、とある識者の方と会話をして、改めて思ったことがあります。
すでにタイトルに書いちゃっているので分かるとおり、パスワードマネージャーを前提にしたサービス設計をするならば、パスワードも複数登録できた方がいいのでは?という点です。
複数のエコシステム間でデバイスを使い分けるペイン
iPhoneユーザであればデフォルトでAppleのパスワードアプリが、パスワードを自動作成、保存してくれますが、パソコンで同じアカウントにログインしようとしたら、パスワードアプリを開いて、キーボードをポチポチ手打ちすることになります。
Chromeブラウザをインストールして、Googleパスワードマネージャーにパスワードを登録していれば、PCでもAndroidでもiPhoneでもパスワードが同期できるので、便利になりますが、Appleのパスワードアプリと、Googleパスワードマネージャー、どちらにパスワードを保存したのか分からなくなりますし、両方に保存していたら、同期されずにどちらかに古いパスワードが残ってしまうこともあり得ます。
私も、パスワードが思い出せなかったり、パスワードマネージャーで作った複雑なパスワードを手打ちするのが面倒なために、パスワード再発行をすることが、未だに年に数回以上あります。
パスワードが複雑すぎると、手入力よりもパスワード再設定の方が楽になってしまう、こういう経験をお持ちの方は私以外にもいらっしゃるのではないでしょうか。そして、パスワードを再設定すると、古いパスワードが使えなくなってしまうので、結局別の端末からログインする時に、再度パスワードを再設定することになり、最終的に、簡単に覚えられる、そして簡単に破られるパスワードになっていく、悪循環になることが想像されます。
エコシステム間でパスワードやパスキーなどのクレデンシャルを移行する仕様は、現在策定が進んでいますが、セキュリティを考えれば、今ログインしたい1つのアカウントのパスワードを再設定する手間の方が楽であるだろうことは想像に難くありません。
パスワードマネージャー業界はパスワードマネージャー業界でセキュリティを担保しつつ利便性の向上に努力してもらうとして、サービス提供者側でできることはないのでしょうか。
過去に「パスワードをクラウドに絶対保存しないでください」と通知していた金融機関ですら、今ではパスワードマネージャーの利用を推奨しています。ログイン画面のUXで、パスワードマネージャの利用を阻害するような作りはもってのほかですが、そのほかにもできること、あるのではないでしょうか。
もちろん、タイトルに書いたとおり、パスワードを複数登録できるようにすることです。
そもそもパスワードってなんで複数登録してはダメなんだろう
パスワードの再設定には、いくつかの理由があると思います。
パスワードを忘れた
パスワードを記録してある媒体(メモ帳やパスワードマネージャー)が手元にない
パスワードが危殆化した(漏れた、盗まれた)
パスワードが危殆化したのであれば、絶対に、古いパスワードを無効化する必要があります。単に忘れただけであれば、無効化しなくてもいいかもしれませんが、メモも残っていないなら、無効化したほうが賢明でしょう。
でも、単純に今パスワードが手元にないだけならば、無効化してしまうことでユーザの手間が増えるぐらいなら、複数登録を許してしまえばいいのではと思いました。
パスワードを複数登録したときに修正が必要な部分
パスワードを複数登録できるようにするには、データベース側の改修もそうですが、画面などもいくつか修正が必要でしょう。
セッション管理
今ログイン中のセッションで、どのパスワード(や他の認証手段)でログインしたかは、記録した方がよいでしょう。
パスワード再設定導線
パスワード再設定画面においては、新しいパスワードを設定するときに、古いパスワードを残しておくか、消すかどうかを選べるようにする必要が出てきます。すでに複数パスワードが登録されているならば、そのすべてを消すのか、一部を消すのかも考慮が必要になります。
もしくは、パスワードを忘れた際の導線として、必ずパスワード再設定が必要なのか(直接ログインしてしまえばいいのでは)を検討してもよいかもしれません。
新規登録導線
そもそもパスワードを登録するときに、いつ、どういった端末でパスワードを作成したのか残しておくことで、後でパスワードを消す際にユーザの判断がしやすくなると思います。さらに、パスワードの複雑性も残しておくと良いかも知れません(やり過ぎるとパスワードの推測に繋がるので注意)
パスワード管理画面
現在登録されているパスワードを一覧化し、ユーザが削除するパスワードを変更したり、新しいパスワードを登録したりできる画面が必要です。
ここで、もちろんですが、パスワードを表示することはできません。(そもそもハッシュ化しているので生パスワードは持っていないですよね。)そのため、作成日、最終利用日、複雑性、作成したときのUserAgent、現在そのパスワードでログイン中のセッションなどが分かると良いと思います。
パスワード複数登録しなくても、利便性は向上できる
パスワードを忘れた場合のログイン導線として、パスワード初期化しかないサービスの方が多いですが、一部のサービスは、マジックリンクなどで、パスワードを再設定しなくても一時的にログインできるようになっています。
セッションが十分長いサービスだったり、一時的なログインを想定しているサービスであれば、それで充分かもしれませんね。