
AES(Advanced Encryption Standard)は2001年11月、米国国立標準技術研究所NISTがFIPS 197として制定した共通鍵ブロック暗号です。前任のDESを置き換えるため1997年に始まった公募コンペで、ベルギーのJoan DaemenとVincent Rijmenが設計したRijndaelが選定されました。ブロック長128ビット、鍵長128/192/256ビットの3種類を持ち、現在ではTLS、WPA2/3、BitLocker、ファイル暗号化など、平文を秘匿するあらゆる場面で事実上の標準として使われています。本記事ではAESの構造と運用のポイントを整理します。
この記事の目次
- ラウンド構造と4つの基本変換
- DESの後継を選んだ国際コンペ
- TLSからディスク暗号化まで
- ChaCha20など他暗号との比較
- まとめ
ラウンド構造と4つの基本変換

AESは128ビットの平文を4×4バイトの状態行列に並べ、鍵長に応じて10/12/14ラウンドの変換を繰り返します。各ラウンドはSubBytes(S-boxによるバイト置換)、ShiftRows(行ごとの巡回シフト)、MixColumns(列ごとの線形混合)、AddRoundKey(ラウンド鍵とのXOR)という4ステップで構成されており、最終ラウンドだけMixColumnsを省略するという例外があります。S-boxはGF(2^8)上の逆元とアフィン変換で定義され、差分・線形攻撃に強い非線形性を生み出しています。
鍵スケジューリングではマスター鍵をラウンド鍵列に展開し、各ラウンドで異なる鍵を投入します。Intel/AMDのx86 CPUにはAES-NIという専用命令(AESENC、AESDECなど)が2010年から搭載され、ARMv8でもAES命令が標準化されたため、ソフトウェア実装でもギガビット級のスループットが当たり前になりました。鍵長128ビットでも全数探索には現実的に2^128回の試行が必要で、量子計算機が登場しない限り解読は不可能とされています。
DESの後継を選んだ国際コンペ

1970年代に米国標準となったDESは鍵長56ビットしかなく、1998年にEFFが22時間で全鍵探索する専用機「Deep Crack」を製作したことで安全性が崩壊しました。NISTは1997年1月にAES選定プロセスを開始し、世界中から15個のアルゴリズムが応募されました。RC6(RSA Security)、Twofish(Bruce Schneier)、Serpent(Ross Anderson、Eli Biham、Lars Knudsen)など豪華なファイナリスト5本の中から、安全性・速度・実装容易性を総合評価した結果、ベルギーのRijndaelが選ばれました。
選定の決め手は、ソフト・ハード両面で軽量に実装できる点でした。設計者のJoan DaemenとVincent Rijmenはルーヴェン・カトリック大学のCOSICグループ出身で、Rijndaelは両者の姓を組み合わせた造語です。公募から制定まで4年を要したオープンな審査プロセスは暗号学コミュニティから高い信頼を得ており、以後の暗号標準(SHA-3など)も同様の国際公募方式を踏襲することになりました。
TLSからディスク暗号化まで

現代のWeb通信を支えるTLS 1.3では、認証付き暗号としてAES-128-GCMとAES-256-GCMが標準スイートに含まれ、HTTPS通信の大半がAESで保護されています。Wi-FiもWPA2以降はCCMPモード、WPA3ではGCMPモードでAESを採用し、無線LANパケットの盗聴を実用的に困難にしました。VPN分野でもIPsec、OpenVPN、WireGuardのいずれもAESを(あるいはChaCha20と並列に)採用しています。
ローカルストレージでは、Windows BitLocker、macOS FileVault、Linux LUKS、AndroidのFile-Based EncryptionがいずれもAESベースで、盗難時にディスクを抜かれても平文を読まれない仕組みを提供します。ファイル単位ではVeraCryptや7-Zip、PDFのパスワード暗号化、S3やGoogle Cloud Storageのサーバーサイド暗号化など、用途は枚挙にいとまがありません。GCMモードを使うと暗号化と認証を同時に行えるため、改ざん検出も必要な現代システムではほぼ標準で選ばれます。
ChaCha20など他暗号との比較

対抗馬として最もよく挙げられるのが、Daniel J. Bernsteinが2008年に設計したストリーム暗号ChaCha20です。Google ChromeとAndroidは、AES-NIを持たない低価格スマートフォンでの性能を改善するため、2014年にTLSへChaCha20-Poly1305を導入しました。AESは表参照を使うソフト実装でキャッシュタイミング攻撃を受けやすい一方、ChaCha20はビット演算と加算だけで構成され、定数時間実装が容易という特徴があります。
とはいえ、Intel/AMD/ARMの主要CPUにはAES命令が標準搭載されており、ハード支援が効く環境ではAESの方が高速です。Linuxカーネルやサーバー用途の暗号化ではAES-GCMが、モバイル端末やIoTデバイスではChaCha20-Poly1305が使い分けられるという棲み分けが進んでいます。TLS 1.3の暗号スイートも両者を並列に推奨しており、クライアントとサーバーの環境に応じて最適な方式が選ばれる時代になっています。
まとめ
AESは2001年の標準化以来、世界中の通信・ストレージ・認証基盤を支え続けている共通鍵暗号です。CPUのハード支援、豊富な認定取得、20年以上の解析実績という三つの柱に支えられ、量子計算機が実用化されるまでは現役の座を譲る気配がありません。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント