某WEBサービスの初期パスワード生成ロジックがお粗末でがっかりした件

先日上場企業が運営している某WEBサービスにアカウントを作ったのだがどう考えても「これはなしだろう」と思ったので問い合わせてみた。サービスに登録すると登録完了通知メールとともに初期パスワードが送られてくるが、これが推測可能。例えば私の個人アドレスはyusuke.sakaki@gmail.comだが、初期パスワードが「数字6桁」+「メールアドレスの@から前の部分」というロジックになっているので「123456yusuke.sakaki」のようなパスワードが来た。っていうかパスワードの文字列が長いように見えるが実質未知なのは数字6文字だけ!しかもアルファベットと記号は含んでないのね、という残念仕様


パスワードは英数記号を含むランダムな8文字以上の文字列が安全と言われていて、生成するロジックは数分で書ける(か既存のシステムからコピペすれば1秒だ!)ものだ。そうするだけで文字通り桁違いにセキュリティが強化されるのになんでわざわざパスワード強度を弱める仕様にしているか謎。普通最初に気にするだろうパスワード部分がこの仕様だと他の部分にも残念仕様があるのではと利用者が不安になるのでやめてほしい。


ちなみに技術者でない人向けに書くとサーバに対するパスワード総当たり攻撃というのは日常的にあります。たいていどっかの乗っ取ったサーバで攻撃プログラムを走らせて一日でも二日でも延々とログインを繰り返すログが残っていたりします。プログラムは疲れないので放っておけば延々とやってます。その際に組み合わせ数が100万なのか数百兆なのかという桁数が重要なのは自明でしょう。

初期パスワードが安易過ぎる件について

昨日アカウントを作ったのですが「登録完了のお知らせ」というメールに書かれていた「初期パスワード」が安易なので驚きました。セキュリティ上不安ですので改善を希望します。


現在ログインIDはメールアドレス、パスワードは「数字6桁」+「メールアドレスの@から前の部分」というロジックになっているようです。


1.ユーザのメールアドレスを特定することは可能である
御社サービスを使用している人を検索するだけでメールアドレスの候補を収集できます。またそのメールアドレスでアカウント登録できるか試すことで実際にメールアドレスが使われているか特定可能でしょう。


2.パスワード生成文字列の強度が弱すぎる。実質数字6桁である。
メールアドレスから「メールアドレスの@から前の部分」の部分が決まりますのでパスワードとして未知なのは、数字6桁だけということになります。


数字6桁をランダムに生成するプログラムを書いて総当たりさせることは簡単です。大雑把に組み合わせを計算すると数字6桁とそれ以外では推測可能性が全然異なります。細かい数値は違うかもしれませんが詳しくはIPAMicrosoftからガイドラインが出ていますからそちらを当たってください。
・6桁の数字のみ(10の6乗=100万通り)
・8桁の数字とアルファベットの組み合わせ(62の8乗=約218兆通り)


パスワード生成の原則として言われるようなことの真逆を行っているようで残念です。
・IDと同じパスワードにしない(IDとは無関係な文字列にする)
・パスワード生成ロジックを推測可能にしない(誕生日や特定の書式は避ける)
・文字種や桁数を増やす。(8文字以上英数記号など)


例えばランダムな8文字以上英数記号を含む文字列を生成するプログラムは10行程度ですが、そうするだけで100万通りと約218兆通りと文字通り桁違いにセキュリティが安全になる訳ですので、ぜひご検討ください。