2012年10月12日

平文パスワードの復号を必要としない生体認証について

前エントリの続き。プラス、平文パスワードを復号できる必要性が、某氏に理解してもらえなかったようなので。

一般に、OSサポートの無いサードパーティの認証ソフトウェアは、平文のパスワードを何らかの方法で復号する必要がある。(追記:もし平文パスワード無しにログインできるなら、OSの認証機構それ自体が脆弱であり、考慮する意味が無い。)
つまり「暗号化されたパスワード」という、総当りで簡単に平文を得られる可能性の高いデータを保持する必要があり、十分なパディングなど総当り耐性を高める適切な暗号化を施す必要がある。
暗号専用ハードウェアなどに保存されていたり、十分なDRMで見つからないよう保護されているならともかく、windowsレジストリなどの他のユーザからアクセス出来る場所に置くなんて論外だ。そのうえ、件の認証ソフトウェアは暗号化方式が酷かった。(恐らく56bit鍵だが直ぐ分かったということなので、秘密鍵をDRM無しにハードコードしていたのだろう。もしくはIV固定で選択平文で解けて鍵不要だったとか)

平文パスワードを必要としない指紋認証にするには、OSのサポートが必要になる。

認証ハードウェアにカーネルレベルのサポートがあれば、話は簡単。カーネル内の情報がユーザーランドから読み書き出来るなら、そもそも安全なOSでは無いので考慮する必要はない。カーネルは認証ハードウェアに直接アクセスして、ユーザーを識別出来る。
OSSならサードパーティベンダはカーネルドライバを提供してユーザにカーネルをリビルドしてもらえばよい。

プロプライエタリなユーザー認証機構をもつカーネルでサードパーティ認証を実装するには、Oauthと同じ仕組みが必要になる、と言えばWebの人にわかってもらえるだろう。
例えばTwitter=OS、twitterfeed=生体認証ソフトウェア、エンドユーザはそのまま人間に対応する。(無関係だけど今twitterfeedがうまく動かない……)

(追記、認証制御できる特権を持たないという意味で、)ユーザーランドで動く認証ソフトウェアは、OSサポートが無い限り、ユーザのパスワードを(暗号化して)保存して、複合した平文パスワードをOSに渡すしか無いが、OSサポートがあれば、ユーザを生体認証してアクセストークンを渡せば済む
この場合はアクセストークンを正しく暗号化して保護する必要はあるが、トークンが漏れてもパスワードは漏れない
またカーネルが異常なトークン利用や、脆弱なトークン保護機構を検出した際に、生体認証ソフトウェアを個別に失効させる事もできる。


前エントリ http://causeless.seesaa.net/article/296998112.html と合わせて、
OSサポートのないサードパーティの生体認証では少なくとも平文パスワードを復号できる必要があり、ハードウェア対ダンパ性か強固な暗号化の無い場合脆弱になる。OSサポート=カーネルレベルで実装するべき。
ということ。



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

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

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


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

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

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