Advanced Encryption Standard
Advanced Encryption Standard (AES) は、アメリカが2001年に標準暗号として定めた共通鍵暗号アルゴリズムである。アメリカ国立標準技術研究所(NIST)が公募し、Rijndael(ラインダール)がAESとして採用された。
AESはSPN構造のブロック暗号で、ブロック長は128ビット、鍵長は128ビット・192ビット・256ビットの3つが利用できる。
暗号化処理では、始めに鍵生成を行う。AES暗号の鍵長によって変換のラウンド数が異なる。次のとおりである。
鍵長128ビットのとき、ラウンド数は10回である。
鍵長192ビットのとき、ラウンド数は12回である。
鍵長256ビットのとき、ラウンド数は14回である。
暗号化は下記の4つの処理から構成される。
SubBytes - 換字表(Sボックス)による1バイト単位の置換。
ShiftRows - 4バイト単位の行を一定規則で左シフトする。
MixColumns - ビット演算による4バイト単位の行列変換。
AddRoundKey - ラウンド鍵とのXORをとる。
これら4つの処理を1ラウンドとして暗号化を行う。
なお、復号は上記処理の逆変換を逆順で実行する。
AddRoundKey
InvMixColumns
InvShiftRows
InvSubBytes