入り口でさっと手をかざすと扉が開き,手のひらをセンサーに押し当ててコンピュータにログインする――。一昔前のSF映画でよく見かけた光景だ。でも,21世紀になった今でもごく一部の企業などを除けば,あまり身近に見かけない。実は,指紋認証のような技術をネットワークで利用するには難しい点があるのだ。

 その理由を説明する前に,まず指紋認証のしくみをざっと見ておこう。

 インターネットなどでユーザーを認証するのにもっとも多く使われている方法は,ユーザーIDとパスワードを利用するものだ。ユーザーを区別するIDと,そのユーザーしか知らない情報=パスワードで,そのユーザーが本人であると認証する。このパスワードの代わりにユーザー本人の身体的な特徴を使って個人を特定する技術を一般に生体認証(バイオメトリクス)と呼んでいる。指紋認証も生体認証の一種だ。

 指紋認証は,小型のスキャナで指紋の画像を読み取り,あらかじめ登録してあるデータを比較して十分に似ていれば本人だと認証する方式。指紋の情報は,指紋の画像から特徴的な部分を抽出してその位置関係を記録したデータ(特徴点データ)にするのが一般的である。認証するときは,この特徴点データ同士を比較することになる。特徴点データは測定するたびに微妙に変わるので,指紋認証技術のキモは微妙に異なる特徴点データを比較して「十分に似ている」と判別する手法にある。

 こうした指紋認証をネットワーク経由で行うには,パスワードの代わりに指紋の特徴点データがネットワークを行き来することになる。しかし,生の特徴点データが途中で盗聴されてしまうと,そのデータをそのまま流用して簡単にそのユーザーになりすますことができる。

 ユーザーIDとパスワードで認証する方法でも,高度なセキュリティが要求されるケースでは,盗聴されても大丈夫なようにパスワードをそのまま送らない方法が使われている。例えば,認証する側が送ったビット列(チャレンジという)とパスワードを一方向関数(ハッシュ関数という)に入れて計算し,その結果だけをやりとりして認証する「チャレンジ・レスポンス認証」という方法がそれに当たる。

 では,指紋認証にもチャレンジ・レスポンスのしくみを当てはめればいいと思うかもしれないが,そうはいかない。指紋認証では,あらかじめ登録しておく特徴点データと,指紋センサーでそのつど測定して得られた特徴点データがまったく同じということはまずありえない。ハッシュ関数は元の情報がちょっとでも違うと結果がまったく違ってくるので,特徴点データ同士をハッシュ関数にかけても認証できなくなってしまうのだ。つまり,指紋認証にはチャレンジ・レスポンスのしくみは使えない。

 このように,指紋認証を使うためにネットワークで普通に使われている認証技術をそのまま当てはめるだけでは,安全に利用できない。指紋認証をネットワークで使うなら,認証のたびに暗号鍵を変えて暗号化するような別のしくみを用意する必要があるのだが,まだそういった標準的な枠組みも決まっていない。こうした理由から,指紋認証はネットワーク認証としてあまり利用されていないのである。

山田 剛良