暗号
メッセージ認証コード(MAC)
別称: MAC, 暗号学的チェックサム
定義
共有秘密鍵で計算・検証される短い対称鍵タグで、メッセージの認証と改ざん検知を行う仕組み。
メッセージ認証コード(Message Authentication Code、MAC)は、対称秘密鍵を用いてメッセージから生成する固定長のタグで、検証にも同じ鍵が必要です。完全性と真正性を提供しますが、双方が同じ鍵を保持するため否認防止は提供しません。代表的な構成には、HMAC(ハッシュベース、RFC 2104)、CMAC(CBC-MAC、NIST SP 800-38B)、GCM 内で使用される GMAC、ChaCha20 と組み合わされる Poly1305、SHA-3/Keccak ベースの KMAC があります。MAC は TLS のレコード認証、IPsec AH、JWT HS256、API リクエスト署名、各種 AEAD モードの基盤であり、タグ比較はタイミング攻撃を避けるため定数時間で行う必要があります。
例
- AWS Signature Version 4 のリクエストは HMAC-SHA-256 で認証される。
- TLS 1.3 が用いる ChaCha20-Poly1305 AEAD では、Poly1305 が暗号文を認証する。
関連用語
HMAC
RFC 2104 と FIPS 198-1 で定義された、暗号学的ハッシュ関数を土台とする鍵付きメッセージ認証コード(MAC)構造。
暗号学的ハッシュ関数
任意長の入力を固定長のダイジェストへ写す決定的な一方向関数で、衝突耐性・原像耐性・第二原像耐性を備える。
デジタル署名
メッセージや文書の真正性・完全性・否認防止を証明する公開鍵暗号方式のメカニズム。
対称鍵暗号
暗号化と復号に同じ秘密鍵を使う暗号方式で、鍵を安全に共有できれば高速で強力な機密性を提供する。
ChaCha20
Daniel J. Bernstein が設計した現代的ストリーム暗号で、256 ビット鍵と 96 ビットナンスを用いる。Poly1305 と組み合わせた AEAD「ChaCha20-Poly1305」として広く使われる。
TLS (Transport Layer Security)
TLS (Transport Layer Security) — definition coming soon.