ゴミクズがスタートアップするブログ

日常に飲まれないためのサードプレイス

認証(対象の正当性を検証すること)の未来について考えてみた

最も身近な認証とは何だろうか。おそらくそれはパスワード認証だ。 操作する人と操作する情報の組み合わせが正当か否かを検証している。

最も堅牢な認証とはなんだろうか。例えば生体認証だとかSSH公開鍵認証が予想されるだろう。 手続きは違えど、どちらも鍵穴の複雑さを安全性の源としている。

安全性の源が複雑さなのは、パスワードも同じだ。 なぜなら、パスワードを総当りにより解析できる時間の平均値 (解析時間 L) は,

L = P・S / R = AM /(2R)

P:パスワードが推定される確率 (= 1/2) R: 単位時間に行えるパスワード探索回数 S: ユニークなパスワード数(パスワード空間)  S = AM   A: パスワードに使われる文字種類   M: パスワード文字数

で計算でき、大体の認証機構では「回数制限」か「文字種・文字列長制限」が成されているので、現実的な時間ではアクセスが出来ない仕組みになっているからだ。

加えて、パスワードを予想できないなら無理矢理知ってしまおうと言うことで脳から直接情報を取得することを考えたとして、脳に電極を指して複雑な信号の集まりから意味を見いださなくてはならないので、あなたはまずノーベル賞から取得しなければならない。

さて、複雑さによって予想がされない認証情報(生体情報, 公開鍵認証方式に使う秘密鍵, パスワード)だが、人間が全てを管理するには多岐に渡りすぎているのも事実だ。どこでどう管理するかと言う問題が生じてくる。

すごくバカらしい例だけど、もしも認証情報をあなたのブログで公開していたら、どんなことが起こるだろう?たぶん、第三者があなたに成り済まして多額の決済を済ましてしまうと思う。あるいは、イスラム国の国民になる手続きが完了している。

だから、認証情報はなるべく「参照可能性の低い媒体」にまとめたいということになる。ブログのような皆がアクセスできる媒体に認証情報を保存するのはバカらしい例えだった。でも、ローカルのテキストファイルだってパソコンやスマホを奪われれば参照可能だし、evernoteのサーバーがクラックされたり、ベネ○セさんみたいに信頼していたところからパスワードが漏れちゃうかもしれないし、参照可能性は実は至るところにあることが分かっていただけたと思う。

だから、僕は参照可能性が低くて、なおかつ使うためのアクションが少ない、便利な認証情報管理ツールがあれば良いなと思った。だって、あるサービスを使う度にパスワードを聞かれて、いちいちツールを開いて確認するのは嫌だ。出来る限り「認証された証」を元にシームレスに処理を行って欲しい。

そしてそれは例えば1Passwordのようなパスワード一元管理ツールだったり、OAuthのような認可手順簡略化アルゴリズムだったりする。理想の認証情報管理ツールは、認証の手順を簡略化することと、参照可能性が低いことを同時に満たす必要がある。

そこで思いついたのがウェアラブル端末だ。特に、直近では腕時計が良いと思った。なぜなら、常に身につけているし、盗まれないからだ。将来的には、コンタクトレンズ型だとか、皮膚埋め込み型だとか、脳癒着型があってもいい。

ともかく、種々のパスワードとその「認証した証」は一箇所から参照するようにして、それが物理的に奪われにくいことが「参照可能性が低いこと」に繋がると思った。

暗号化された認証情報をBluetoothで操作しているデバイスやサイトに送る。その間にパスワードや生体認証の存在を意識することは無い。そういった「意識されない認証」が認証の目指す姿だと思った。

昨今のWEB界隈を見ていると、皆パスワードを自前で持たない方向に進んでいる。OAuthは登録やログインが簡単だからという以上に、パスワードを持つリスクが必要無いから開発者にとっても喜ばしい。

他にもfirefoxのPersonaはBrowserIDによって(賛否両論あれど)表面的にはemail情報だけで認証を実現する。

Json Web Tokenを用いれば安全に認証した証をサイト間で融通できるし、何なら抜かれたらまずい情報は除いて、初めから登録・ログインを済ませて置いて欲しいと思うケースさえある。(信頼できるサービス運営者のみで相互にログイン情報を融通する形で実現されるイメージ)

そう考えると、twitterfacebookがパスワードを管理している現状は過渡的なもので、未来では「OAuthのサーバーとなるためだけのサービス」が存在しても良いのかもしれない。パスワードとログインという概念が空気のようになって、腕時計とサービスひとつで全てが実現されている未来はもうすぐそこなのかもしれない。