Advanced Encryption Standard (AES) は、2001 年に米国国立標準技術研究所 (NIST) によって確立された電子データの暗号化の仕様です。AES は、DES および Triple DES よりもはるかに強力であるにもかかわらず、難易度が高いため、現在広く使用されています。実装する。
留意すべき点
- AES はブロック暗号です。
- キーのサイズは 128/192/256 ビットです。
- データをそれぞれ 128 ビットのブロックで暗号化します。
つまり、入力として 128 ビットを受け取り、出力として 128 ビットの暗号化された暗号文を出力します。 AES は置換置換ネットワーク原理に依存しており、これは入力データの置換とシャッフルを含む一連のリンクされた操作を使用して実行されることを意味します。
セッションの有効期限が切れています
暗号の仕組み:
AES は、ビット単位ではなくバイト単位のデータに対して演算を実行します。ブロック サイズは 128 ビットであるため、暗号化では一度に 128 ビット (または 16 バイト) の入力データが処理されます。
ラウンド数は次のようにキーの長さによって異なります。
- 128 ビット鍵 – 10 ラウンド
- 192 ビット鍵 – 12 ラウンド
- 256 ビット鍵 - 14 ラウンド
ラウンドキーの作成:
キー スケジュール アルゴリズムを使用して、キーからすべてのラウンド キーを計算します。したがって、初期キーは、暗号化の対応するラウンドで使用される多くの異なるラウンドキーを作成するために使用されます。

暗号化:
AES は、各ブロックを列優先配置の 16 バイト (4 バイト x 4 バイト = 128 ) グリッドとみなします。
[ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>
各ラウンドは 4 つのステップで構成されます。
- サブバイト
- シフト行
- ミックスカラム
- ラウンドキーを追加
最後のラウンドには MixColumns ラウンドがありません。
アルゴリズム内で SubBytes が置換を実行し、ShiftRows と MixColumns が置換を実行します。
サブバイト:
このステップでは置換を実装します。
このステップでは、各バイトが別のバイトに置き換えられます。これは、S ボックスとも呼ばれるルックアップ テーブルを使用して実行されます。この置換は、バイトがそれ自体で置換されたり、現在のバイトの補数である別のバイトで置換されたりすることがない方法で行われます。このステップの結果は、前と同様に 16 バイト (4 x 4 ) の行列になります。
次の 2 つのステップでは、置換を実装します。
シフト行:
このステップはその名の通りです。各行は特定の回数だけシフトされます。
- 最初の行はシフトされません
- 2 行目は左に 1 回シフトされます。
- 3 行目は左に 2 回シフトされます。
- 4 行目は左に 3 回シフトされます。
(左循環シフトを行います。)
[ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]>>'ミックスカラム:
このステップは基本的に行列の乗算です。各列に特定の行列が乗算されるため、結果として列内の各バイトの位置が変更されます。このステップは最終ラウンドでは省略されます。
4か月ぶりこれらすべてのラウンドの後、128 ビットの暗号化データが出力として返されます。この処理は、暗号化対象のすべてのデータがこの処理を受けるまで繰り返されます。
復号化:
ラウンド内のステージは、実行すると変更を元に戻す逆の処理があるため、簡単に元に戻すことができます。各 128 ブロックは、キーのサイズに応じて 10、12、または 14 ラウンドを通過します。復号化の各ラウンドの段階は次のとおりです。
- ラウンドキーを追加
- 逆ミックス列
- シフト行
- 逆サブバイト
復号化プロセスは暗号化プロセスを逆に実行するため、顕著な違いがある手順を説明します。
逆ミックス列 :
このステップは暗号化の MixColumns ステップに似ていますが、操作の実行に使用されるマトリックスが異なります。[ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>逆サブバイト :
逆 S-box はルックアップ テーブルとして使用され、復号化中にバイトが置き換えられます。アプリケーション:
AES は、安全なデータの保存と送信を必要とする多くのアプリケーションで広く使用されています。一般的な使用例には次のようなものがあります。
ワイヤレス セキュリティ: AES は、Wi-Fi ネットワークなどのワイヤレス ネットワークの保護に使用され、データの機密性を確保し、不正アクセスを防ぎます。データベース暗号化: AES を適用して、データベースに保存されている機密データを暗号化できます。これは、データ侵害が発生した場合に、個人情報、財務記録、その他の機密データを不正アクセスから保護するのに役立ちます。安全な通信: AES は、インターネット通信、電子メール、インスタント メッセージング、音声/ビデオ通話などのプロトコルで広く使用されており、データの機密性が確保されます。データ ストレージ: AES は、ハード ドライブ、USB ドライブ、その他のストレージ メディアに保存されている機密データを暗号化するために使用され、紛失や盗難の場合に不正なアクセスからデータを保護します。仮想プライベート ネットワーク (VPN): AES は、ユーザーのデバイスとリモート サーバー間の通信を保護するために VPN プロトコルで一般的に使用されます。これにより、VPN 経由で送受信されるデータは機密性が保たれ、盗聴者によって解読されることがなくなります。パスワードの安全な保管: パスワードを安全に保管するために、AES 暗号化が一般的に使用されます。平文のパスワードを保存する代わりに、暗号化されたバージョンが保存されます。これにより、セキュリティ層が追加され、ストレージへの不正アクセスが発生した場合にユーザーの資格情報が保護されます。ファイルとディスクの暗号化: AES は、コンピューター、外部ストレージ デバイス、クラウド ストレージ上のファイルとフォルダーを暗号化するために使用されます。デバイス上に保存されている機密データやデータ転送中に保護され、不正なアクセスを防ぎます。
まとめ :
AES 命令セットが CPU に統合され (数 GB/秒のスループットを実現)、暗号化と復号化に AES を使用するアプリケーションの速度とセキュリティが向上しました。 AES アルゴリズムが導入されてから 20 年が経過しましたが、現在の技術でも実現不可能であるため、私たちは AES アルゴリズムを突破できませんでした。現在までのところ、アルゴリズムの実装に唯一の脆弱性が残っています。