SHA-512/256
SHA-512/256とは?

SHA-2規格の一部として規定されているハッシュ値の算出方式の一つである。「SHA-512」アルゴリズムによって512ビットのハッシュ値を得た後、一定の計算によってこれを256ビットに切り詰めて最終的な算出結果とする。SHA-512は64ビット単位で計算を行う設計のため、64ビットCPUが標準となった現代の環境では、32ビット単位で処理するSHA-256より高速に動作することが多いという事情がある。
出力長を半分に切り詰めるにあたって、単純にSHA-512の結果を前半だけ使う方法は採られていない。それでは元のSHA-512を狙った攻撃の影響を受ける恐れがあるためである。SHA-512/256では計算開始時に用いる初期値(IV:初期化ベクトル)に専用の定数を設定しており、SHA-512とは異なる計算経路を通る。この工夫によって、出力長が同じSHA-256とも、ベースとなるSHA-512とも異なる独立したハッシュ値が得られる。
セキュリティ強度については、256ビットの出力長から衝突耐性が128ビット相当とみなされており、現時点では実用上十分とされている。衝突とは、異なる二つのデータから同じハッシュ値が生成されてしまう現象で、これが容易に起こせると改竄やなりすましに悪用される危険がある。MD5やSHA-1ではこの問題が指摘されているが、SHA-512/256を含むSHA-2系では現在のところそのような脆弱性は確認されていない。
SHA-512/256の仕様はNIST(米国立標準技術研究所)が2012年にFIPS 180-4として標準化した。大量のデータを高速に処理しながらハッシュ値をコンパクトに収めたい用途、例えば、TLSなどの通信プロトコルや電子証明書の処理などに適しており、64ビット環境でSHA-256の代替として採用されることがある。