本文へスキップ
ecdsa.com

SHA-256

SHA-2 ファミリー(FIPS 180-4)の 256 ビット版で、TLS、JWT、X.509、Bitcoin、ほとんどのファイル完全性チェックツールでデフォルトのハッシュです。衝突耐性は 128 ビット、原像耐性は 256 ビットです。
別表記SHA256SHA2-256sha256sum

SHA-256 は Merkle–Damgård 構造で、64 バイトのブロックを 32 ビットのワード単位で 64 ラウンド処理し、32 バイトを出力します。空文字列のダイジェストは e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855、abc のダイジェストは ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad です。その安全性の上限に迫る攻撃は知られていません。

最近の CPU の多くは SHA-256 専用の命令を備えています(Intel と AMD の SHA 拡張、ARMv8 の暗号拡張)。Apple M4 Max の 1 コアで OpenSSL 3.6.5 を使うと、16 KiB のバッファーで約 2.85 GB/s の速度でハッシュでき、同じマシン上の SHA-512(1.65 GB/s)や SHA3-256(1.01 GB/s)より高速です。Bitcoin はブロックとトランザクションの ID に SHA-256 を 2 回適用します(SHA-256d)。

Merkle–Damgård 構造のため伸長攻撃が可能で、SHA-256(secret ‖ message) は安全な MAC ではありません。HMAC-SHA256 を使ってください。識別子:OID は 2.16.840.1.101.3.4.2.1、PKCE では JOSE の S256、SD-JWT の _sd_alg では sha-256、WebCrypto では SHA-256、OpenSSL と Node では sha256 です。

規格と参考文献

すべての用語