Cryptography-advanced-encryption-standard

提供:Dev Guides
移動先:案内検索

高度な暗号化標準

現在遭遇する可能性が高い、より一般的で広く採用されている対称暗号化アルゴリズムは、Advanced Encryption Standard(AES)です。 これは、トリプルDESより少なくとも6倍高速です。

鍵サイズが小さすぎるため、DESの交換が必要でした。 計算能力の向上により、徹底的なキー検索攻撃に対して脆弱であると見なされました。 トリプルDESはこの欠点を克服するために設計されましたが、遅いことがわかりました。

AESの機能は次のとおりです-

  • 対称キー対称ブロック暗号
  • 128ビットデータ、128/192/256ビットキー
  • Triple-DESよりも強力で高速
  • 完全な仕様と設計の詳細を提供する
  • CおよびJavaで実装可能なソ​​フトウェア

AESの操作

AESは、Feistel暗号ではなく反復暗号です。 「置換-置換ネットワーク」に基づいています。 これは一連のリンクされた操作で構成され、その一部は入力を特定の出力(置換)に置き換えることを含み、その他はビットをシャッフルする(順列)ことを含みます。

興味深いことに、AESはすべての計算をビットではなくバイトで実行します。 したがって、AESはプレーンテキストブロックの128ビットを16バイトとして扱います。 これらの16バイトは、行列として処理するために4列4行に配置されています-

DESとは異なり、AESのラウンド数は可変であり、キーの長さに依存します。 AESは、128ビットキーに10ラウンド、192ビットキーに12ラウンド、256ビットキーに14ラウンドを使用します。 これらの各ラウンドでは、元のAESキーから計算された異なる128ビットのラウンドキーが使用されます。

AES構造の概略図は、次の図に示されています-

AES構造

暗号化プロセス

ここでは、AES暗号化の一般的なラウンドの説明に限定します。 各ラウンドは4つのサブプロセスで構成されます。 最初のラウンドプロセスは以下に描かれています-

最初のラウンドプロセス

バイト置換(SubBytes)

16個の入力バイトは、設計で指定された固定テーブル(Sボックス)を検索することで置き換えられます。 結果は、4行4列のマトリックスになります。

シフトロー

マトリックスの4行はそれぞれ左にシフトされます。 「落ちる」エントリはすべて、行の右側に再挿入されます。 シフトは次のように実行されます-

  • 最初の行はシフトされません。
  • 2番目の行は、1(バイト)だけ左にシフトされます。
  • 3番目の行は2つ左にシフトされます。
  • 4番目の行は、左に3桁シフトします。
  • 結果は、同じ16バイトで構成されているが、互いに対してシフトされた新しいマトリックスです。

MixColumns

4バイトの各列は、特別な数学関数を使用して変換されるようになりました。 この関数は、1つの列の4バイトを入力として受け取り、元の列を置き換える4つの完全に新しいバイトを出力します。 結果は、16個の新しいバイトで構成される別の新しいマトリックスです。 このステップは最終ラウンドでは実行されないことに注意してください。

Addroundkey

マトリックスの16バイトは128ビットと見なされ、ラウンドキーの128ビットとXORされます。 これが最後のラウンドの場合、出力は暗号文です。 それ以外の場合、結果の128ビットは16バイトとして解釈され、別の同様のラウンドを開始します。

復号化プロセス

AES暗号テキストの復号化プロセスは、逆順の暗号化プロセスに似ています。 各ラウンドは、逆の順序で行われる4つのプロセスで構成されています-

  • ラウンドキーを追加
  • ミックスカラム
  • 行をシフト
  • バイト置換

Feistel Cipherとは異なり、各ラウンドのサブプロセスは逆の方法であるため、暗号化アルゴリズムと復号化アルゴリズムは非常に密接に関連していますが、個別に実装する必要があります。

AES分析

現在の暗号化では、AESはハードウェアとソフトウェアの両方で広く採用およびサポートされています。 現在まで、AESに対する実用的な暗号解読攻撃は発見されていません。 さらに、AESにはキーの長さの柔軟性が組み込まれているため、完全なキー検索を実行する能力の進歩に対してある程度「将来を保証」できます。

ただし、DESと同様に、AESセキュリティは、正しく実装され、適切なキー管理が採用されている場合にのみ保証されます。