2012年10月12日

指紋認証の脆弱性に関するメモ

UPEK Protector Suiteなる指紋認証が、あまりにも馬鹿馬鹿しい実装だったらしいので解説しておく。
http://blog.crackpassword.com/2012/08/upek-fingerprint-readers-a-huge-security-hole/

生体認証は
・生体データが本当に生体から得られているかチェック(例えば偽造指紋スタンプではなく生きた指かどうか)
・生体データから得られる鍵が十分な長さを持つ(他の人と一致しない)
・認証プログラム自体が保護されている(ブルートフォース対策)
ことの組回せで成り立っている。
正しく実装すれば、生体データから鍵を作り、秘密データを復号することで、秘密データを安全に復元できる。

このうち生体データには、ノイズ以外にも体調・成長による変化といったゆらぎがある為、十分大きな鍵を作ることは難しい。
普及レベルに実用的な生体認証は小さい鍵しか得られないため、一般にブルートフォース攻撃に脆弱になる。

ブルートフォースから保護するためには、認証プログラムを安全なOS環境で実行し、時間辺りの認証回数を制限したり、一定回数失敗したら秘密情報を破棄する必要がある。
たとえば、銀行ATMは秘密鍵として使える情報量の少ない静脈認証が使われているが、静脈を銀行の監視カメラの下で偽造するのは難しく、ブルートフォースは不可能なので問題はない。

逆に言えば、認証プログラム自体を改ざんしたりして、ブルートフォース対策を迂回できる場合、(十分な長さを持たない)生体データを予想することで、比較的簡単に秘密情報にアクセスできてしまう。認証プログラムが一般のPC上で動いている場合、他のユーザのように一定のアクセス権を持つ第三者からも、完全に保護することはとてもむずかしい。

高価なアプライアンスでは、独立したハードウェアに認証システム全体を取り込み、ハードウェアの耐タンパ性で認証プログラムとデータを保護することで、生体情報の鍵データの小ささをカバーしている。これが本来の生体認証と言われるもの。

問題が指摘されている指紋認証は、ソフトウェア、しかもWindowsレジストリに秘密データを保存していたため、簡単に暗号化された秘密情報にアクセスでき(ブルートフォース対策を回避する必要が無い)、しかも指紋から得られる鍵情報がとても小さいため簡単に鍵を推定できるようだ。
さらに酷いことに暗号化されたと言っても、常に一定の固定鍵だったようだ。
http://www.zdnet.com/enterprises-most-vulnerable-to-fingerprint-reader-attacks-researcher-says-7000005575/


大雑把に言って、レジストリにアクセス可能なソフトウェアをインストールしてしまうと、パスワードを平文で得られる。
悪意あるソフトウェアを起動した瞬間にパスワードが漏れることになるため、記事の参照しているブログでは、指紋ログイン機能を停止することを推奨している。

(追記)
生体認証の安全性と、平文パスワードを復号する必要のない生体認証を実現する条件について、次のエントリに書いた
http://causeless.seesaa.net/article/297035731.html

(追記)
Lenovoの http://support.lenovo.com/en_US/downloads/detail.page?DocID=DS031505
が対策パッチかもしれない from http://b.hatena.ne.jp/airj12/20121012#bookmark-115103634




ラベル:暗号論 生体認証
posted by ko-zu at 00:12| Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。