2022年3月20日日曜日

パスワードを意図的にハッシュ化しないケースについて

ちょうど1ヶ月前にパスワードの制限が厳しいとハッシュ化していない可能性が高い理由についての記事を書きました。

そして先日携帯キャリアがパスワードを平分のまま保存しているというニュースが流れました。

今回はTwitterから広がったみたいですけど、ぶっちゃけ今更だよね?・・・というツッコミは置いといて、本件について勝手にコメンテーターになってみます。

暗号化するくらいならハッシュ化しなさい

まずコレ。ドコモはパスワードを暗号化していたということは、パスワードは大事なものという認識があったんだと思いますが(ないと困るんですが)、だったらハッシュ化すればいいのにという感想しか出てきません。

どんな暗号方式を使っているのかは知りませんが、暗号である以上は復号鍵をどこかに持っておかないといけませんし、当然この復号鍵もパスワードと同様に、あるいはそれ以上に厳重に保管しておく必要があります。

ハッシュ化なら復号鍵は存在しないのでハッシュ値だけ保管しておけばよく、保管すべき情報が少なければシステムのシンプルさや安全さにつながります。

とは言っても意図的にハッシュ化しない場合もある

・・・と言いましたが、サービスによってはハッシュ化しないほうがいい場合もあることは事実です。

どういう場合かというと、ユーザーのITリテラシーにあまり期待できない場合。そんなときはパスワードをハッシュ化してなくてもある意味仕方ありません。

理由は簡単で、ハッシュ化はその性質上パスワードリマインダーが複雑になるからです。

  1. アカウント登録時に使ったメールアドレス(や電話番号)を入力する
  2. 入力したメールアドレスに、再設定用のワンタイムURLが送信される
  3. ワンタイムURL(パスワード再設定画面)にアクセスする
  4. 再設定画面で新しいパスワードを入力する

という手順を踏む必要があります。ITリテラシーが高い人はこのあたりの手続きにも慣れていますが、そうじゃない人にとってはとてつもなく複雑なんです。

携帯電話のように老若男女問わず使うようなサービスの場合は、

  1. アカウント登録時に使ったメールアドレス(や電話番号)を入力する
  2. 入力したメールアドレスに、「あなたのパスワードは○○です」というメッセージが送信される

という手順のほうがはるかに簡潔でわかりやすいでしょう。

なので、まあサービスによってはあえてハッシュ化しないという選択も仕方ないといえば仕方ない。ちなみに「仕方ない」とは「ハッシュ化しないこと」に対してであって、「平分で保存すること」に対してではないので誤解なきよう。

経営層が無知で「暗号化?ハッシュ化?よくわからんがそんなことより早く作れ」と言ってくるかもしれませんが、パスワードの制限からセキュリティーについて邪推してくるやつがいるということを引き合いに出してでも、最低限暗号化の必要性は開発側から訴えるべきです。まあ本当に暗号化してるかどうかは外からじゃわからないんだけどね!

パスワードリマインダーの手順について

ところで上で書いたパスワードリマインダーの手順ですが、再設定用のワンタイムURLってかなり煩雑だと思いませんか?

メールアドレスに届いたURLを開くと、それだけで同じサービスを2つのタブで開くことになります。また、サービスにPCでログインしようとしているけれどメールをスマートフォンで受信している場合なんかはあらためてPCでメーラーを立ち上げてそちらで受信しなおす必要もあったりします。

なので、ワンタイムURLではなく6桁くらいの数字(認証コード)を送信して次の画面で入力させる方式のほうが好きですね。1つの画面で完結するし、スマートフォンでメールを受信していてもPCで6桁の数字を入力するだけで済むので。

認証コードの通知メールが簡潔すぎることによるリスク

時々言われることですが、認証コードを使う場合でも文章があまりにも簡潔だとセキュリティー上よろしくありません

具体的には「認証コードは123456です」とだけ書かれた通知メール。ここまで簡潔だと、スマートフォンで受信したときに通知エリアに認証コードが表示されてしまいます

赤の他人の認証コードをこの方法で取得することはできませんが、家族や恋人のように物理的にスマートフォンをさわれるような関係の場合は風呂に入っている間に認証コードを取得されて勝手にパスワードを変えられてしまった、ということも起こりかねません。

番外編: すごい設計のパスワードリマインダーのことを思い出した

この記事を書きながら、昔遭遇したすごい設計のサービスのことを思い出しました。

かなり昔の話でサービス名は完全に忘れてしまったんですが、パスワード再設定用のURLで旧パスワードも入力させられた覚えがあります。

パスワードリマインダーとは何だね?

単なる設計ミスというか、多分マイページから行う通常のパスワード変更とごっちゃになったんじゃないかと思うんですが、ちゃんと運用テストしたのかな。いや、していまい。


0 件のコメント:

コメントを投稿