Proton

AES暗号化とは?

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

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

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

はい. 2000年、非常に徹底的(新しいウィンドウ)かつ公開された選定プロセスを経て、NISTはAES(それまでVincent Rijmen and 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よりも3,400垓垓垓垓(2¹²⁸)倍、総当たりが困難です。

Groverのアルゴリズム(新しいウィンドウ)は、理論上、量子脅威(新しいウィンドウ)に対する共通鍵の安全性を半減させますが、それでも特に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つ以上(または組み合わせ)で構成されます。

1. Add RoundKey: XOR演算(新しいウィンドウ)を実行して、暗号化対象のデータ(暗号文)と各ラウンド鍵を結合します。

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

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

4. MixColumns: ブロック内の各列に対して、追加の可逆線形変換を実行します。

この一連の変換で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のセキュリティはどれほど強力ですか?

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