セキュリティってなんだろう?

企業のセキュリティシステム構築に参加していた元SEが、セキュリティについて考えてみた。

長いだけが複雑なパスワードではない。

いくら安全になるからと言っても、無限にパスワードを長くするわけにはいきません。

パスワードには当然、「正規のユーザ」がいるわけで、「このパスワードは314 億1592万6535 ケタあるから絶対に破られない!」って力んでも、そんなもの誰も使いません。

この「複雑にしなければならない」と「あんまり長くできない」のバランスを取るためにひねり出されたのが、「パスワードは要求する複雑さを満たす」や「パスワードの履歴を記録する」といった設定項目です。

ちょっと分かりにくいのですが、「パスワードは要求する複雑さを満たす」は、この場合「英大文字・英小文字・数字・記号の4種類の文字種から3種類以上が使われている」ことを示しています。

同じ3文字のパスワードでも、「英小文字だけしか使っていないパスワード」より「英小文字も英大文字も数字も記号も入っているパスワード」の方が、総当たりするのに時間がかかります。

パスワードとして考えられるバリエーションが増えるためです。

Windowsでパスワードを変更しようとして、「入力したパスワードは要件を満たしていません!」と怒られるのはこれが原因です。

また、「パスワードの履歴を記録する」は、「複雑にすること」とは直接結びつかないかもしれませんが、クラッカの安直な推理を防ぐための手段です。

例えば、「7日間でパスワードを変更する」ことがルールになっている場合、パスワードがもれてしまっても最悪7日後にはパスワードが変更され、クラッカをふたたびパスワードが分からない状態にすることができます。

しかし、せっかく変更したパスワードが前のものと似ていれば、クラッカは総当たりより楽に新しいパスワードを見つけてしまうかもしれません。

クラッカはコンピュータと違って知性のある人間ですので、文脈を読むのが上手です。

例えば、Pさんの使っている「xyz」というパスワードがあったとします。

クラッカはこれをひょんなことから入手しましたが、Pさんはルールにしたがって7日後にパスワードを「xyx」に変更しました。

このときクラッカはどんな行動を取るでしょうか? 「パスワードを変更されてしまった。

もう一度総当たり法で新しいパスワードを手に入れよう」「aaa 」「aab 」「aac」……とするでしょう。

でもクラッカは違います。

「パスワードを変更されてしまったな。

でも待てよ? 新しいパスワードを作ったり覚えたりするのがめんどうで、似たやつを使っているかもしれないぞ。

前のパスワードを起点に探してみよう」「xyy」「xyx」!ビンゴ!このように人間はあらゆる情報を使ってパスワードを推測するので、「以前に使ったのと似たパスワード」や「以前のパスワードの使い回し」を用いることは非常に危険です。

Windowsの「パスワードの履歴を記録する」は、パスワードの変更履歴を指定回数だけ記録しておいて、同じパスワードには変更できないようにする機能なのです。

さらに厳しく、「前のパスワードと×××文字以上同じ文字が合まれていたらダメ」なんて決めているソフトウェアもあります。

いずれにしろ、限られた条件の中でできるだけ複雑な要素を取り込み、クラッカをまどわせる努力が払われているのです。

こうしたパスワード作成者とクラッカの知恵比べは(クラッキングはしちゃいけないんですけど)、はたから見ている分には知的ゲームとして面白いです。

古くから推理小説のプロットとしても使われています。

有名どころでは、ドイルの「踊る人形」(『シャーロックホームズの帰還』所収)やポーの「黄金虫」が秀逸なので、未読の方は是非どうぞ。