対称暗号(共通鍵暗号) - 暗号化全般

暗号化全般 | IT用語集

対称暗号とは

対称暗号(Symmetric Encryption)は、暗号化と復号化に同じ鍵(秘密鍵)を使用する暗号方式です。「共通鍵暗号」とも呼ばれ、非対称暗号(公開鍵暗号)と比較して高速な処理が可能です。

代表的な対称暗号アルゴリズム:

  • AES:現代の標準(128/192/256ビット鍵)
  • ChaCha20:ソフトウェア実装で高速
  • 3DES:DESの後継(現在は非推奨)
  • Blowfish/Twofish:bcryptの基盤

対称暗号の種類

ブロック暗号

固定長のブロック単位でデータを処理。AES(128ビットブロック)が代表例。長いデータは暗号モード(CBC、CTR、GCM)で処理します。

ストリーム暗号

1ビットまたは1バイト単位で連続処理。ChaCha20やRC4(非推奨)が該当。リアルタイム通信に適しています。

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

機械学習モデルのデータ暗号化に対称暗号を使用しています:

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

# Fernet(AES-128-CBC + HMAC)
key = Fernet.generate_key()
f = Fernet(key)
encrypted = f.encrypt(b"secret data")
decrypted = f.decrypt(encrypted)

# AES-256-GCM(推奨)
key = AESGCM.generate_key(bit_length=256)
aesgcm = AESGCM(key)
nonce = os.urandom(12)
ct = aesgcm.encrypt(nonce, b"secret data", b"associated data")

対称暗号 vs 非対称暗号

項目対称暗号非対称暗号
速度✅ 高速遅い
鍵配送困難✅ 容易
用途大量データ暗号化鍵交換、署名

トラブル事例と対策

⚠️ 鍵の安全な配送

課題:対称暗号では鍵を安全に共有する必要がある

対策:非対称暗号で鍵を交換し、その後対称暗号でデータを暗号化(ハイブリッド暗号)。

権威あるリソース

関連用語

📝 関連ブログ記事

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

暗号化実装のご相談