前のページ 目次 次のページ

最終更新日:2002年11月27日


2.3  セキュアハッシュ関数

2.3.1  概要

公開鍵暗号方式を用いたデジタル署名の実現のための重要な関連技術に「セキュアハッシュ関数 (secure hash function)」があります。セキュアハッシュ関数は、可変長の入力データから固定長(20バイト程度)のビット列を出力します。出力されたビット長をダイジェスト [16] と呼びます。

セキュアハッシュ関数には、以下の性質があります(図 2-8)。

(1)  入力データの長さが異なっても、決められた長さのダイジェストを出力する。

(2)  入力メッセージが少しでも異なっていれば、出力されるダイジェストは大きく異なる。

(3)  ダイジェストから元のメッセージを算出することができない。(一方向性。)

(4)  同じダイジェストを出力する 2つの入力データを見つけるのは困難である。(コリジョンしない。)

図 2-8 セキュアハッシュ関数

なお、2つの異なる入力データから、同じダイジェストが生成されることをコリジョン (Collision) [17] といいます。

2.3.2  利用方法

セキュアハッシュ関数は、以下の用途に使用されます。

(1)  改ざん [18] の検出

セキュアハッシュ関数は、入力データが 1bit でも異なると、大きく異なったダイジェストを生成します。元ファイルのダイジェストを保存しておくことで、そのファイルに変更が加えられたか否かを確認できます。元ファイルそのものを保存する方法よりもデータ量が節約でき、さらに改ざんの 検出も容易になります [19]

(2)  パスワード認証への適用

クライアント/サーバーモデルにおいて ID とパスワードによる認証を実施する場合、サーバー上にパスワードを平文のまま保存しておくと、パスワードが漏洩する危険性が発生します。そこで、パスワードそのものでなく、パスワードのダイジェストをサーバー上に保存し、認証時にはユーザが投入したパスワードのダイジェストと比較します。こうすると、ダイジェストから元データを算出できないためパスワード漏洩の危険性を回避できます。

(3)  HMAC (Keyed-Hashing for Message Authentication)

HMAC は共通鍵暗号方式とセキュアハッシュ関数を組み合わせて、メッセージの完全性を保証する方式です。メッセージに共通鍵を付加したものに対してハッシュ値を生成し、元のメッセージに付与することで、改ざんの検出を行うことができます。RFC2104 にて方式が公開されています。

(4)  デジタル署名

公開鍵暗号方式とセキュアハッシュ関数を組み合わせて、メッセージの完全性と送信者の認証を実現する方式です。詳細は 2.4 節に おいて解説します。

2.3.3  セキュアハッシュ関数の種類

セキュアハッシュ関数の種類を示します(表 2-5)。比較的よく使用されているセキュアハッシュ関数である MD5 には、近年弱点が存在することが判明しています。現在 、SHA-1 が主に使用されています。

表 2-5 ハッシュアルゴリズム

アルゴリズム

特徴

MD2

128bit のハッシュ値を生成します。PEM に用いられています。Ron Rivest によって開発され、RFC1319 として公表されています。

MD4

128bit のハッシュ値を生成します。その後の MD5、SHA-1 などの源流でもあります。Ron Rivest によって開発され、RFC1320 として公表されています。

1994年に暗号解読攻撃が成功したことによって、このアルゴリズムは安全ではないことが判明しました。

MD5

広く用いられているハッシュ関数で、任意長メッセージから 128bit のハッシュ値を生成します。Ron Rivest によって開発され、RFC1321 として公表されています。

1996年に衝突攻撃によって部分的に弱点が存在することが判明しています。

SHA-1

MD4 アルゴリズムを改良して作成されました。160bit のハッシュ値を生成します。1995年に NIST によってアメリカ政府の標準ハッシュ関数として採用されました。RFC 3174


前のページ 目次 次のページ Copyright © 2002 Information-technology Promotion Agency, Japan. All rights reserved.