SHA-256 (Secure Hash Algorithm 256)(シャー256)
NSA 設計・NIST 2001年標準化のハッシュ関数。256bit 出力・Bitcoin マイニング / TLS 証明書 / Git コミットハッシュ等で世界中で利用される暗号学的ハッシュの代表格。
概要
SHA-256 はNSA (米国家安全保障局) 設計・NIST が2001年8月にFIPS 180-2 として標準化したハッシュ関数。SHA-2 ファミリ (SHA-224 / 256 / 384 / 512) の256bit 版・Merkle-Damgård 構造・64ラウンド・32bit ワード演算で任意長入力から固定長256bit (64文字16進) 出力。Bitcoin マイニング / TLS証明書 / Git コミットハッシュ等で世界中で利用される暗号学的ハッシュの代表格、SHA-1 (2017年Google が衝突発見) からの主流移行先。
SHA-256 主要仕様
| 項目 | 仕様 |
|---|---|
| 出力長 | 256 bit (32 byte / 64文字hex) |
| ブロックサイズ | 512 bit |
| ラウンド数 | 64 |
| 構造 | Merkle-Damgård |
| ワードサイズ | 32 bit |
| 設計 | NSA |
| 標準化 | FIPS 180-2 (2001) |
| 後継 | SHA-3 (2015・別構造) |
SHA-2 ファミリ
| アルゴリズム | 出力 | ブロック | ラウンド |
|---|---|---|---|
| SHA-224 | 224bit | 512bit | 64 |
| SHA-256 | 256bit | 512bit | 64 |
| SHA-384 | 384bit | 1024bit | 80 |
| SHA-512 | 512bit | 1024bit | 80 |
| SHA-512/224 | 224bit | 1024bit | 80 |
| SHA-512/256 | 256bit | 1024bit | 80 |
SHA-2 vs SHA-1 vs MD5
| ハッシュ | 出力 | 公開 | 状態 |
|---|---|---|---|
| MD5 | 128 | 1992 | 完全破壊 (2004年衝突) |
| SHA-1 | 160 | 1995 | 破壊 (2017年Google衝突) |
| SHA-2 | 256-512 | 2001 | 安全 (2024年現在) |
| SHA-3 | 任意 | 2015 | 安全 (Keccak ベース) |
| BLAKE3 | 任意 | 2020 | 安全 + 高速 |
SHA-256 主要用途
| 用途 | 実装 |
|---|---|
| Bitcoin マイニング | PoW (Proof of Work) ・1秒数百兆Hash |
| TLS / SSL 証明書 | X.509 v3 署名 |
| HMAC | HMAC-SHA256 |
| パスワードハッシュ | PBKDF2-SHA256 (Argon2 推奨) |
| Git | コミットID (10年計画でSHA-256 移行中) |
| ZFS / Btrfs | データ整合性検証 |
| Linux dm-verity | ブート整合性 |
| Apple Time Machine | バックアップ検証 |
| Linux RPM/DEB | パッケージ整合性 |
HMAC-SHA256
メッセージ認証コード (Message Authentication Code):
HMAC(K, m) = SHA256( (K ⊕ opad) ∥ SHA256( (K ⊕ ipad) ∥ m ) )
API 認証 (AWS / Stripe等)・JWT 署名 (HS256)・Cookie 認証で広範採用。
Bitcoin での SHA-256
Bitcoin マイニングはSHA-256 を2回適用:
nonce 探索: SHA256(SHA256(Block Header)) < Target
2009年Satoshi が選定・15年でASIC マイナーが進化:
- 2010年CPU マイニング (数MH/s)
- 2011年GPU (数100MH/s)
- 2013年FPGA (数GH/s)
- 2013年-現在 ASIC (S21 250TH/s + 3,500W)
世界全Bitcoin Network のハッシュレート: 約700 EH/s (2024年) = 700 × 10^18 Hash/秒。
CPU ハードウェア加速
| プラットフォーム | 命令 | 効果 |
|---|---|---|
| Intel Sandy Bridge+ (2011) | SHA Extensions (Goldmont 2016+) | 3-10倍高速 |
| AMD Ryzen | SHA Extensions | 同 |
| ARM v8.2+ | SHA-256 拡張 | 高速 |
| Apple Silicon | 専用ユニット | 5-10倍 |
| RISC-V Crypto Extension | Zkn | 専用 |
関連用語との違い
- vs SHA-1: 完全破壊 / 安全
- vs SHA-3: Merkle-Damgård / Sponge
- vs BLAKE3: 旧設計 / 並列高速
FAQ
Q1: SHA-256 破られる? A: 2024年現在実用攻撃なし。理論上は量子コンピュータGrover アルゴリズムでセキュリティ半減 (実効128bit) だが、十分な強度継続。
Q2: Git の SHA-1 → SHA-256 移行? A: Git 2.29 (2020) でSHA-256 サポート開始、2030年までに移行完了予定。GitHub / GitLab はまだSHA-1 主流。
Q3: BLAKE3 vs SHA-256? A: BLAKE3 はSHA-256 比 5-10倍高速・並列処理可・安全マージン高。新規実装はBLAKE3 推奨・互換性のためSHA-256 継続も多い。