Advanced Encryption Standard
(Rijndael)

The `SubBytes` step, one of four stages in a round of AES

設計者|  フィンセント・ライメン, ホァン・ダーメン（英語版）
初版発行日|  1998
派生元|  Square
後継|  Anubis, Grand Cru
認証|  AES採用, CRYPTREC, NESSIE, NSA
暗号詳細
鍵長|  128, 192 or 256 bits[1]
ブロック長|  128 bits[2]
構造|  SPN構造
ラウンド数|  10, 12, 14（鍵長による）
最良の暗号解読法
完全な総当たり攻撃よりも計算量の多い攻撃が発表されているが、2013年時点では計算量が少ない攻撃は見つかっていない：[3] AES-128については、完全2部グラフ(Biclique)を使用すると2126.1の計算量で鍵を復元することが可能である。AES-192とAES-256に対するBiclique攻撃（英語版）では、それぞれ2189.7と2254.4の計算複雑度が適用される。関連鍵攻撃では、AES-192とAES-256をそれぞれ2176と299.5の複雑さで破ることができる。

Advanced Encryption Standard (AES) は、アメリカが2001年に標準暗号として定めた共通鍵暗号アルゴリズムである。アメリカ国立標準技術研究所（NIST）が公募し、Rijndael（ラインダール）がAESとして採用された[4]。

## 概要

[編集]

AES以前の標準暗号であったDESは、次の2点が問題であった。

* コンピュータの能力とネットワーク技術の上昇による相対的な強度の低下
* NSAの関与がある設計の不透明性（詳細はDESの記事を参照）

そこで、新しい標準暗号がアメリカ国立標準技術研究所（NIST）の主導によって公募され、AESが選出された。2001年3月に FIPS PUB 197 として公表された。

厳密には「AES」は、選出されなかった暗号も含む、手続き期間中から使われた「新しい標準暗号」の総称であり、選出された暗号方式自体の名はRijndael（ラインダール）である。

AESはSPN構造のブロック暗号である。ブロック長は128ビットであり、鍵長には128ビット・192ビット・256ビットの3種類が選択できる（鍵長が大きいほうが暗号強度が高い）。これに対し、AESの元となった Rijndael では、ブロック長と鍵長が可変であり、128ビットから256ビットまでの32ビットの倍数が選べる。NISTが公募した際のスペックに従い、米国標準となったAESではブロック長は128ビットに固定され、鍵長も3種類に限られた[5]。

## 経緯

[編集]

### AESの選定

[編集]

旧規格 DES (FIPS 46) の安全性が低下したので、1997年9月にNIST（アメリカ国立標準技術研究所）が後継の暗号標準AES (Advanced Encryption Standard) とすべく共通鍵ブロック暗号を公募した。公募要件には下記のような条件が挙げられた[5]。

* 米国に限らず世界中で、制限なく無料で利用できなければならないこと。
* 詳細なアルゴリズム仕様を公開すること。
* ANSI C及びJavaによる実装を行うこと。
* 暗号強度評価を公開すること。

### AESの最終候補

[編集]

世界から応募された21方式から、公募要件を満たした15方式に対する評価が行われ、安全性と実装性能に優れた5方式が最終候補として残った。最終候補および設計者は下記のとおりである[5]。

* Rijndael \- ホァン・ダーメン（英語版）、フィンセント・ライメン
* Serpent（サーペント、または、サーパン）- ロス・アンダーソン（英語版）、エリ・ビーハム、ラーズ・ヌードセン
* RC6 \- ロナルド・リヴェスト、マット・ロブショー、レイ・シドニー、イーチュン・リサ・イン
* Twofish \- ブルース・シュナイアー、ジョン・ケルシー、ダグ・ホワイティング、デーヴィッド・ワグナー、クリス・ホール、ニールス・ファーガソン
* Mars \- カロリン・バーウィック、ドン・カッパースミス、エドワード・ダヴィニョン、ロザリオ・ジェンナロ、シャイ・ハレヴィ、チャランジット・ジュトラ、ステファン・マテリアス Jr.、ルーク・オコーナー、モハンマド・ペイラヴィアン、デヴィド・サフォード、ネヴェンコ・ズニコフ

### AESの決定

[編集]

最終選考の結果、あらゆる実装条件で優れた実装性能を発揮したベルギーのルーヴェン・カトリック大学の研究者ホァン・ダーメン（英語版） (Joan Daemen) と フィンセント・ライメン (Vincent Rijmen) が設計した Rijndael （ラインダール）が2000年10月に採用された。

Rijndaelという名称のうち、RijnはRijmen、daeはDaemenから取られたことは明白だが、lはどこから来たのかが不明だった。指導教授だったバート・プレネル (Bart Preneel)（英語版） から取ったのではという説があり、Rijmenが講演した際に質問を受けたが、その答えは "It's a conjecture.（それは憶測に過ぎないね）" だった[要出典]。

## 暗号化の方法

[編集]

AESはSPN構造のブロック暗号で、ブロック長は128ビット、鍵長は128ビット・192ビット・256ビットの3つが利用できる[4]。

暗号化処理では、始めに鍵生成を行う。AES暗号の鍵長によって変換のラウンド数が異なる。次のとおりである。

* 鍵長128ビットのとき、ラウンド数は10回である。
* 鍵長192ビットのとき、ラウンド数は12回である。
* 鍵長256ビットのとき、ラウンド数は14回である。

暗号化は下記の4つの処理から構成される[5]。

1. SubBytes - 換字表（Sボックス）による1バイト単位の置換。
2. ShiftRows - 4バイト単位の行を一定規則で左シフトする。
3. MixColumns - ビット演算による4バイト単位の行列変換。
4. AddRoundKey - ラウンド鍵とのXORをとる。

これら4つの処理を1ラウンドとして暗号化を行う。

なお、復号は上記処理の逆変換を逆順で実行する。

1. AddRoundKey
2. InvMixColumns
3. InvShiftRows
4. InvSubBytes

## 安全性

[編集]

関連鍵攻撃により、256ビットのAES暗号の第9ラウンドまでが解読可能である。また、選択平文攻撃により、192ビットおよび256ビットのAES暗号の第8ラウンドまで、128ビットのAES暗号の第7ラウンドまでが解読可能である (Ferguson et al., 2000)。シュナイアーはAESの「代数的単純さに疑問」を感じているが、AESは欧州の暗号規格NESSIEや日本の暗号規格CRYPTRECでも採用された。AESの数学的構造は他のブロック暗号と異なり、きちんとした記述もある[6][7]。

この暗号は暗号化方式としてはまだどんな攻撃にも屈していないが、実装によってはサイドチャネル攻撃が成功する場合がある[8][9]。

## 関連項目

[編集]

* ブロック暗号
* 有限体
* Transport Layer Security \- 暗号化として128ビットおよび256ビットのAES-CBC、AES-GCM、AES-CCMを使用可能
* ディスク暗号化
* HFS+ \- セキュリティ機能「FileVault」が128ビットAES暗号を使用
* BitLocker
* Wii \- 暗号化に128ビットAESを使用
* アーカイブファイル形式
* ZIP \- 256ビットAESを使用可能
* 7z \- 256ビットAESを使用可能
* RAR \- 256ビットAESを使用可能
* CCMP \- WEPで用いられていたRC4、WPAで用いられていたTKIP（本質的にRC4と同等）に代わり、WPA2で採用された暗号化プロトコル。128ビットAESをCCMモードで利用
* AACS \- 128ビットAESを使用
* CRYPTREC
* NESSIE
* CPUの命令セット
* AES-NI
* CLMUL instruction set

## 脚注

[編集]

[脚注の使い方]

1. ^ Rijndaelでは128, 160, 192, 224, 256 bitsが選択可能。AESのスペックに合わせて3つに限定
2. ^ Rijndaelでは128, 160, 192, 224, 256 bitsが選択可能。AESのスペックに合わせて128 bitsのみに限定
3. ^ “Biclique Cryptanalysis of the Full AES” (PDF) (英語). 2016年3月6日時点のオリジナルよりアーカイブ。2016年10月9日閲覧。
4. ^ a b 岡本 暗号理論入門 第2版(2002:51-52)
5. ^ a b c d 結城 暗号技術入門 第3版(2003: 69-71)
6. ^ A simple algebraic representation of Rijndael (Niels Ferguson, Richard Schroeppel, and Doug Whiting)（2003年6月6日時点のアーカイブ）
7. ^ Sean Murphy （英語）
8. ^ 角尾幸保, 久保博靖, 茂真紀, 辻原悦子, 宮内宏, "S-boxにおけるキャッシュ遅延を利用したAESへのタイミング攻撃 (PDF) ", SCIS2003
9. ^ Cache-timing attacks on AES (PDF) （英語） \- (Daniel J. Bernstein)

## 参考文献

[編集]

* FIPS 197 (PDF) 、NIST発行、2001年 （英語）
* Daemen and Rijmen, Rijndael 仕様書（補追版） (PDF) 、1999年発行-2003年補追 （英語）
* 岡本栄司『暗号理論入門』（第2版）共立出版、2002年。ISBN 4-320-12044-2。
* 結城浩『暗号技術入門 - 秘密の国のアリス』（第3版）ソフトバンクパブリッシング、2003年。ISBN 4-7973-2297-7。
* 澤田秀樹：「暗号理論と代数学 増補・AES(高度暗号化標準) Kindle版」，（2021年9月16日）．

## 外部リンク

[編集]

* 公式サイト AES Home Page（のアーカイブ） \- ウェイバックマシン（2014年7月17日アーカイブ分） （英語）
* リファレンスコード （英語）
* 解説 AES概説（2009年5月3日時点のアーカイブ）
* 選定過程 AESファイナリストをめぐって \- ウェイバックマシン （日本語）
* Report on the Development of the Advanced Encryption Standard （英語）

* 表
* 話
* 編
* 歴

ブロック暗号

アルゴリズム|

* AES
* ARIA
* Blowfish
* Camellia
* CAST-128
* CAST-256
* DES
* DES-X
* 3DES
* FEAL
* IDEA
* KASUMI
* Lucifer
* MISTY1
* MULTI2
* RC2
* RC5
* RC6
* SEED
* Serpent
* Square
* Twofish
* スキップジャック

設計|

* Feistel構造
* S-box
* SPN構造

（暗号解読）|

* 総当たり攻撃
* レインボーテーブル
* 中間一致攻撃
* 線形解読法
* 差分解読法
* 切詰
* 高階
* 関連鍵攻撃

標準化|

* AES公募
* CRYPTREC
* NESSIE
* NSA Suite B（英語版）
* CNSA

用語|

* 初期化ベクトル
* 暗号利用モード

* カテゴリ

* 表
* 話
* 編
* 歴

* 暗号史
* 暗号解読
* Cryptography portal
* en:Outline of cryptography

* 共通鍵暗号
* ブロック暗号
* ストリーム暗号
* 暗号利用モード
* 公開鍵暗号
* 暗号学的ハッシュ関数
* メッセージ認証コード
* 認証付き暗号
* 乱数生成器
* ステガノグラフィー

カテゴリ

この項目は、コンピュータに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています（PJ:コンピュータ/P:コンピュータ）。

|

* 表示
* 編集