SHA(Secure Hash Algorithm) - 暗号化全般

暗号化全般 | IT用語集

SHAとは

SHA(Secure Hash Algorithm)は、NSA(米国国家安全保障局)が設計し、NISTが標準化した暗号学的ハッシュ関数のファミリーです。任意の長さのデータを固定長のハッシュ値(ダイジェスト)に変換し、データの完全性検証、デジタル署名、パスワード保存などに使用されます。

SHAファミリーには、SHA-1(160ビット、非推奨)、SHA-2(SHA-256、SHA-512など)、SHA-3があります。現在はSHA-256が最も広く使用されており、ビットコインなどのブロックチェーンでも採用されています。

SHAファミリーの比較

アルゴリズム出力長安全性用途
SHA-1160ビット❌ 衝突攻撃可能使用禁止
SHA-256256ビット✅ 安全TLS、Bitcoin
SHA-512512ビット✅ 安全高セキュリティ用途
SHA-3-256256ビット✅ 安全SHA-2とは異なる設計

AIエンジニアとしての実体験

AIエンジニアとして、SHAは様々な場面で使用します。学習データの整合性チェック、モデルファイルのバージョン管理、APIトークンの生成などで活用しています。

# ファイルのSHA-256ハッシュを計算
sha256sum model.pt

# OpenSSLでハッシュを計算
openssl dgst -sha256 model.pt

# Pythonでハッシュを計算
python3 -c "import hashlib; print(hashlib.sha256(open('model.pt','rb').read()).hexdigest())"
# Pythonでのハッシュ計算例
import hashlib

def calculate_file_hash(filepath):
    sha256_hash = hashlib.sha256()
    with open(filepath, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            sha256_hash.update(chunk)
    return sha256_hash.hexdigest()

# 大規模モデルファイルの整合性チェック
expected_hash = "abc123..."
actual_hash = calculate_file_hash("model-7b.pt")
assert expected_hash == actual_hash, "ファイルが破損しています"

最新動向(2026年)

SHA-3の普及

SHA-3はKeccakアルゴリズムに基づき、SHA-2とは異なる内部構造を持ちます。SHA-2に脆弱性が発見された場合のバックアップとして、一部のシステムでSHA-3の採用が進んでいます。

量子コンピュータへの耐性

ハッシュ関数は量子コンピュータに対して比較的耐性があります。Groverのアルゴリズムにより実効的な強度は半減しますが、SHA-256は依然として安全と考えられています。

トラブル事例と対策

⚠️ SHA-1の使用継続

症状:古いシステムでSHA-1を使用している

対策:2017年にGoogleがSHA-1の衝突攻撃を実証。すべてのシステムでSHA-256以上に移行が必要。

⚠️ パスワードの単純ハッシュ

症状:パスワードをSHA-256で直接ハッシュして保存

対策:パスワードにはbcrypt、Argon2、PBKDF2などの専用関数を使用。単純なハッシュはレインボーテーブル攻撃に脆弱。

権威あるリソース

関連用語

📝 関連ブログ記事

【2026年最新】OpenSSLの深刻な問題とは?

セキュリティ実装のご相談

ハッシュ関数に関するご質問や、データ完全性検証のご相談など、お気軽にお問い合わせください。