AEAD(認証付き暗号化) - 暗号化全般

暗号化全般 | IT用語集

AEADとは

AEAD(Authenticated Encryption with Associated Data)は、暗号化(機密性)と認証(完全性・認証)を単一の操作で提供する暗号方式です。従来の「暗号化→MAC」の組み合わせより安全で効率的です。

AEADの構成要素

  • 鍵(Key):暗号化と認証に使用する秘密鍵
  • ナンス/IV:一意の値(再利用禁止)
  • 平文:暗号化されるデータ
  • AAD(Associated Data):認証されるが暗号化されないデータ
  • 暗号文 + 認証タグ:出力

代表的なAEADアルゴリズム

  • AES-GCM:TLSで最も一般的
  • ChaCha20-Poly1305:ソフトウェア実装で高速
  • AES-CCM:IoT向け

なぜAEADが重要か

暗号化のみでは改ざんを検知できません。AEADは以下を保証:

  • 機密性:データの内容が秘匿される
  • 完全性:改ざんが検知される
  • 認証:正しい鍵で暗号化されたことを証明

Pythonでの使用例

from cryptography.hazmat.primitives.ciphers.aead import AESGCM
import os

key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
nonce = os.urandom(12)

# AAD: ヘッダーなど認証したいが暗号化しないデータ
aad = b"header: content-type=json"
plaintext = b'{"secret": "data"}'

ciphertext = aesgcm.encrypt(nonce, plaintext, aad)
# 改ざんされていれば例外発生
decrypted = aesgcm.decrypt(nonce, ciphertext, aad)

関連用語

📝 関連ブログ記事

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

暗号実装のご相談