ちょっと機会があって「暗号化されたパスワードリスト」を入手したので(一応、合法ですし関係者に了解は得ています)、John the Ripperにかけてみたところ約半数のパスワード解析に成功するという愉快な経験をしました。で、世の中の人がどのようなパスワードを設定しているのかを垣間見てしまったんですが、まあJohn the Ripperで解析されるくらいなので単純なものが多いわけです。ユーザ名から類推できるなんていうのもザラで、辞書単語も多いですし、一見するとランダム文字列でも文字種が小文字と数字しかなかったりで、総当たり攻撃の前には為す術もないわけです。「辞書単語+数字4桁」だったりすると、この人のキャッシュカードの暗証番号はコレなんじゃねぇかとすら思ってしまいます。「名前(あだ名)+生年or誕生日」というパターンもちらほらいました。携帯電話のメアドじゃねぇんだから。
有識者の間では「パスワードは長くて複雑にしろ」「サイトやサービスごとに別のものを設定しろ」と言われて久しいですが、一般の意識というのはまだそこまで行かないのかなぁというのが率直な印象です。無条件にサービス側を信用していてパスワードが漏れるわけないと思ってるんでしょうか。かの米国Yahooですら暗号化された状態とは言えパスワードの流出をやらかしてるので安心はできませんし、暗号化されてたって単純だったら解析はできてしまうんですからねぇ。
じゃあどうするのがベターか
まず前提条件から考えるとこんなところ。
- 各種サービス側でパスワードはどう管理されてるかわからない。暗号化されてるかもしれないし、平文かもしれない。暗号化されてても解析は簡単(MD5くらい)かもしれないし、複雑(ソルト付きハッシュとかストレッチとか)かもしれない。
- 情報漏洩が起きると、「ユーザ名・メアド・(暗号化された)パスワード」が流出する可能性はある。つまり同じIDとパスワードで他のサービスにログインを試行される可能性がある。
というわけでパスワード設定の必須条件はこうなるわけです。釈迦に説法です。
- サービスごとに別のものを設定する。
- 総当り攻撃耐性の強いものにする。可能な限り長くて、文字種も大文字・小文字・数字・記号を全て使う。
結局これを人力で覚えて管理・運用するのは一般人には至難の業なので、パスワード管理系のソフトを使うか、ブラウザに記憶させるかというのが現実的なところじゃないかと思うわけです。特にブラウザ保存は否定派も多いとは思いますが、ブラウザに保存されたパスワードにアクセスできる段階で別のセキュリティ上の問題があるので無視します。「弱いパスワードを毎回手で入力する」方がよっぽどセキュリティ上のリスクじゃねぇかというわけで。世の中にはそうでもない人もいるので、もはや宗教的な感じもしますが。
ともかく弱いパスワードを設定してしまう最大の動機は「覚えやすい」「入力しやすい」というところにあるので、もうこの2点を排除してしまわない限り複雑なパスワードを設定・運用することはできないんじゃないかと思います。
んで、サイトやサービスによりますが、許容される最大文字数かつ可能な記号を使ってパスワードを設定すれば良いわけです。簡単です。できれば1Passwordなどのツールを使うのがベターだとは思いますが、最悪テキストファイルにメモとかでも、そのファイル自体の流出に気をつけられれば、簡単なパスワードを設定してしまうより遥かに良いんじゃないかと思うわけです。
問題はどうしても手で入力しなければならない状況
一つ問題があるとすれば、ツールを参照したりコピペしたりせずに、覚えておいたパスワードを手で入力しなければならないという状況、具体的にはOSのローカルログインです。あ、あとパスワード管理ソフトのマスターパスワードなんかもあるかもしれません。最悪、紙にメモしておくという手はありますが、物理的なセキュリティに気を使わないといけないので難儀なところ。またあまりにランダムで長いパスワードを設定してしまうと、仮に覚えられたとしても入力するのが面倒くさくなるのが難しいところです。現実的には15文字くらいが限界かなぁ、20文字くらいまでならどうにか行けそうな気もしますが。
ローカルのパスワードがハックされる可能性というのはそれなりに難しいですが、だからといって簡単なものに設定していい理由はありません。やはり外部サービスのパスワードなんかと同じように、そこそこの長さと複雑さを持ちたいものです。
誰でも簡単にできそうなのは「かな入力換字式暗号」だと思うんですよ。目の前にキーボードがあって、ローマ字入力の人は一切使わないかなが刻印されてるので、「パスワードを日本語で覚える」という方法にすればよいんです。「すずきいちろう」だったら「rr@gea_4」になります、超簡単。
え? かな入力がそもそもできない? 英語キーボードやかな無刻印だ? 知らんがな。
OSのパスワードの定期変更を強いられる場合
無益だとは言いませんが、お察ししますし、そういうセキュリティポリシーを強いる状況があるのも知っています。でも「かな入力換字式暗号」をマスターすればこれも簡単。あなたが覚えている何らかの「一覧」から適当にピックアップすれば良いんです。「歴代総理大臣」でも「歴代横綱」でも良いですし「百人一首」なんかもありですね。「徳川将軍」から選んでしまうと名字がみんな同じなので前回と似たパスワードで弾かれるかもしれませんし、「歴代天皇」だと長さが気になります。
というわけで例として「歴代プリキュア」から取ってみます。これも一部を除いて「キュア○○」なので接頭辞が似てしまう欠点があるので、変身前の本名の方を設定すればよいでしょう。長さが欲しいなら2人分にするとか、声優と組み合わせるとかでしょうか。加えてどこでシフトを押すかのルールを決めておけばOK。
「日向咲・美翔舞」ならば「V(4t@xg?Nd)4je」になります。パスワード的にはすげぇ強そう。覚え方も「ブルーム・イーグレット」とだけ覚えておけばよいので実に覚えやすい。3ヶ月くらいして変更を強いられたら「秋元こまち・水無月かれん」なんで「#gmsbja?Nuz@gt;y」となり、「ミント・アクア」とだけでいいのでやっぱり覚えやすい。仮に手帳とかにメモしておいてもまさかパスワードとは思いません。
え? プリキュアの名前なんて覚えてないし、本名や声優まで覚えられない? 知らんがな。
ちなみに欠点はないの?
ないことはないです。英語キーボードだと特に記号の配列が違うので入力できないことですかね。かな無刻印の日本語配列ならどうにかなりますが。まあこの問題は平易なパスワードでもキーボード最上段や右側の記号が含まれると同じ罠にはハマるので、「かな入力換字式暗号」固有の欠点というわけではありません。
あとはWebサービスのパスワードなんかでこの方式を利用しようとすると、記号の入力制限に引っかかることが多いです。濁点が@になったり、「ゃ」がシングルクオートになったり、「ー」が円記号になったりするので、特に引っかかりやすいところ。使える文字種が少ないWebサービスは滅べばいいのに。
コメント