Protonホームページ

暗号化 > 暗号化の種類 > AES暗号化

AES暗号化とは?

暗号分野におけるAESとは、米国国立標準技術研究所(NIST)によって認定された、高速で効率的かつ安全な暗号化アルゴリズムであるAdvanced Encryption Standard(先進的暗号化規格)を指します。 これは、データの暗号化と復号化の両方に同じ鍵を使用する共通鍵暗号です。 これは比較的処理が速いため、保存されている大量のデータを暗号化するのに適しています。

その強度と信頼性から、AESは、ワイヤレスネットワークセキュリティ、データやディスクの暗号化、オンライン決済システム、クラウドストレージパスワード管理、さらには政府や軍事用のアプリでも使用されている、最も普及している一般的な暗号化の種類の一つです。 米国政府は機密情報を保護するためにAES暗号化を使用しており、これがその普及につながっています。

AESアルゴリズムは安全ですか?

はい. 2000年、極めて徹底的(新しいウィンドウ)かつオープンな選考プロセスの後、NISTは、AES(それまではVincent Rijmen と Joan Daemenによって作成されたRijndaelアルゴリズムとして知られていました)が、次の世紀まで政府の機密情報を十分に保護できる、推奨される(新しいウィンドウ)「非機密の、公に開示された暗号化アルゴリズム」として、DESに代わるものであると発表しました。

NISTによると、すべてのAESアルゴリズムの鍵長は、「秘密(Secret)」レベルまでの機密情報を保護するのに「十分」であるとみなされています。 「最高機密(Top Secret)」情報には、AES-192またはAES-256が必要です。

総当たり攻撃

あらゆる暗号化方式に対して考えられる最も基本的な攻撃手法は、総当たり攻撃(ブルートフォースアタック)であり、これは正しい鍵が見つかるまで、考えられるすべての鍵の組み合わせを試すものです。 

Frontier(新しいウィンドウ)は、公に知られている世界で最も強力なスーパーコンピューターです。 仮にその全出力をAES-128の総当たり攻撃に捧げたとしても、AES-128のすべての可能な組み合わせを試し尽くすには、依然として10兆〜12兆年ほどの歳月が必要になります。 これは宇宙の年齢よりもはるかに長い時間です。 したがって、ビットサイズが小さい場合でも、AESは従来のコンピューターによる総当たり攻撃に対して非常に高い耐性を備えています。 

AES-256は、AES-128に比べて総当たり攻撃を仕掛けるのが340澗(2¹²⁸)倍困難です。

グローバーのアルゴリズム(新しいウィンドウ)は理論上、量子脅威に対する共通鍵の安全性を半分に低下させますが、特に256ビット鍵を使用している場合は、依然として比較的高い量子耐性を備えています。

鍵への攻撃

長年にわたり、AES鍵に対する理論上の攻撃が暗号研究者によっていくつも発表されてきましたが、これらはいずれも実用上は機能しないか、ラウンド数を減らしたAES実装に対してのみ有効です(下記参照)。 

最も成功した試みは、2011年に発表された理論上のバイクリーク攻撃(新しいウィンドウ)で、AESの総当たりに必要な時間を4分の1に短縮できます。 しかし、それでも現在または将来的に想定されるいかなるコンピューターハードウェアを用いても、AESを総当たりするには何十億年も必要です。 

適切に実装されたAES-128以上に対して実用的な既知の鍵攻撃はありません。 

サイドチャネル攻撃

サイドチャネル攻撃は、暗号化計算を実行するコンピューターから手がかりを探すことで、総当たり攻撃を成功させるために必要な組み合わせ数を減らそうとする攻撃です。 次の点を調べることで、手がかりを得られる場合があります。

  • タイミング - コンピューターが処理を実行するのにかかる時間
  • 電磁的漏洩
  • 音響的な手がかり
  • 視覚的な手がかり(高解像度カメラで取得)。

特にキャッシュタイミング攻撃は、AESの解読においてかなり有効であることが示されています。 最も注目すべき例では、研究者らは2016年に「平文または暗号文の約6〜7ブロックだけで(理論上は1ブロックでも十分)」AES-128鍵を回復(新しいウィンドウ)することに成功しました。

ただし、サイドチャネル攻撃の脅威を軽減するためにできることはいくつもあります。

  • 適切に実装されたAESは、データが漏洩する経路を防ぐことができます。
  • AES命令セットを統合したハードウェアは、AESのサイドチャネル攻撃対象領域をさらに縮小します。
  • ランダム化技術を使用することで、AESで保護されたデータと、サイドチャネル攻撃によって収集され得る漏洩データとの関係を断つことができます。 

多くの場合、サイドチャネル攻撃では、攻撃者がデータを復号化するデバイスに物理的にアクセスするか、その近くにいる必要があります。ただし、特にタイミング攻撃では、悪意のあるソフトウェアがデバイスにインストールされている場合、リモート攻撃も可能です。

AESの仕組み

AESは、128ビット、192ビット、または256ビットの鍵を使用して、128ビット単位のブロックでデータを暗号化および復号化するブロック暗号です。 前述のとおり、データの暗号化と復号化には同じ鍵が使用されます。 128ビット鍵を使用するAESは一般にAES-128と呼ばれ、同様にAES-192、AES-256もあります。

データは複数回のラウンドを用いて暗号化され、各ラウンドは一連の数学的演算で構成されています。 

このプロセスは、Rijndaelのキー・スケジュール(鍵生成)アルゴリズムを使用して、元の秘密鍵から一連の新しいラウンドキーを導出することから始まります。 これは鍵拡張として知られています。

その後、各ラウンドは、以下の演算のいずれか一つ以上(または組み合わせ)で構成されます。

1. ラウンドキーの加算(Add Round Key):XOR(排他的論理和)演算(新しいウィンドウ)を実行し、暗号化されるデータ(暗号文)と各ラウンドキーを結合します。

2. Sub Bytes: 置換表を使用して、データをさらに撹拌します。 原理的には、子どもの頃に使った単純換字式暗号、つまりメッセージ内の各文字をアルファベット順で一定数後ろの文字に置き換えるものを思い浮かべてください。

3. Shift Rows: 各128ビットのデータブロックは、16バイトの4x4ブロックで構成されます。 この操作では、ブロックの各行にある各バイトを、一定のオフセットだけ左にシフトします。

4. 列の混同(Mix Columns):ブロック内の各列に対して、可逆的な線形変換が追加で実行されます。

この一連の変換で1ラウンドが構成され、鍵サイズに応じて決められた回数だけデータに対して繰り返されます。

  • AES-128 — 10ラウンド
  • AES-192 — 12ラウンド
  • AES 256 — 14ラウンド

データを復号化するには、それを暗号化するために使用したすべての手順を、単に逆順に実行します。 これには、各逆ラウンド鍵を使用してプロセスを逆にたどるため、元の秘密鍵が必要です。

なぜAES-256はAES-192やAES-128より好まれるのですか?

現在および予見可能な技術を考慮すると、AES-128を総当たり攻撃で解読するには、宇宙の年齢よりも長い時間がかかります。 伝説的な暗号学者であるBruce Schneier氏は、AES-128の方が鍵スケジュール(元の秘密鍵からすべてのラウンドキーを計算するアルゴリズム)が強力であるため、AES-256よりも強力である可能性さえあると主張して(新しいウィンドウ)います。

それでもなお、AES-256は共通鍵暗号化の事実上のデファクトスタンダード(業界標準)となっています。 (多少の議論はあるものの)鍵サイズが大きいほど安全性のマージンが大きくなり、アルゴリズムを劇的に弱体化させる方法が万が一見つかったとしても、暗号化されたデータの安全性が保たれるため、より強力な選択肢として見なされることがよくあります。 ポスト量子耐性の必要性が高まるにつれ、この主張はさらに説得力を増しています。 

AES-CBCとAES-GCMの比較

つい最近まで、AESは通常、暗号ブロック連鎖(CBC)モードで使用されており、この場合、各プレーンテキストブロックは暗号化される前に前の暗号文ブロックとXORされます。 CBCモードで使用する場合、データを検証するにはHMAC-SHA256のようなHMAC(新しいウィンドウ)ハッシュアルゴリズムが必要です。

しかし近年では、AESが暗号化のカウンターモード(新しいウィンドウ)を使用するGalois/counter(GCM)モードで使われることがますます一般的になっています。 主な利点は、外部アルゴリズムを必要とせず、ガロアフィールド(新しいウィンドウ)を使用してデータを検証できることです。 そのため、計算オーバーヘッドが高くなり得る別個の認証アルゴリズムを使用するよりも効率的です。

HMAC認証を備えたAES-CBCは一般に安全と見なされていますが、CBCはパディング攻撃(新しいウィンドウ)、たとえばPOODLE(新しいウィンドウ)に対して脆弱である可能性があります。 GCMはそうではありません。

ハードウェアアクセラレーション対応AES

ほとんどの最新のCPUには、プロセッサ上で直接AES演算を実行するハードウェア命令セットであるAdvanced Encryption Standard New Instructions(AES-NI(新しいウィンドウ))が組み込まれています。 これにより、AESの処理速度が大幅に向上するだけでなく、演算がプロセッサのセキュア実行ユニット内で行われるため、攻撃者が悪用できるようなタイミングの変動がほとんど観測されなくなり、タイミングベースのサイドチャネル攻撃の防止にも役立ちます。

ProtonとAES

Proton製品の保護には、AESを幅広く活用しています。

予定と連絡先は、鍵交換にECCを組み合わせたAES-256を使用して保護されており、エンドツーエンド暗号化を通じてお客様のプライバシーを確保します。

Proton VPNは主に高速かつ効率的なWireGuard® VPNプロトコル(ChaCha20を使用)に重点を置いていますが、OpenVPN接続ではAES-256を使用します。

Proton Passは、パスワード、メモ、ユーザー情報、その他のアイテムを、安全な保管庫内でAES-256を使用して保管します。

Proton Driveは、鍵交換にECCを使用し、アップロードされたすべてのファイルをAES-256でエンドツーエンドに暗号化します。 Proton DocsとProton SheetsもECCベースの鍵交換とともにAES-256を使用していますが、その暗号化実装はProton Driveの一般的なファイル暗号化方式とは異なります。

Proton Mailは、OpenPGP標準を通じてメールと添付ファイルをAES-256で保管します。 メールのロックを解除する秘密鍵でさえ、サーバーに保管される前にAES-256で暗号化されます。

Proton Meetは、音声、動画、チャットメッセージを暗号化するためにMessaging Layer Security(MLS)を使用し、すべての通信においてForward Secrecy(PFS)とpost-compromise security(PCS)を確保します。 すべての会議データは、AES-256-GCMを使用してエンドツーエンド暗号化されています。

AES暗号化への攻撃を軽減する

セキュリティの強さは最も弱い部分によって決まり、通常それはお客様のパスワードです。 つまり、ソーシャルエンジニアリングの手口、フィッシング攻撃、そしてキーロガー(新しいウィンドウ)も、AESで暗号化されたデータに対する脅威となります。 そのため、AESが使用されている場合でも、以下の予防策を講じる必要があります。

Proton

データを自分で管理する

Protonは、当初からお客様のデータを保護するために構築されました。 エンドツーエンド暗号化、オープンソースアプリ、そして第三者機関による監査により、お客様の情報はお客様だけのものです。

AES暗号化に関するよくある質問

AESとDESではどちらが優れていますか?
AESとRSAではどちらが優れていますか?
AESのセキュリティはどれほど強力ですか?

暗号化について詳しく知る