セキュリティ
中級

SHA-1 (1993)(シャーワン)

NIST が 1993 年に FIPS 180 として標準化したハッシュ関数。160-bit ハッシュ値・Merkle-Damgård 構造で、SSL/TLS・SSH・Git・1990-2010 年代の電子署名で広く採用された歴史的アルゴリズム。2017 年 Google の SHAttered 攻撃で衝突発見後、新規利用が完全廃止された。

0 回閲覧
0 いいね
2026/5/12 更新
関連タグ
SHA-1
Secure Hash Algorithm
NIST FIPS 180
1993
SHAttered
Git ハッシュ

概要

SHA-1 (Secure Hash Algorithm 1) は、NIST と NSA が共同設計し 1993 年に FIPS 180 として標準化したハッシュ関数で、160-bit ハッシュ値・Merkle-Damgård 構造で、SSL/TLS・SSH・Git (1991 年 Linus Torvalds 設計時に採用)・1990-2010 年代の電子署名で広く採用された歴史的アルゴリズムです。初版 SHA-0 (1993) は数ヶ月後に脆弱性が発見され、1995 年に SHA-1 (FIPS 180-1) として再公開された経緯があり、20 年以上業界標準として君臨しました。しかし暗号学的に弱体化が進行し、2005 年中国の Wang Xiaoyun が理論的衝突攻撃を発表 (2^69 計算量で衝突可能)、2017 年 2 月 Google の SHAttered 攻撃チーム (Marc Stevens 等) が実際の SHA-1 衝突 PDF 2 つを 6,500 CPU 年・110 GPU 年で発見、新規利用完全廃止が宣言されました。NIST は 2011 年から SHA-1 の新規利用非推奨を発表、2030 年完全撤退予定。Git は依然 SHA-1 が内部ハッシュ標準として残存 (互換性のため、Linus Torvalds が「Git は cryptographic hash としてではなく content-addressable storage の identifier として使う」と説明)、Git 2.29 (2020 年 10 月) で SHA-256 オプション追加されたが移行は進んでいない歴史的状況です。

主な特徴・仕組み

  • 発表: 1993 年 NIST FIPS 180 (SHA-0)・1995 年 FIPS 180-1 (SHA-1)
  • 設計: NIST + NSA 共同
  • ハッシュ値長: 160-bit (20 バイト)
  • 構造: Merkle-Damgård
  • ブロックサイズ: 512-bit
  • 状態サイズ: 160-bit (5 ×32-bit ワード A・B・C・D・E)
  • 計算: 80 ラウンド (4 段 ×20 ラウンド)
  • 2005 年 Wang 攻撃: 理論的衝突 2^69 計算量
  • 2017 年 SHAttered: 実際の衝突 PDF 2 つ発見、6,500 CPU 年 + 110 GPU 年
  • 採用: Git・古い SSL/TLS・古い PGP・古い SSH
  • 廃止: 2011 年 NIST 非推奨・2017 年新規利用全面廃止

スペック比較表 (SHA 系列)

ハッシュ年bit衝突攻撃計算量採用
SHA-01993160即破断即撤回
SHA-119951602^69 (Wang 2005)2017 廃止
SHA-25620012562^128 (Birthday)現代主流
SHA-38420013842^192高セキュリティ
SHA-51220015122^256最高セキュリティ
SHA-3 (Keccak)2015224/256/384/512同 SHA-2 系NIST 第二標準

具体例・対応技術

  • Git (2005-): Linus Torvalds 設計、SHA-1 ベース content-addressable
  • SSL/TLS 1.0/1.1: SHA-1 署名・MAC、TLS 1.2 で SHA-256 移行
  • PGP RSA 鍵指紋: SHA-1 ベース、新規 GPG は SHA-256 推奨
  • 古い SSH (RSA-SHA1): 2021 年 OpenSSH 8.7 で廃止
  • Google SHAttered (2017): 実際の衝突 PDF 公開、SHA-1 死亡宣告

自作PCでの選び方・注意点

SHA-1 は 2026 年現在、新規利用は完全に推奨されません (NIST 2017 年廃止)。Git の内部 hash は依然 SHA-1 のため、git log の commit hash は SHA-1 (40 文字 16 進)、これはセキュリティではなく内容識別子としての利用。新規ハッシュ用途では SHA-256・SHA-3-256・BLAKE3 (現代最速ハッシュ) を選択推奨、Linux/Mac の sha256sum ・shasum -a 256 で SHA-256 ハッシュ計算が定番。古いシステム・レガシーソフトウェアで SHA-1 を見つけた場合、置換可能なら SHA-256 に移行・置換不可ならハッシュ機能を別実装で保護することが推奨。Windows BitLocker・macOS FileVault は内部で SHA-256+ を使用、SHA-1 直接利用は意識しない。Git の SHA-256 オプション (Git 2.29+) は新規リポジトリで git init --object-format=sha256 で利用可能ですが、GitHub・GitLab などのホスティングサービスが SHA-256 完全対応していないため、移行は限定的。AI 時代の 2026 年現在、Git の SHA-1 は実用上問題なし (Linus 説明通り content identifier 利用) ですが、セキュリティ用途では SHA-1 を完全に避けるのが現代ベストプラクティス。

関連用語との違い

  • SHA-256: 後継、現代主流ハッシュ
  • MD5: 1991 年、SHA-1 より古い・1996 年に破断済
  • SHA-3 (Keccak): NIST 第二標準、SHA-1 と全く別構造

よくある質問(FAQ)

Q1: Git の SHA-1 は安全? A: Linus Torvalds 説明: 「Git は cryptographic hash として使ってないため安全」、commit hash は内容識別子。意図的衝突攻撃は理論的に可能だがコスト高で実用脅威小。

Q2: SHAttered 攻撃の意義は? A: 実際の SHA-1 衝突 PDF 2 つを Google が発表 (2017 年 2 月)、SHA-1 が「理論上破られる」から「実際に破られる」に変わった転換点。新規利用が完全廃止された。

Q3: 現代で SHA-1 を使う場面は? A: Git のレガシー互換のみ、新規ハッシュ用途では SHA-256・SHA-3・BLAKE3 を選択。レガシーシステム互換性確保以外に新規 SHA-1 採用理由はない。

まとめ

  • SHA-1 = 1993 年 NIST 標準化、160-bit ハッシュ
  • Merkle-Damgård 構造・80 ラウンド・SSL/Git で広く採用
  • 2017 年 Google SHAttered で衝突発見・新規利用完全廃止
  • Git は依然内部 SHA-1、SHA-256 移行は限定的
この記事について
カテゴリーセキュリティ
難易度中級
作成日2026/5/12