password

パスワード

2024年1月の共通テスト「情報関係基礎」の最初の問題(第1問、問1a)です:

個人のアカウントで情報端末にログインするためのパスワードは, にするのがよい。

の解答群
複数の友人と話し合って考えたもの
英字,数字,記号を組み合わせたもの
自身がよく使うオンラインサービスと同じもの
特別な理由がない限り,与えられた初期パスワードのまま

正解はのようですが、本当にパスワードは英字,数字,記号を組み合わせるべきでしょうか? 確かにパスワードが8文字しか設定できないといったときには、少しでも複雑にするために数字・記号を混ぜるほうがいいでしょうけれども、文字数の制限がなければ、文字数を増やすほうが簡単です。

具体的に計算してみましょう。英字(大文字・小文字)、数字、10通りの記号を使った8文字のパスワードは (26 + 26 + 10 + 10)8 = 722204136308736 通りです。一方、英字だけの9文字のパスワードは (26 + 26)9 = 2779905883635712 通りです。後者のほうが大きいのです。つまり、この場合、数字・記号を混ぜるより1文字長くするほうが強いパスワードになります。

このようなわけで、今は、パスワードの長さを8文字とかに制限せず、数字・記号を混ぜる必要がない、というのが正しいところです。この問題は、今のベストプラクティスを反映していないといえるでしょう。

ちなみに、「特別な理由がない限り,与えられた初期パスワードのまま」は本来は好ましくないのですが、経験上、乱数で生成した複雑な初期パスワードを配って、自由にパスワードを変更させると、簡単に破られるようなパスワードに変更してしまう人がけっこういます。初期パスワードのほうが安全なのです。初期パスワードは生成した管理者が知ることができるのでまずいと思われるかもしれませんが、管理者はパスワードがわからなくてもすべての情報にアクセスできてしまうので、どっちみち同じことです。だからといってを正解にするのもまずいですが。


パスワードは、十分複雑なものにしましょう。複雑なパスワードは、例えばパスワード生成のページや、Pythonのプログラムで作成できます。

パスワードを人に教えないようにしましょう。サイトごとに別のパスワードを使いましょう。

パスワードを定期的(たとえば数ヶ月ごと)に変更することを勧める人もいますが、あまり意味がありません。

十分複雑なパスワードを、利用するサイトの数だけ作れば、全部を覚えることは不可能です。サイトのURLとパスワードとの対応表を、安全な方法で記録しておきましょう。自分専用のスマホやパソコンなら、それらに覚えさせてもかまいません。

メールなどに書いてあったリンクをクリックして現れたサイトが本物サイトとそっくりだったとしても、そこにパスワードを打ち込んではいけません。たいていは詐欺(フィッシング)です。サイトのURLとパスワードとの対応表にしたがって、正しいURLのサイトだけにパスワードを打ち込みましょう。

他人のパスワードを使うと、不正アクセス禁止法の違反になります(この法律ではID・パスワードを「識別符号」と呼んでいます)。

m 通りの文字を使った n 桁のパスワードは mn 通りあります。例えば英字(大小文字)・数字・記号2通りを使うなら、m = 26×2 + 10 + 2 = 64 です。8桁にすれば、例えば Utz-VQ4i のようなパスワードになります。これは 648 = 281474976710656 通り(約281兆通り)あります。これだけあれば、オンラインのサービスのパスワードなら、しらみつぶしの方法で破られることは、まずなさそうです。

一方、例えば暗号化したファイルが流出した場合、何度でも試行できますので、超高速のコンピュータを使っても何年もかかるくらいの複雑なパスワードにしておく必要があります。私のコンピュータでは、十分安全な暗号化方式なら毎秒10〜35パスワードしか試せませんでした(パスワードをクラックする参照)が、敵はどんな強力なコンピュータを持っているかわからないので、十分長いパスワードを使いましょう。

2022年に尼崎市の委託業者が全市民の個人情報が入ったUSBメモリを紛失した事件がありましたが、その記者会見で市職員がUSBメモリのパスワードは13桁英数字と漏らしてしまいました。ネットでは Amagasaki2022 だろうとの予想が流れました。その後、USBメモリは無事発見されました。

13桁と漏らしてしまったことにより、どれくらいパスワードの試行回数が減ったでしょうか。ということで、問題です。

練習問題:m 通りの文字を使ったパスワードを、1桁、2桁、3桁、・・・と試していき、n 桁まで試し終わるための試行回数と、最初から n 桁だとわかっていて n 桁だけ試す場合の試行回数とでは、どれくらい違うでしょうか。

ヒント:1桁、2桁、3桁、・・・と試す場合、m + m2 + m3 + m4 + … + mn のような等比数列の和になります。


参考リンク: