暗証番号はなぜ……
話を元に戻しましょう。
暗証番号というしくみ自体が、かなりサービス提供者側の都合で作られているので、その先に位置する「じゃあ、なんで暗証番号は4ケタなの?」という疑問についても、あまり合理的な理由は期待できそうにないなあ、と思いませんか? 実際、合理的な理由はありません。
パスワードの構造的な欠陥の1つに「推測できる」という点があります。
パスワードは本人が考えて秘密にしておけば他人にはもれないはずですが、パスワードを考える本人も完全にランダムなパスワードを作れるわけではありません。
あんまりめちゃくちゃなものは自分も忘れてしまうからです。
かといって、紙に書いて持ち歩いたりしたら盗まれるかもしれません。
かくして、自分の名前や生年月日、電話番号をパスワードにする人が大量発生するわけです。
悪意のある人は、ここに付け込みます。
パスワードは秘密でも、名前や生年月日、電話番号は公開情報です。
昔のように無制限に電話帳に載るようなことはないにしても、かなりの人がこれらの情報を公開しています。
すると、パスワードは分からなくても生年月日を手に入れて、試しにそれをパスワードとして使ってみる、というやり方ができます。
たまたまその人が生年月日をパスワードにしていたら、もうその認証システムは破られてしまったことになります。
その人がとても慎重で、絶対に推測できないようなパスワードを考えていたとしても(覚えておくのにすら苦労するでしょうけど)、パスワードを見破る方法はあります。
また、有名なのが「総当たり」というやり方です。
パスワードには、一般的に使える文字種や字数の制限があります。
文字種はキーボードの制約があるにしろ、字数というのはなんでしょうか? パスワードもサービス提供者にとっては1つのデータですから、業務で使うにはデータベースに格納する必要があります。
データベースというのは、データの格納効率を考えると、なるべく入れるデータのサイズが決まっている方がありがたいのです。
少なくとも最大データサイズは決まっていないととても作りにくくなります。
なので、サービス提供者は「パスワードは何文字まで」と決めるわけです。
あまり大きくすると余分な格納領域をとってしまってコストがかかりますから、「8文字まで」なんてところも多いですね。
利用者も、「128文字まで」なんて言われでも、そんなに長いパスワードは覚え切れませんから、「まあそんなもんかな」と納得してしまいます。
言ってみれば、サービス提供者にも利用者にも優しい形態なのですが、これは犯罪者にとっても優しいしくみになります。
例えば、「パスワードにはアルファベットの小文字しか使えなくて、3文字まで」なんて決まっていたらどうでしょう?アルファベットは26類しかなくて、その組み合わせが3文字分ですから、aaaから始めてzzzまであらゆる組み合わせを試してみても、1万7576通りです。
昼休みの暇つぶしにやるにはちょっと尻込みしますが、当たりを引けばお金が手に入ると分かっていれば、そんなに大変な作業でもありません。
しかも、1万7576通りを試すというのは、とっても運の悪い最悪のケースで、確率的には8788通りも試せば、「当たり」のパスワードにぶち当たってしまいます。
「パスワードとして考えられるすべての可能性を試していけば、いつか正しいパスワードが分かってしまう」というのは、あきれるほど単純な真理ですが、パスワードを運用する上では絶対に理解しておく必要があります。
これもパスワードが持つ構造的な欠陥です。
「パスワードはなるべく長くしろ」とか「大文字や小文字、数字や記号も組み合わせて作れ」というのは、総当たりをしにくくするための警句なんですね。
それでは、暗証番号はどうでしょうか? 実はこれほど総当たりに対して弱いパスワードは類を見ません。
なんせ使える文字種は0~9まで、10種類の数字だけなのです。
しかも、最大ケタ数は4 ケタです。
これはどういうことを意味するでしょうか? パスワードとして考えられる最大の組み合わせは、0000~9999までの1万通りしかないということです! 期待値としては、犯罪者は5000回も試しに暗証番号を打ち込んでみれば、「当たり」の番号を引き当ててしまう可能性が高いのです。
これは、大事なお金を管理するためのシステムとしては、恐るべき脆弱性と言えるでしょう。
また「少なくとも4ケタというのは理論的に決まった数値じゃないの?」とか「コンピュータにとってキリのいいケタ数だから4ケタにしたんでしょ?」と言う方もいます。
しかし実際のところ、これにはさしたる根拠はありません。
暗証番号は「暗唱」番号ってなもので、「4ケタくらいだったら、お年寄りでも暗唱できるよね」くらいの思考が働いた結果のケタ数です。