AESはどのように機能しますか?

基本操作

AESは、反復的で対称的な暗号化ブロックとして説明できます。 AESはループ構造を使用して、データまたは順列を繰り返し並べ替えます。 ループは、データの1つの単位を入力データの別の単位に置き換えます。 暗号化ルーチンは、同じキーを使用してデータを暗号化および復号化し、そのキーを固定長データブロックに適用します。

主要プログラム

AES暗号化ルーチンは、プライマリ暗号化キーを配列に保存します。 配列は、個別にアドレス指定できる同じ属性を持つオブジェクトのグループです。 マトリックスは4つの行で構成され、各行にはキーのサイズに応じて4、6、または8バイトが含まれます。 暗号化ルーチンは、舞台裏でこのマトリックスを使用して、いくつかのキーを含むキープログラムと呼ばれるテーブルを生成します。 これらのキーは、元のマスターキーと区別するためにラウンドキーと呼ばれます。

状態行列

AESは、128、192、または256ビット長の暗号化キーを使用し、それぞれが128ビット長のブロックと呼ばれるデータ単位で適用されます。 AESアルゴリズムは、各16ビットブロックをStateと呼ばれる2次元配列にコピーして、4x4バイト配列を作成することから始まります。 アルゴリズムは、そのオペランドのいずれかがtrueの場合に「true」を返す排他的な「O」操作を実行します。 これは「AddRoundKey」と呼ばれ、キープログラムとStateマトリックスの最初の4行に含まれます。

数学的操作

排他的な初期操作「O」の後、AES暗号化アルゴリズムはメインループに入り、「SubBytes」、「ShiftRows」、「MixColumns」、および「AddRoundKey」という4つの異なる数学演算をStateマトリックスで繰り返し実行します。 。 これらの操作では、加算、乗算、回転、および置換の組み合わせを使用して、状態マトリックスの各バイトを暗号化します。 メインループは、暗号化キーのサイズに応じて10、12、または14回実行されます。 実行が完了すると、アルゴリズムはステータスマトリックスを暗号化されたテキストの形式で出力にコピーします。

興味深い記事