増井ラボノート コロンブス日和

第8回 EpisoPass

この記事を読むのに必要な時間:およそ 3 分

パスワードの諸問題

さまざまなWebサービスでユーザ認証のためにパスワードが使われています。パスワードはいろいろ問題が多いシステムであり,パスワードにかわるさまざまな認証システムが提案されてはいるものの,すべての点でパスワード認証より優れたシステムは存在しないと言われているので,パスワードによる認証がほかの方法で置き換えられる時代はすぐには来ないでしょう。

パスワードの最も嫌なところは,覚えておくのがとてもたいへんなことだと思います。パスワードを忘れて困った経験がない人はいないでしょう。いろいろなサービスで同じパスワードを使い回すのは危険ですし,パスワードはときどき変更したほうが安全だと言われていますが,複雑で長いパスワードをたくさん覚えておくことは不可能ですから,仕方なく同じパスワードを使い回している人は多いと思います。

異なるパスワードをすべて記憶することが不可能なのであれば,紙やファイルに書いておけば良いかもしれませんが,パスワード文字列をそのまま記録するのは危険なので,複数のパスワードを暗号化して覚えておくためのさまざまなパスワード管理システムが利用されています。たいていのパスワード管理システムは1つの「マスターパスワード」を利用してほかのすべてのパスワードを管理するようになっていますが,マスターパスワードは覚えておかなければなりませんし,パスワード管理システムはどこでも使えるとは限りません。できれば特殊なシステムを使うことなく,複雑な多数のパスワードを利用できるほうがうれしいでしょう。

そもそも強力なパスワードを作成してからそれを覚えたり管理したりするというやり方が間違っているのではないでしょうか。新しく作ったパスワードを覚えたり管理したりするのではなく,すでに知っていて忘れようがないような秘密の記憶を基にして,複雑なパスワードを生成して使うことにすれば,パスワードを覚えられない問題は解決するはずです。

EpisoPass

子供のころちょっと怪我をしたとか,イジメられた嫌な経験とか,うっかりした失敗を隠していたとか,他人に話したことはないけれども忘れることがないような秘密の記憶というものが誰にもたくさんあると思います。強い体験に基づく記憶は,エピソード記憶と呼ばれ,時間が経っても消えることがありません。一方,数式や電話番号を記憶しようとしてもなかなか覚えられませんし,覚えていたつもりでも時間が経つとキレイに忘れてしまっていたりするものです。このようなものは意味記憶と呼ばれ,エピソード記憶に比べると長期的な記憶が困難です。

パスワードがエピソード記憶だったら良いのですが,体験的にパスワードを覚えるのは無理でしょう。であれば逆に,忘れることがない秘密のエピソード記憶を基にして,パスワードを生成するようにすれば,秘密で複雑で忘れないパスワードを安心して使えるようになるはずです。

EpisoPassは,ユーザが忘れることがない個人的なエピソード記憶を,複雑な文字列に変換することによって安全なパスワードを生成するシステムです。

パスワード文字列は次の手順で生成されます。

  • パスワード生成の「種」となる文字列(シード文字列)を用意する
  • 忘れることがない個人的なエピソード記憶に基づく秘密の質問をいくつか作成し,それぞれについて1つの正答と複数の偽答を用意する
  • 質問と回答の組に基づいてシード文字列に換字操作を行う。すべてに正しく回答したとき生成される文字列をパスワードとして利用する

問題文字列とユーザが選んだ回答文字列を結合した文字列を生成し,そのMD5値を基にしてシード文字列を換字することによりパスワードを生成しています。

ブラウザでの利用

図1は私がTwitterのパスワードを生成するために,ブラウザでEpisoPassを利用しているところです。

図1 EpisoPassの利用例

図1 EpisoPassの利用例

シード文字列として「Twitter123456」という文字列を指定しており,4個の秘密の質問に対する回答選択に応じて,「Mfveabn574923」のようなパスワード候補が生成されます。

異なる答えを選択するとまったく異なる文字列が生成されます。

シード文字列を「Facebook123456」に変更すると,生成されるパスワードは図2のように変化します。このように,サービスごとに異なるシード文字列を利用することによってさまざまなパスワードを簡単に生成できます。

図2 EpisoPassによるパスワード生成

図2 EpisoPassによるパスワード生成

「いつのパスワードですか」のような質問を用意しておき,「2016/5」「2016/6」のような選択肢を用意しておけば,毎月異なるパスワードを生成できます。

シード文字列の8文字目が数字である場合はパスワードの8文字目も数字になるなど,シード文字列の文字種に対応したパスワード候補が生成されるようになっています。パスワードとして大文字/小文字/英数字/記号をすべて利用しなければならないサービスの場合は,シード文字列に「PassWord123!@」のような文字列を指定します。

最初の秘密の質問は私の小学校のときの体験に基づくもので,最後の質問は数年前の体験に関するものです。これらは古いエピソード記憶になっているので,私が将来答を忘れることはほとんど考えられませんが,私以外の人間がこのような質問に答えることは難しいので,正しいパスワードを得ることはできません。

秘密の質問と答はブラウザで編集でき,右上の[サーバにセーブ]ボタンを押すことにより,シード文字列,秘密の問題,答のリストがサーバにセーブされます。[ファイルにセーブ]ボタンを押すとJSONデータをパソコンにダウンロードでき,パソコン上のJSONデータをブラウザにドラッグドロップすると,サーバにアップロードできます。ユーザはどれが正答かを指定するわけではないので,問題データを見てもユーザのパスワードはわかりません。

著者プロフィール

増井俊之(ますいとしゆき)

1959年生まれ。慶應義塾大学環境情報学部教授。ユーザーインターフェースの研究者。東京大学大学院を修了後,富士通半導体事業部に入社。以後,シャープ,米カーネギーメロン大学,ソニーコンピュータサイエンス研究所,産業技術総合研究所,Appleなどで働く。2009年より現職。携帯電話に搭載される日本語予測変換システム『POBox』や,iPhoneの日本語入力システムの開発者として知られる。近著に『スマホに満足してますか? ユーザインターフェースの心理学』。

コメント

コメントの記入