情報セキュリティの基礎
暗号で使われるハッシュ関数(暗号学的ハッシュ関数)の性質として正しいものはどれか。
- Aハッシュ値から元のデータを、秘密鍵を使えば復元できる
- B入力の長さに比例して、ハッシュ値も長くなる
- C入力が同じなら必ず同じハッシュ値になり、入力が1ビット違うだけでも、ハッシュ値は予測できないほど大きく変わる
答えと解説を見る
正解:C. 入力が同じなら必ず同じハッシュ値になり、入力が1ビット違うだけでも、ハッシュ値は予測できないほど大きく変わる
ハッシュ関数は、任意の長さのデータから、決まった長さの値(ハッシュ値、ダイジェスト)を計算する関数です。例えばSHA-256は、入力の長さによらず256ビットの値を出力します。同じ入力からは必ず同じ値が得られ、入力がわずかでも違うと、出力は予測できないほど大きく変わります。暗号で使うハッシュ関数には、さらに、ハッシュ値から元の入力を求めることが現実的に不可能であること(一方向性、原像計算困難性)や、同じハッシュ値になる異なる2つの入力を見つけることが困難であること(衝突困難性)が求められます。ハッシュ関数は鍵を使わない計算で、暗号化ではないので、復号して元に戻すこともできません。改ざんの検出、デジタル署名、パスワードの保存などに使われます。
- A. ハッシュ関数は鍵を使わず、元に戻すための手段もありません。元に戻せないこと(一方向性)が重要な性質です。
- B. ハッシュ値の長さは、入力の長さによらず一定です(SHA-256なら256ビット)。
- C. 正しい。同じ入力には同じ値、少し違う入力にはまったく違う値になります。