AES(Advanced Encryption Standard)
AES(Advanced Encryption Standard)とは、DES(Data Encryption Standard)に代わる新しい暗号方式として2000年にアメリカ連邦政府標準の暗号方式として採用された共通鍵暗号アルゴリズムの一つです。
1977年に制定されたDESは、長い間 共通鍵暗号のアルゴリズムとして用いられていたが、コンピュータの処理速度向上による強度不足などの問題が表面化し、NIST(アメリカ国立標準技術研究所)は1997年に次世代の暗号標準であるAESの候補を公募。
その結果、ベルギーのホァン・ダーメン (Joan Daemen) と フィンセント・ライメン (Vincent Rijmen) が設計した Rijndaelを2000年10月に採用されています。
共通鍵暗号方式とは
共通鍵暗号方式とは、暗号化 と 復号 に同じ鍵を使う暗号方式です。送信側と受信側で「共通の鍵」を保持しその鍵で「平文」を「暗号文」に暗号化、「暗号文」を「平文」に復号します。
共通鍵暗号方式は、公開鍵暗号方式に比べて処理が速いという長所がありますが、鍵の配送を極秘に行わなければならないという短所もあります。
また共通鍵暗号方式では、利用する相手の数に応じて「共通の鍵」を作る必要があります。
2人でだけ受け渡しをする場合は、1種類の鍵をそれぞれが持てばよいが、3人だと3種類、4人で6種類、5人で10種類と増えていきます。n人の間で必要な鍵の数を求めるには「n ( n - 1 ) / 2」の数式により求めることができます。
次の図は4人で6種類の鍵が必要なイメージ例です。
AESの暗号化アルゴリズム
AESは、データを一定の量(ブロック)に分けて「暗号文」に変換していくブロック暗号で、ブロック長は128ビットです。(※DESの2倍のブロック長)
鍵長は128ビット、192ビット、256ビットの三種類(鍵長が長くなれば安全性が増すが、その分 計算量が増える)から選択し、暗号化は複数の演算を連続して行うラウンドと呼ばれる処理単位を繰り返すことによって行われます。
AES暗号の鍵長によって変換のラウンド数が次のように異なります。
- 128ビット鍵:10ラウンド
- 192ビット鍵:12ラウンド
- 256ビット鍵:14ラウンド
※ラウンドはSubBytes、ShiftRows、MixColumns、AddRoundKeyと呼ばれる4つの処理を1ラウンドとして暗号化を行います。