暗号技術の基礎と応用

秘密の鍵Kとメッセージmをつなげた値のハッシュ値 SHA-256(K ‖ m) を、改ざんの検出用のタグとして使うのは危険とされる。その理由として正しいものはどれか。

  1. Aタグと入力の長さが分かれば、Kを知らなくても、mの後ろにデータを足したメッセージのタグを計算できるから
  2. BSHA-256の出力から、入力の先頭に置いた鍵Kの部分だけを逆算する、効率のよい方法が見つかっているから
  3. C鍵Kをメッセージの前に置くと入力が長くなり、SHA-256では衝突が見つかりやすくなるから
答えと解説を見る

正解:A. タグと入力の長さが分かれば、Kを知らなくても、mの後ろにデータを足したメッセージのタグを計算できるから

SHA-256のようなMerkle–Damgård構造のハッシュ関数では、出力のハッシュ値が、最後のブロックを処理した後の内部の状態そのものです。そのため攻撃者は、タグを内部の状態として計算を続け、K ‖ m に決まった形のパディングと任意のデータを付けたメッセージのハッシュ値を、Kを知らずに計算できます(長さ拡張攻撃)。HMACは、鍵から作った2つの値を使い、内側のハッシュ値をもう一度鍵と一緒にハッシュする構造で、この攻撃を防ぎます。SHA-3は構造上この攻撃を受けないので、鍵を前に付けるだけのKMACという方式も標準化されています。

  • A. 正しい。長さ拡張攻撃と呼ばれ、HMACを使う理由の1つです。
  • B. SHA-256の出力から入力を求める効率のよい方法は、知られていません。問題は逆算ではなく、計算の続きができることです。
  • C. 入力が長くなっても、衝突の見つけやすさは変わりません。
この分野を解く 分野ページへ

暗号技術の基礎と応用の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

暗号技術の基礎と応用のほかの問題

  1. 1 GiB = 2³⁰ バイト、1 EiB = 2⁶⁰ バイトとする。ブロック長が64ビットのブロック暗号(3DESなど)をCBCモードで使い、1つの鍵で大量のデータを暗号化する。暗号文ブロックをランダムな64ビットの値とみなすとき、誕生日のパラドックスにより、同じ暗号文ブロックの組が現れる確率が無視できなくなるデータ量の目安はどれか。
  2. TLS 1.3などのプロトコルで、ECDHEの鍵交換で得た共有の秘密をそのまま暗号の鍵には使わず、HKDFのような鍵導出関数(KDF)を通して鍵を作る理由として、適切なものはどれか。
  3. RSA暗号の仕組みを小さな数で確かめる。素数 p = 5、q = 11 から n = pq を作り、公開指数を e = 3 とする。φ(n) = (p − 1)(q − 1) として、e × d ≡ 1 (mod φ(n)) を満たす秘密指数 d(0 < d < φ(n))はどれか。
  4. RSA暗号で、公開鍵を n = 55、e = 3 とする。平文 m = 7 を c = m^e mod n で暗号化したときの暗号文 c はどれか。
  5. 教科書どおりのRSA暗号(平文 m をそのまま c = m^e mod n とする方式)を、パディングを付けずに実際の通信に使うことの問題点として、正しいものはどれか。

この分野の比較