パスワードは難しくすると覚えられない。しかし,簡単にするとばれてしまう――。これがパスワード運用について回るジレンマである。

 では,解決策はないのか。少し発想を変えてみよう。認証の根本は,本人だと確認することである。つまり,パスワードという言葉にこだわる必要はない。どのようなものでも,本人を証明できればよいのだ。

 本人を証明するための材料としては(1)その人しか知り得ない記憶,(2)持ち得ない品物,(3)本人にしかない体の特徴――などが考えられる。(1)には従来のユーザー名/パスワードが含まれる。(2)の代表選手としては認証情報を不揮発性メモリーなどに記録するICカードがある。(3)は指紋などその人固有の特徴を認証情報に使うバイオメトリクス認証である。いずれも利点/欠点があり,完璧な選択肢はない。

作成や記憶を支援するツールが登場

 パスワード作成術や記憶術を学ぶという方法もあるが,それらは記憶しておくという負担をユーザーに強いる。なかには「そんな努力はしたくない」と思う人もいるだろう。

写真1●パスワード強度判定画面
入力したパスワードの強度をWindowsとUNIX別に示す。写真の「全長が有効な場合」と「8文字までに制限される場合」の二つがUNIXの強度。1.6GHz動作のPentium 4を使った場合の解析時間を表示する。ショルダ・ハッキングの危険度,パスワードに利用している文字ごとの強さも判定する。製品では表示方法が大きく変わる予定。

 何よりも,作ったパスワードが本当に強いかを調べる方法もない。確かに,一見複雑なパスワードは推測できないかもしれない。しかし,ブルートフォース・ツールで攻撃すれば,簡単に破られるものかもしれない。

 この問題をある程度解決してくれるツールが,2003年6月頃に登場する。セキュリティ研究チームSecurityFriday.comが開発した「認術修業」だ。このツールは作成したパスワードがどの程度強いのか,パスワードのうちどの文字を変更すれば強度が上がるのかを指南する。また,パスワードの記憶を支援するツールも付属する。

 オンライン・ショップ経由で販売する予定。価格は未定だが,エンドユーザー向けの機能限定版が6000円程度,システム管理者向けが1万5000円程度になる見込みである。

パスワードの弱点を除去

 忍術修業では,パスワード・クラッキング・ツールとして有名な「John the Ripper」などをベースに開発したアルゴリズムでパスワードの強度判定する。製品化前のプロトタイプでは,パスワードの強度をUNIXで使用する場合とWindowsの場合に分けて表示する(写真1[拡大表示])。1.6GHz動作のPentium 4を基準に,同社のアルゴリズムで何日間解析すれば判明するかを計算し,それを強度として示す。「絶対に使ってはいけません」などの警告も出す。

 また,キーボードの配列を利用したパスワードになっていないかを判定し,ショルダ・ハッキングの可能性を「高」「中」「低」で評価する。

 このツールで興味深いのは,パスワードに使った文字列の中のどの文字が弱かったのかをグラフ表示してくれる点である。弱かった文字を変えれば,その都度,強度表示が変わる。

 例えば,「nakamichi」というパスワードを判定してみた。すると,この文字列が辞書ファイルに登録されていたため,「0日」で解けるという判定が出た。これを強化するために,「a」を「@」,「i」を「|」に変更した。文字を変更するたびに,値(解析にかかる期間)は変化し,2文字を変更しただけで強度は大きく上がった(Windowsで解析した場合,260日かかるようになった)。この文字列を「{」「}」で囲むといった変更を施せば,さらに強力なパスワードになっていく。ベースとなるパスワードを自分なりのルール(例えば「a」を「@」に変えるなど)で変更していけば,覚えやすく,強力なパスワードを作成できるだろう。

写真2●パスワード・カード
パスワードをランダムな文字の中に埋め込む。この画面では左上から斜め下方向に「n@k@m|ch|」というパスワードが埋め込んである。

 パスワード作成を支援するだけでなく,強いパスワードをツールに作らせることもできる。プロトタイプでは,解析に必要な日数を強度のパラメータとして与える。そして,発生させるパスワードの数を入力して実行すると,設定した強度を持つパスワードが生成される。システム管理者がユーザーごとの初期パスワードを作る場合に有効である。

パスワードをランダムな表の中に埋め込む

 パスワード作成支援機能を使って覚えやすい文字列を作れたとしても,それらを完全に覚えるのは難しいだろう。複数のパスワードを覚えなければならない場合はなおさらだ。

 これを補助するために用意するのが,パスワードを印刷する機能だ。10×20の升目の任意の場所にパスワードを登録し,それ以外の場所をランダムな文字で埋めたカードを作る(写真2[拡大表示])。本人が見ればどこにパスワードが埋め込まれているかが分かるが,本人以外は単なる乱数表にしか見えない。印刷して手帳に貼っておいたとしても,漏洩の危険性は減少する。1枚のカードに複数個のパスワードを埋め込むことも可能だ。

 なかには,パスワードをどこに埋め込んだのか分からなくなると不安に思う人もいるだろう。そこで「パスワード・カードの背景に画像を埋め込む機能や升目の一部を塗りつぶす機能を製品版では付加する」(SecurityFriday.comのDaiji Sanaiリーダー)と言う。背景が車の写真なら,前輪の軸の部分がパスワードの開始位置と覚えられる。

思い出の写真をパスワードにする

写真3●ニーモニックガードの画面例
初期状態で用意されている絵の代わりに,自分で取り込んだ画像を利用することができる。
 「その人間が他人でないことを証明する唯一の手段は記憶だ。顔や体は年齢を重ねるにつれ変化していくが,その人のアイデンティティに根差した記憶は変化しない」。こんな発想を認証に持ち込んだのが,ニーモニック セキュリティの提供する「ニーモニックガード」だ。

 認証の仕組みは簡単だ。最大64個(8×8)の画像を画面に表示し,その中から認証に利用する画像を順番に選んで認証する(写真3)。例えば,小学校の時のクラスのメンバー全員の顔写真を卒業アルバムから取り込み,これを並べたとしよう。このうち,自分と仲の良かった順に四人選ぶという行為を認証に利用する。また,自分の子供の成長の記録やこれまでに飼ってきた動物の写真など,他人が見たときにその順番や画像の意味が分からないものなら,そう簡単に破れない。

 興味深いのは,正規のユーザーが悪意ある人に認証を強要された場合を想定した機能も備える点だ。非常時にあらかじめ登録しておいた異常事態を通知する画像をクリックすれば,異常事態だと判断して別の処理を呼び出すことができる(どのような処理をするかは,別途開発する)。

 当然,認証情報の入力を複数回間違えるとロックアウトする機能も備える。ロックアウトまでの回数は自由に設定できる。また,正規ユーザーがケアレスミスで入力を間違えたと推測できる場合に,それを許容する機能も備える。例えば,4個の画像の組み合わせで認証が成功するのに,3個の画像しか押していない場合などだ。押した動作がうまくマウスに伝わっていなかったと判断する。この場合,ロックアウトのカウントに入らない。

 現在,PocketPCとWindows 2000上で動作するスタンドアローン製品の販売を開始している。同社のWebサイトからダウンロードできる。価格は2980円。

 これに加えて,同社はネットワーク対応製品の販売も2003年5月頃に出荷を開始する見込み。Windows 2000上で動作し,ドメインのユーザー管理と連動する。不正に認証を試みた場合や緊急事態ボタンを押した場合に,そのイベントを管理者に通知する機能などが含まれる。