暗号・ハッシュ - セキュリティ
最終更新日: 2026-07-25
TOP(About this memo)) > 一覧(セキュリティ) > 暗号・ハッシュ
公開鍵・デジタル署名
WIP
ハッシュの種類
- MD5
- 128ビットの長さのハッシュ値。
- チェックサムによる改ざんの確認に使われる。
- GitHubのファイルの改ざん検知でも使われている(?)。
- SHA-1
- SHA-2
- 現在の主流はSHA-256やSHA-512。
- 2001年にNIST(米国標準技術研究所)によって標準化された規格。
- SHA-3
- bcrypt
- Argon2
- Password Hashing Competition(2015年)の優勝アルゴリズム。メモリハードな設計で、GPU等を使った並列総当たり攻撃への耐性が高い。
- OWASP Password Storage Cheat Sheetでは、複数の亜種のうち
Argon2idが第一推奨として挙げられている。
- (執筆時点の情報) 同シートでは、新規実装であれば
Argon2idを第一候補とし、次点でscrypt、bcrypt(コストファクター12以上を推奨)、FIPS準拠が必要な場合に限りPBKDF2という優先順位になっている。既存システムでbcryptを使っている場合、直ちに移行が必須というわけではないが、コストファクターが低い(10未満など)場合は引き上げを検討した方がよい。
HMAC(Hash-based Message Authentication Code)
- ハッシュ関数と秘密鍵を組み合わせてメッセージ認証コード(MAC)を生成する仕組み。
- 改ざん検出の仕組み
- 送信者と受信者が共通の秘密鍵を持ち、メッセージと鍵を用いてHMACを生成する。
- 受信者は受け取ったメッセージのHMACを計算し、送られてきたHMACと一致するか確認することで改ざんを検出する。
- SHA-256、SHA-512、MD5などのハッシュ関数を利用する。
- 具体的な用途の例
- 例えばSlackの通知を自前のサーバーのエンドポイントで受け取るとき、「なりすましの通知ではないか」「途中で改ざんされた内容ではないか」を検証するために使われる。
- ハッシュ値の生成にはSlack側に登録したシークレットキーが必要なため、シークレットキーが流出しない限り改ざんはできない。