情報処理安全確保支援士 2025年 春期 午前2 問03
問題文
SHA-512/256 の説明はどれか。
選択肢
ア:入力データに SHA-256 に基づいたハッシュ関数を1回適用し、256ビットの値を出力した後、512ビットに拡張して出力する。
イ:入力データに SHA-256 に基づいたハッシュ関数を512回繰り返し適用し、256ビットの値を出力する。
ウ:入力データに SHA-512 に基づいたハッシュ関数を1回適用し、512ビットの値を出力した後、256ビットに切り詰めて出力する。(正解)
エ:入力データに SHA-512 に基づいたハッシュ関数を256回繰り返し適用し、512ビットの値を出力する。
🔒 解説は解答すると表示されます
SHA-512/256の仕様【午前2解説】
正解の理由
この問題の正解は ウ です。SHA-512/256 は内部で SHA-512 の圧縮関数(64ビットワードを扱う設計)を用いてハッシュ計算を行い、最終的に得られる512ビットの内部ハッシュ値の左側(上位)256ビットを出力する仕様です。仕様上は単なる出力の「切り詰め(truncation)」に相当しますが、標準では専用の初期値(IV)を使って衝突や既存出力との単純な関係を避けるよう定義されています。そのため「SHA-512 を1回適用して512ビットを得た後に256ビットに切り詰める」という選択肢の主旨が正しいことになります。
解法ステップ
- 名前の読み取り:SHA-512/256 は「ベースは512ビット版(SHA-512)、出力長は256ビット」であると解釈する。
- 各選択肢を照合:ベースが SHA-512 であるか、出力が256ビットにされているかを確認する。
- 実装上の注意:仕様では単純 truncation に留まらず IV が定義されている点をチェックする(出題の選択肢がその違いを問うかを確認)。
- 結論:上記に合致する選択肢 ウ を選ぶ。
選択肢別の誤答解説
- ア: 「SHA-256 に基づくハッシュを 1回適用し、256ビットを出力した後、512ビットに拡張」とあるが、ハッシュ関数は出力を擬似的に拡張して 512 ビットにするような逆方向の拡張は行わない。SHA-512/256 は SHA-256 がベースではなく、また拡張の手順も誤り。
- イ: 「SHA-256 を512回繰り返す」などと反復回数で説明しているが、SHA-512/256 は単に別の SHA-2 系のバリエーションであり、繰り返し回数を大量に増やす仕様ではない。
- ウ: 正しい。SHA-512 の内部処理を使い、最終的に512ビット値の先頭256ビットを出力する(仕様では専用IVも用いる)。
- エ: 「SHA-512 を256回繰り返す」とあるが、これも誤り。SHA-512/256 はアルゴリズムを多数回再帰的に適用するものではない。
よくある誤解
- SHA-512/256 は「単に SHA-512 を計算して切り取るだけ」だと考えられがちですが、仕様では衝突回避のために専用の初期値(IV)を定めています。単純なトランケーションと同一視するのは正確ではありません。
- ハッシュ長が256ビットだからといって「衝突耐性が 」と誤認すること。出力長 に対する衝突耐性は理論上約 (誕生日攻撃)であり、したがって256ビット出力なら衝突探索は約 の困難さになります。一方、原像攻撃(与えられたハッシュ値から元入力を探す難しさ)はおおむね です。ただしこれは理論上の目安であり、実運用では実装の脆弱性やサイドチャネル、運用ミスなどで期待される難度が下がる可能性があります。
- トランケーションは長さ拡張攻撃を自動的に防ぐものではありません。SHA-2 系は生の出力をそのまま使う場合、長さ拡張攻撃の対象になり得ます(HMAC を使う等、適切な対策が必要)。
補足コラム
- SHA-512/256 の設計目的の一つは、64ビット環境で高速に動作する SHA-512 の内部処理(64ビット演算)を利用しつつ、出力を256ビットに抑えて短いダイジェストを必要とする用途に対応することです。類似の例として SHA-384(SHA-512 をベースに 384 ビット出力に切り詰め)があります。
- 標準規格(例: FIPS 180-4)では、各変種ごとに初期ハッシュ値(IV)が定められており、単純に SHA-512 の標準 IV を使って出力を切り詰めただけのものとは区別されます。これは異なる出力値同士の安易な関連付けを避けるためです。
- セキュリティ評価の観点では、出力長による理論的耐性(原像抵抗、第二原像抵抗、衝突耐性)を理解した上で、実装面・運用面のリスク(サイドチャネル、誤用、脆弱な乱数など)にも注意してください。
FAQ
Q: SHA-512/256 と SHA-256 のどちらを使うべきか?
A: 目的によります。64ビット環境で高速化を優先しつつ256ビットのダイジェストが欲しい場合は SHA-512/256 が有利なことがあります。一方、互換性や既存エコシステム(ツール・ライブラリ)が SHA-256 を前提とする場合は SHA-256 を選ぶ方が無難です。
A: 目的によります。64ビット環境で高速化を優先しつつ256ビットのダイジェストが欲しい場合は SHA-512/256 が有利なことがあります。一方、互換性や既存エコシステム(ツール・ライブラリ)が SHA-256 を前提とする場合は SHA-256 を選ぶ方が無難です。
Q: トランケーションで安全性は落ちるか?
A: 出力長が短くなれば衝突耐性は理論上低下します(256ビット出力なら衝突探索は 程度)。ただし設計上の配慮(専用IVなど)により、単純に別アルゴリズムの出力を切って使うより安全に運用できるようになっています。
A: 出力長が短くなれば衝突耐性は理論上低下します(256ビット出力なら衝突探索は 程度)。ただし設計上の配慮(専用IVなど)により、単純に別アルゴリズムの出力を切って使うより安全に運用できるようになっています。
Q: トランケーションは長さ拡張攻撃を防げるか?
A: いいえ。単に切り詰めるだけでは長さ拡張攻撃に対する防御になりません。必要なら HMAC 等の設計パターンを採用してください。
A: いいえ。単に切り詰めるだけでは長さ拡張攻撃に対する防御になりません。必要なら HMAC 等の設計パターンを採用してください。
関連キーワード: SHA-2、ハッシュ関数、トランケーション、原像耐性、衝突耐性、IV、長さ拡張攻撃、FIPS 180-4

\ せっかくなら /
情報処理安全確保支援士を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

