カード会員データは,できる限り保存しないことが望ましい。もし,どうしても保存しなければならないときには,判読不可能な状態で保存しなければならない。判読不可能な状態で保存する一つの方法としてワンウェイ・ハッシュ機能がある。
3.4 少なくともカード番号は,どこに保管されていても(携帯デジタル媒体やバックアップ媒体上のデータ,ログ内データ,無線ネットワークから受領した/経由で保管しているデータを含む),次のいずれかの手段を使用して判読不可能な状態にしておく。 ・強固なワンウェイ・ハッシュ機能(ハッシュ・インデックス) ・トランケーション(文字の一部を非表示にする) ・インデックス・トークンやPAD(PAD は安全に保管) ・関連する鍵管理プロセスと手順を伴う、強力な暗号化 |
ワンウェイ・ハッシュは出力値から入力値に逆変換できない
ワンウェイ・ハッシュとは,ハッシュ関数により実装されるハッシュ・インデックスとも呼ばれる機能である。入力を基に変換後の値を出力するという点は暗号と同じだが,出力された値から入力した値への逆変換ができない点(ワンウェイ)が暗号と異なる(表3,図4)。
特 徴 | 用 途 | |
---|---|---|
ワンウェイ・ハッシュ | 入力から出力値が一意に導ける(同一出力値を持つ別の入力値も理論的には存在するが,見つけることは非常に困難)。出力値から入力を導くことはできない | 代行マッチング 改ざん検知 |
暗号 | 入力(平文)と出力(暗号文)を双方向で導ける | 暗号文の送受信 平文への復号化 |
図4●ワンウェイ・ハッシュの仕組み |
ワンウェイ・ハッシュを用いたセキュリティ対策「代行マッチング」
ワンウェイ・ハッシュを用いた代表的なセキュリティ対策として代行マッチングがある。これは,入力が同じなら出力されるハッシュ値は常に同じというハッシュ関数の特性を用いたセキュリティ手法である(図5)。
図5●代行マッチングの仕組み |
パスワード登録時にハッシュ値を求め,認証用データベースに保存しておく。以後,ユーザーの入力したパスワードから求めたハッシュ値と,認証用データベース内のハッシュ値のマッチングを行えば入力パスワードの正当性が判断できる。そのため,パスワード自体を認証用データベースに保存する必要はなくなる。
たとえ認証用データベース内のデータが盗まれたとしても,パスワードの漏洩にはつながらない。これは出力値(ハッシュ値)から入力(パスワード)を特定できないからである。
ワンウェイ・ハッシュ関数を検討する際の注意点
ワンウェイ・ハッシュ関数は,一意の入力に対して一意の値(ハッシュ値)を出力する関数である。ただし,同じ値(ハッシュ値)を出力する入力が理論的には複数存在する。その入力パターンを簡単に導けないように考えるのが,ハッシュ関数開発者の腕の見せ所である。
しかし,同一のハッシュ値を出力する入力パターンは年々見つかりやすくなってしまう。もし,あるハッシュ関数について,同一のハッシュ値を出力する入力パターンが簡単に見つかるようになってしまったら,そのハッシュ関数は,もう改ざん検知用に使えなくなってしまう。なぜなら同じハッシュ値が出力されたとしても,入力もまた同じかどうか(改ざんされていないかどうか)判定できなくなるからである。このような問題を「衝突耐性の問題」(図6)と言い,そこを突いた攻撃が実際に成功した場合「衝突耐性が突破された」と言う。
図6●ハッシュ関数の衝突耐性の問題 |
現在,長い間使用されてきたハッシュ関数が推奨されなくなってきている。また出力されるハッシュ値の長さを延長し衝突耐性の強化を図っているものも多い。今後使用するハッシュ関数の種類は,将来性を考慮すべきである(表4)。
ハッシュ関数名 | 出力ハッシュ値長 | 開発年 | 衝突耐性 | NIST* 推奨状況 |
---|---|---|---|---|
MD5 | 128ビット | 1992年 | 突破された報告あり | 推奨から除外 |
SHA-1 | 160ビット | 1995年 | 突破された報告無し | 2010年推奨から除外予定 |
SHA-2 | 224~512ビット | 2002年 | 突破された報告無し | 2010年推奨に追加予定 |
|