AES暗号化とは何か、そしてそれはどのように機能するのか?

悪意のあるハッカーがデータを盗んだり破壊したりする機会を探している世界では、暗号化はデジタル世界の不可欠な部分となっています。暗号化は、データをスクランブルして、秘密の鍵を持つ権限のある人だけが復号して読むことができるようにすることでデータを保護する方法です。AESは、VPNサービスプロバイダーや政府機関がデータを保護するために広く使用している暗号化アルゴリズムです。この記事は、AES暗号化とその仕組みについて詳しく説明します。

## AES暗号化とは何ですか?

暗号化には2つの主なタイプがあります:対称暗号と非対称暗号です。非対称暗号化は、2つの異なるキー(秘密キーと公開キー)を使用してデータを暗号化および復号化するのに対し、対称暗号化は暗号化と復号化の両方に単一のキーを使用します。Advanced Encryption Standard (AES) は対称暗号のカテゴリーに属しています。これは、1998年にVincent RijmenとJoan Daeによって開発された対称ブロック暗号のRijndaelファミリーのサブセットであり、そのため「Rijndael」という名前が付けられています。

AESは、置換置換ネットワーク(SPN)アルゴリズムに基づく反復暗号です。SPNアルゴリズムは、一連の数学的操作の繰り返しラウンドを含むブロック暗号のクラスです。これらの暗号化ラウンドのために、AESは強力な暗号化暗号です。AESには、暗号化キーの長さに基づいて3つの異なるタイプがあります。それらには、AES-128、AES-192、AES-256が含まれます。

これらのAESのタイプごとに鍵の長さがその強度を決定します。長さが長いほど、暗号化は強力になります。128ビットおよび192ビットAES暗号化暗号はそれぞれ3.4 x 10^38と6.2 x 10^57の可能な鍵の組み合わせを持っています。AES-256は最も堅牢な暗号化暗号であり、1.1 x 10^77の可能な鍵の組み合わせを持っています。鍵の長さに差があっても、AESのブロックサイズは常に同じです–128ビット。

AESはなぜ開発されたのか?

以前の暗号化シファーは単純で、適切な時間とツールがあれば誰でもそれを解読できました。技術が進歩し続けるにつれて、ハッカーは暗号化シファーと戦うためにより良いツールを手に入れました。その時点で存在していたデータ暗号化標準(DES)よりも、暗号化シファーをより洗練されたものにする必要があることは明らかでした。

AESと同様に、DESも対称鍵アルゴリズムです。IBMが1970年代にDESを開発し、米国国立標準局(NBS)が機密政府情報を暗号化するための標準暗号として採用しました。NBSと米国政府による採用により、異なるセクターがDESを受け入れました。これは学術界の関心を引き、暗号学の研究への関心を促しました。数十年にわたり、DESは強固であることが証明されましたが、1997年6月にDESCHALLグループが公にそれを解読しました。

エレクトロニック・フロンティア・ファウンデーション(EFF)のDESクラッカーは、翌年に56時間で同じ偉業を成し遂げました。1999年には、DESキーを破るのに24時間未満しかかかりませんでした。これらの重要な出来事は、コンピューティングパワーと技術の進歩が進むにつれて、DESを破ることが時間の問題で容易になることを示しました。さらに、DESキーの長さは56ビットを超えなかったのに対し、全能の256ビットAESとは比べ物になりません。

2001年、アメリカ国立標準技術研究所 (NIST)は、その万能性のためにAES暗号方式を採用したことを明らかにしました。それはDESよりも性能が良く、実装が簡単で、非常に解読が困難です。

## AES暗号化がどのようにしてあなたのデータを保護するのか

AES暗号化アルゴリズムを理解するのは、適切な数学の背景がないと難しいかもしれません。しかし、その仕組みを基本的に理解できるように、プロセスを簡単に説明しようと思います。AES暗号化アルゴリズムは、128ビットのブロックでデータを暗号化および復号化します。鍵の長さが変わっても、ブロックサイズは変わりません。

AES暗号化アルゴリズムは、秘密鍵(128ビット、192ビット、または256ビット鍵)と平文(暗号化したい機密データ)を組み合わせて暗号文を作成します。AES暗号は、秘密鍵と平文を使用して、一連の数学変換(置換-置換)を行います。操作が行われる前に、平文データは16バイトまたは128ビット(1バイトは8ビットに等しい)の4 x 4行列に分割されます。AESはビットブロック単位でデータを暗号化するためです。

AESアルゴリズムは、複数のラウンドを用いた置換-置換を使用して、平文データを最終的な暗号文に変換します。鍵のサイズがラウンド数を決定します。128ビットの鍵サイズは10ラウンド、192ビットの鍵サイズは12ラウンド、256ビットの鍵サイズは14ラウンドです。さあ、平文データを暗号文に変換するプロセスに関わる操作を見てみましょう。

1. キー拡張とAddRoundKey

この操作では、AESはRijndaelキースケジュールを使用して、主な秘密鍵から新しい128ビットのラウンドキー(サブキー)を生成します。つまり、初期の秘密鍵を使用して、暗号化操作の各ラウンドに対する一連のキーを作成することを含みます。AddRoundKey操作では、現在のデータ状態の各バイトが、ビット単位のXOR操作を利用して現在のラウンドキーのバイトと混合されます。

2. SubBytes(バイトの置換)

この操作では、16バイトブロックがRijndael置換ボックス(S-Box)を通過し、各バイトに代替値を与えます。各バイトは、事前定義されたRijndael S-Boxによって規定されたルールに従って置換されます。S-Boxは値を取り、それを別の値に置き換えます。このプロセスははるかに複雑ですが、世界のコンピューティングリソースではAES暗号を破ることがほぼ不可能になります。

3. ShiftRows

ShiftRows操作は、最初の行を除く16バイトブロック内のすべての行をシフトします。SubBytes操作と比較して理解しやすいです。最初の行は変わらずそのままです。2行目は左に1バイト移動し、3行目は左に2バイト移動し、4行目は左に3バイト移動します。

4. MixColumns

この操作は、16バイトブロック内の各列を線形に変換します。この操作が複雑になり得るため、あまり詳しくは触れません。行列乗算とビット単位のXOR加算を使用して、この操作は各列を事前定義された4 x 4行列と乗算し、新しい列とブロックを生成します。

演算の順序

AESが暗号化するすべてのデータは、上記の各操作を通過しなければなりません。これらの操作は、必要なラウンド数に応じて複数回繰り返されます。128ビットキーは10ラウンドが必要で、192ビットキーは12ラウンドが必要で、256ビットキーは14ラウンドが必要です。以下では、これらの操作がデータを暗号化するためにどの順序で実行されるかを見ていきます。

キー拡張

追加ラウンド

以下の操作は、下記の順序で9、11、または13ラウンド続きます:

SubBytes

ShiftRows

MixColumns

AddRound

次の操作は、最終ラウンド(秘密鍵の長さに応じて10回目、12回目、または14回目)で行われます:

SubBytes

ShiftRows

AddRound

AES暗号化の解読

AESがデータを暗号化する方法を見てきましたが、どのようにしてデータを復号化するのでしょうか?復号化プロセスは簡単です。暗号化プロセスに関わるすべてのステップを逆にすることで、データを復号化できます。データを復号化している場合のプロセスを見てみましょう。

次の操作は、秘密鍵の長さに応じて、最終ラウンドの10回目、12回目、または14回目に行われます。

逆ラウンド追加

Inverse ShiftRows

逆SubBytes

以下の操作は、下記の順序で9、11、または13ラウンド続きます:

逆ラウンド追加

逆MixColumns

Inverse ShiftRows

逆SubBytes

逆ラウンド追加

AES暗号化にはセキュリティ上の問題がありますか?

AES暗号化に対する成功した攻撃の記録はありませんが、実装を誤るとハッカーが脆弱性を発見し、それを悪用する可能性があります。暗号学者が常にAESの脆弱性を探しているため、いくつかの成功した理論的およびサイドチャネル攻撃がありました。それらのいくつかを見てみましょう。

既知鍵区別攻撃

2009年、AES-128の8ラウンドバージョンを既知の鍵区別攻撃で解読する試みが成功しました。AES-128は暗号化のラウンドが10回あるため、依然として侵入不可能です。また、攻撃者がこの攻撃を機能させるには、暗号化キーを事前に知っている必要がありますが、これは非常に考えにくいことです。

2. サイドチャネル攻撃

サイドチャネル攻撃は、AES暗号化が正しく実装されていない場合にのみ機能します。これは、システムが情報を漏らすことに依存しています。攻撃者は、電磁情報、電力消費、タイミング情報などのデータ漏洩に注意を払い、アルゴリズムから情報を収集します。AESはこのタイプの攻撃に完全に免疫があるわけではありません。

3. その他の攻撃

暗号化専門家がAES暗号を破るために試みた他の攻撃には、鍵復元攻撃と関連鍵攻撃があります。どちらの場合も、攻撃者は暗号化鍵をターゲットにします。鍵復元攻撃では、攻撃者は少なくとも一組の暗号化されたメッセージと復号されたメッセージを持っている必要があります。関連鍵攻撃では、攻撃者は2つの異なる鍵の関係を知っている必要があります。これらの攻撃は、AESを誤って実装したシステムでのみ機能し、重大な脅威ではありません。

## 結論

セキュリティ機関やトップVPNサービスがAES暗号化を使用する主な理由は、攻撃に対する免疫があるためです。実質的に破ることが不可能であるだけでなく、Advanced Encryption Standardは高速で、多用途性があり、実装が簡単です。DESなどの他の暗号化タイプと比較して、メモリの使用量も少ないです。また、他のセキュリティプロトコルと組み合わせて、高いレベルのセキュリティを確保することもできます。