数学的に安全なパスワードとは?

今日はパスワードについてのお話。

スマートフォンやパソコンを使っている人は様々なサイトやサービスでいろんなパスワードを入力すると思います。
中には、面倒と思って1つのパスワードを使いまわしたり、短いパスワードを使っているのではないかと思います。

今回は短いパスワードを使っている人向けにどれだけそのパスワードが破られやすいか、
また破られにくいパスワードはどんなものかを数学的(数Aの組み合わせ)解釈から考慮したいと思います。
※実際はより複雑な計算で確率を算出したりしますが、今回は簡易的に計算しています。

 

破る側の方法ですが、「ブルートフォースアタック」というすべての組み合わせを試す方法を行うものとします。
なお、パスワードに使用できる文字は「数字」「アルファベット大文字」「アルファベット小文字」とし、
パソコンの性能や環境にもよるが、ここでは1秒間に1000万通りの組み合わせを試せると仮定します。

まず4文字の場合、組み合わせは(10+26+26)^4=14,776,336通り(1477万6336通り)となります。
1秒間に1000万通りの組み合わせが可能なため、これだとおよそ2秒で突破されることになります。
あらら、4文字だと意外とすぐに突破されるのですね。

次に8文字の場合はどうだろうか。これはパスワードを設定する際の最低文字数に設定しているサービスも多い。
組み合わせは(10+26+26)^8=218,340,105,584,896通り(218兆3401億558万4896通り)となります。
1秒間に1000万通りの組み合わせで解析されても、最大でおよそ253日の時間を要することになります。

実世界でずーっと解析されることはまずないと思いますが、粘着されたら1年以内に突破されてしまいますね。
そういえば長らくパスワードを変更していないサイトやサービスでは、「パスワードを変更してください」とアラートされることがありますね。
3ヶ月~6ヶ月の周期でアラートされることが多いのですが、それは253日の数値にちょっとした意味があります。
253日の解析中にパスワードを変更されたら、また1から解析しないといけなくなります。
もちろん、変更前に突破される可能性もありますが、短い周期でパスワードを変更すればその可能性は低くなります。
もしこの辺りの正確な確率が知りたい方は勉強して自分で計算してみてください。(計算方法は質問して頂ければ教えます)

さて最後に16文字の場合だが、サービスによってはこの文字数を上限にされている場合もあります。
組み合わせは(10+26+26)^16=47,672,401,706,823,533,450,263,330,816通り(4穰7672秭4017垓682京3533兆4502億6333万816通り)となります。
ちなみに兆より上の単位は、京(けい)垓(がい)秭(じょ)穰(じょう)とそれぞれ読みます。
1秒間に1000万通りの組み合わせ解析すると…
うるう年も考慮して最大でおよそ151,064,725,159,149年(151兆647億2515万9149年)もかかることになりますね。
宇宙誕生が138億年前、地球誕生が46億年前…そう考えるとしばらくは突破されないでしょうね(笑)

 

英数字大文字小文字を16文字組み合わせれば、ブルートフォースアタックにてパスワードが破られることはまずないでしょう。
とはいえ、実際はこんな完璧なパスワードを設定している人は少ないでしょうし、実際にはそう単純ではありません。

実際にパスワードが第三者に破られてしまう原因としては、単純にパスワードが短いという理由以外に
「悪質なサイトに共通のパスワードを入力してしまった」「誕生日や名前などの予想しやすいものになっている」など原因があります。
ですので文字数と同時に、しっかりリスク管理の意識をもって、適切な対応ができるようにすることが大切だと思います。

みなさんも、パスワードを管理する際は気を付けてくださいね。
それではまた次回。