ChaCha20-Poly1305 - 暗号化全般

暗号化全般 | IT用語集

ChaCha20-Poly1305とは

ChaCha20-Poly1305は、Daniel J. Bernsteinによって設計された認証付き暗号(AEAD)です。ChaCha20ストリーム暗号とPoly1305メッセージ認証コードを組み合わせています。

  • 高速:ソフトウェア実装でAESより高速(AES-NIがない環境)
  • 安全:タイミング攻撃に対して設計上耐性
  • シンプル:実装が容易でバグが少ない

使用例

  • TLS 1.3TLS_CHACHA20_POLY1305_SHA256
  • WireGuard VPN:デフォルト暗号化
  • SSHchacha20-poly1305@openssh.com
  • Noise Protocol:Signal等で使用

ChaCha20 vs AES-GCM

項目ChaCha20AES-GCM
HW加速なし✅ 高速遅い
HW加速あり速い✅ 最速
モバイル/IoT✅ 最適要AES-NI

Pythonでの使用例

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

key = ChaCha20Poly1305.generate_key()
chacha = ChaCha20Poly1305(key)
nonce = os.urandom(12)  # 96ビットナンス

ciphertext = chacha.encrypt(nonce, b"secret data", b"aad")
plaintext = chacha.decrypt(nonce, ciphertext, b"aad")

関連用語

📝 関連ブログ記事

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

暗号実装のご相談