暗号化の基礎

SHA-256 しゃーにひゃくごじゅうろく

ハッシュ関数ダイジェスト改ざん検知SHA-2デジタル署名チェックサム
SHA-256について教えて

簡単に言うとこんな感じ!

どんなデータでも256ビット(64文字)の「指紋」に変換する関数だよ!同じデータからは必ず同じ指紋が生まれて、1文字でも変わると全然違う指紋になるんだ。ファイルの改ざんチェックやパスワード保護に欠かせない技術なんだ!


SHA-256とは

SHA-256は、任意の長さのデータを256ビット(16進数64文字)の固定長の文字列(ハッシュ値またはダイジェストと呼ぶ)に変換する暗号学的ハッシュ関数の一つです。「SHA」は Secure Hash Algorithm の略で、「256」は出力が256ビットであることを示しています。米国国立標準技術研究所(NIST)が策定した SHA-2ファミリー の代表格です。

この関数の最大の特徴は「一方向性」です。データからハッシュ値を計算するのは簡単ですが、ハッシュ値から元のデータを逆算することは現在の技術では事実上不可能です。また、異なるデータから同じハッシュ値が生まれる「衝突」も極めて起こりにくく設計されています。

SHA-256は、ファイルの改ざん検知・パスワードの保存・デジタル署名・TLS通信・ビットコインのマイニングまで、現代のITインフラを支える至る所で使われています。「データの指紋採取係」と覚えておくと理解しやすいでしょう。


SHA-256の仕組みと特性

ハッシュ関数の4大性質

性質意味身近な例え
決定性同じ入力からは必ず同じ出力同じレシピで作れば同じ料理になる
一方向性ハッシュ値から元データは復元不可料理から完全にレシピを再現できない
衝突耐性異なるデータが同じハッシュ値になりにくい世界に同じ指紋の人はいない
雪崩効果入力が1ビット変わると出力が激変する蝶の羽ばたきで嵐が起きるくらい変わる

ハッシュ値の具体例

入力: "hello"
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

入力: "Hello"  ← 大文字に変えただけ
SHA-256: 185f8db32921bd46d35cc32d4f4b1a9b7a6af8e3b4d1a4d5e9a5c7b8e0f2a1c

→ 先頭1文字が変わっただけで、出力は全く別の値になる(雪崩効果)

SHA-2ファミリーの比較

アルゴリズム出力ビット数主な用途
SHA-224224ビット組み込み機器・省リソース環境
SHA-256256ビットTLS証明書・パスワード・ビットコイン
SHA-384384ビットTLS 1.2以降・高セキュリティ
SHA-512512ビット長期保存・最高レベルの強度が必要な用途

語呂合わせで覚える「SHA-256の256」

「SHA(シャ)ッと256ビットの指紋を取る!」 どんな巨大なファイルも、256ビットにシャッと圧縮して指紋化するイメージ。


歴史と背景

  • 1993年 — NSA(米国家安全保障局)がSHA-0を設計・公開。まもなく欠陥が発見される
  • 1995年 — 改良版のSHA-1(160ビット出力)を公開。SSL/TLSや電子署名に広く採用
  • 2001年 — NISTがSHA-2ファミリー(SHA-256/384/512)をFIPS 180-2として標準化。SHA-1の安全性低下への対策として設計
  • 2005年 — 暗号学者の王小雲がSHA-1への衝突攻撃を理論的に実証。SHA-2への移行機運が高まる
  • 2009年 — ビットコインがSHA-256をマイニングとトランザクション検証に採用。一気に知名度が上がる
  • 2017年 — GoogleがSHA-1への実用的な衝突攻撃(SHAttered)を発表。SHA-1は事実上廃止へ
  • 現在 — TLS証明書・パスワード管理・コード署名などでSHA-256が業界標準として定着

SHA-256 vs 関連技術の整理

SHA-256は「ハッシュ」、AESは「暗号化」——何が違う?

よく混同されますが、ハッシュと暗号化は目的が正反対です。

ハッシュ(SHA-256):一方向・不可逆 元データ (任意の長さ) SHA-256 ハッシュ値 (256ビット固定) ❌ 逆方向には戻れない(不可逆) 暗号化(AES など):双方向・可逆 平文 (元のデータ) AES 暗号化 暗号文 (鍵があれば復号可) ✅ 鍵があれば双方向に変換できる(可逆)

主要ハッシュ関数の比較

関数出力長状態主な用途
MD5128ビット⛔ 廃止推奨レガシーシステムのみ(衝突攻撃が容易)
SHA-1160ビット⚠️ 非推奨2017年に実用的衝突が実証済み
SHA-256256ビット✅ 現行標準TLS・コード署名・パスワード
SHA-3可変✅ 次世代標準政府・金融の高セキュリティ用途
bcrypt固定✅ 推奨パスワード専用(意図的に低速設計)

実務メモ: パスワードの保存には SHA-256 単体より bcrypt・Argon2 が推奨されます。SHA-256は高速すぎるため、総当たり攻撃に対して単体では弱いためです。


関連する規格・RFC

規格・RFC番号内容
FIPS PUB 180-4NISTによるSHA-2ファミリーの公式標準仕様
RFC 6234SHA-1およびSHA-2のIETF仕様・実装ガイド
RFC 5656SSH鍵交換でのSHA-2利用規定
RFC 7518JWS(JWT署名)でのSHA-256(RS256/HS256)利用規定
FIPS PUB 202SHA-3(Keccak)の標準仕様(SHA-256の後継候補)

関連用語