AES-256暗号化とは:あなたのデータにとっての意味

AES-256暗号化とは:あなたのデータにとっての意味

AES-256を解説します。暗号の仕組み、256ビットの鍵が重要な理由、GCMモードが加えるもの、アプリがAES-256暗号化をうたうときに確認すべき点。


AES-256とは?

AES-256は共通鍵のブロック暗号で、高度暗号化標準(Advanced Encryption Standard)を256ビットの鍵で実行するものです。1つの鍵で暗号化と復号の両方を行います。データを128ビットのブロック単位で14ラウンドにわたって処理し、NISTが2001年にFIPS 197として標準化しました。

この名前には3つの事実が重なっています。AESはアルゴリズムの名前で、NISTが2001年にRijndaelの提案から選びました。256はビット単位の鍵の長さで、総当たりの攻撃者が試すべき鍵の数を決めます。GCMやCBCなどのモードは、通常AES-256-GCMのように名前の後ろに書かれ、ブロックをどうつなぐか、暗号文の改ざんを検査するかを決めます。AES-256だけでわかるのは暗号と鍵のサイズです。モードはわからず、誰が鍵を持つかもわかりません。

AES-256は、256ビットの鍵を使う高度暗号化標準で、NISTが2001年にFIPS 197として標準化しました。米国政府が機密情報に、銀行が金融取引に、セキュリティを重視するアプリケーションが保存時と通信中のデータの保護に使う共通鍵暗号のアルゴリズムです。AES-256の鍵は2^256通りあり、観測可能な宇宙にあると推定される原子の数より大きな数です。この鍵空間を計算上実行可能な探索にまで縮める攻撃は知られていません。

このガイドでは、AES-256が実際に何をするのか、鍵のサイズがなぜ重要なのか、各モード(ECB、CBC、GCM)の意味、そしてアプリがAES-256暗号化を使っているとうたうときに何を確認すべきかを説明します。

AESが実際に行うこと

AESは共通鍵のブロック暗号です。「共通鍵」とは、同じ鍵で暗号化と復号を行うという意味です。「ブロック暗号」とは、128ビット(16バイト)の固定サイズのブロック単位でデータを処理するという意味です。

このアルゴリズムは、データ(平文)を鍵と組み合わせ、一連の数学的な変換によってかき混ぜた出力(暗号文)を生成します。これらの変換(置換、シフト、混合、鍵の加算)は、決まった回数のラウンドだけ繰り返されます。AES-256は14ラウンドです。

各ラウンドでは4つの操作を行います。

  1. SubBytes:固定の置換表(Sボックス)を使って各バイトを置き換え、非線形性を加えます。
  2. ShiftRows:各行のバイトを異なる量だけずらし、データを位置全体に広げます。
  3. MixColumns:有限体上の行列の乗算で列を混ぜ、変化をバイト全体に拡散させます。
  4. AddRoundKey:ラウンド鍵(メインの鍵から導出)をデータとXORします。

14ラウンドの後、平文は徹底的にかき混ぜられています。正しい鍵でこれらの操作を逆にたどると、元のデータが戻ります。鍵がなければ、暗号文はランダムなノイズと区別できません。

256ビットが重要な理由

AES-256の「256」は鍵の長さ、つまり256ビットを指します。これによって、攻撃者が総当たりで暗号を破るために試さなければならない鍵の数が決まります。

鍵のサイズ 鍵の数 総当たりにかかる時間(毎秒1兆回の推測)
56ビット(DES) 7.2 x 10^16 約20時間
128ビット(AES-128) 3.4 x 10^38 10^13年(10兆年)
256ビット(AES-256) 1.16 x 10^77 10^51年

比較として、宇宙の年齢は約1.38 x 10^10年です。AES-256を総当たりで破るには、毎秒1兆回推測しても、宇宙の年齢のおよそ10^41倍の時間がかかります。

AES-128でもすでに、総当たりで破ることは計算上不可能です。AES-256は、量子コンピュータを含む将来の計算能力の進歩に対して、さらに余裕を持たせます。Groverのアルゴリズム(量子コンピュータによる攻撃)は実質的に鍵の長さを半分にし、AES-256をAES-128相当にまで下げますが、それでも破るのは不可能です。AES-128は実質64ビットの安全性にまで下がり、破られる可能性があります。これが、セキュリティが重要なアプリケーションがAES-256を好む理由です。

AESのモード:なぜ重要か

AES自体は、一度に128ビットのブロックを1つ暗号化するだけです。実際のデータ(写真、書類、動画)には、16バイトより大きなデータを扱う「暗号利用モード」が必要です。モードはブロックのつなぎ方を決め、セキュリティに大きく影響します。

ECB(Electronic Codebook):使ってはいけない

各ブロックを同じ鍵で個別に暗号化します。同じ平文のブロックからは同じ暗号文のブロックができます。そのため、データのパターンが漏れます。典型的な例として、ビットマップ画像をECBで暗号化すると、画像の構造が暗号文に残り、内容がわかってしまいます。ECBは標準に含まれていますが、構造や繰り返しのパターンを持つデータ(実際のデータのほぼすべてが該当します)には決して使うべきではありません。

CBC(Cipher Block Chaining):旧来の方式

各ブロックを、暗号化する前に1つ前の暗号文ブロックとXORします。これでECBのパターン漏れはなくなります。CBCは何十年も標準のモードでしたが、多くの用途ではGCMに置き換えられています。CBCにはランダムな初期化ベクトル(IV)が必要で、認証機能は組み込まれていません(暗号文が改ざんされても検出できません)。

GCM(Galois/Counter Mode):現在の標準

GCMは、カウンターモードの暗号化とガロア体による認証を組み合わせたものです。認証付き暗号化を提供し、データを暗号化するとともに、暗号文へのあらゆる変更を検出する認証タグを生成します。1ビットでも変更されると、壊れた平文を出力するのではなく、復号が失敗します。

NISTはGCMをSP 800-38D(2007年)で標準化しました。新しい実装に推奨されるモードです。

AES-256-GCMは、256ビットの鍵を使うAESをGalois/Counter Modeで実行するものです。セキュリティが重要なアプリケーションが使うべき方式であり、Vaultaireが写真やファイルの内容の暗号化に使っている方式です。

モード パターンの漏れ 認証 現在の推奨
ECB あり(深刻) なし 使わない
CBC なし なし(別途MACが必要) 旧来の方式。HMACと併用すれば許容
GCM なし あり(組み込み) 新しい実装に推奨

写真の保存におけるAES-256の意味

写真保管庫アプリが「AES-256暗号化」をうたうなら、次の3つが成り立っているべきです。

  1. ファイルの内容がAES-256で暗号化されている。写真の生データ(ピクセル、メタデータ、サムネイル)が、256ビットの鍵で暗号文に変換されていること。

  2. 各ファイルに固有の初期化ベクトル(IV)が使われている。同じ写真2枚を同じ鍵で暗号化しても、暗号文は異なるべきです。そのためにはファイルごとに固有のIVが必要です。それがなければ、統計的な分析でパターンが明らかになる可能性があります。

  3. モードが認証を提供している(GCMまたは同等のもの)。認証がなければ、攻撃者は気づかれずに暗号文を変更できます。復号の結果はエラーではなく、壊れたデータになります。

宣伝ページの「AES-256」からはわからないこと

AES-256は必要条件ですが、十分条件ではありません。暗号化が実際にデータを守るかどうかは、いくつかの重要な要素で決まります。

鍵の導出が重要です。256ビットの鍵はどのように生成されるのか。弱いKDFで4桁のPINから導出しているなら、実質的な安全性は256ビットではなく4桁(10,000通り)です。強い実装では、反復回数の多いPBKDF2や、適切なメモリと時間のパラメータを設定したArgon2を使います。VaultaireはHMAC-SHA512を使うPBKDF2で600,000回の反復を行い、選んだ5x5のパターンとデバイスのソルトからローカルの保管庫キーを導出します。PBKDF2は推測1回ごとのコストを上げますが、パターンのエントロピーを256ビットに引き上げるわけではありません。

鍵の保存場所が重要です。鍵はどこにあるのか。鍵がアプリのサンドボックスに平文で保存されていれば、ファイルにアクセスできるマルウェアに読まれます。AppleのSecure Enclaveが対応しているのは特定の書き出し不可能な鍵の操作であり、アプリが渡す任意のAES鍵ではありません。共通鍵の設計では代わりにキーチェーンとデータ保護に頼ることがあるため、文書では「ハードウェアで保護」とだけ書くのではなく、具体的なAPIと保護クラスを示すべきです。

何が暗号化されるかが重要です。ファイルの内容は暗号化しても、ファイル名、サムネイル、メタデータを暗号化しないアプリもあります。フォレンジックの検査者には写真そのものは見えなくても、ファイル一覧の「vacation-beach-2025.jpg」は見えます。包括的な暗号化では、メタデータも別途保護します。

鍵のライフサイクルが重要です。復号された鍵の素材はどのくらいの間使える状態にあるのか。Vaultaireは、ロックしたとき、または閉じたときに、使用中の保管庫とマスターキーの状態を破棄し、改めてロック解除を求めます。保管庫が開いている間は共通鍵のバイト列が必ずアプリのメモリ上に存在し、SwiftとiOSでは、一時的なコピーがすべて上書きされたことをアプリが証明することはできません。

実際のAES-256:誰が使っているか

組織 用途 モード
米国政府(NSA) 機密情報 GCM(または別途認証を伴うCTR)
Apple(iCloudのADP) iCloudのエンドツーエンド暗号化 GCM
Signal メッセージの暗号化 CBC(認証にHMACを併用)
銀行 金融取引の暗号化 GCM
1Password パスワード保管庫 GCM
Vaultaire 写真とファイルの保管庫 GCM
VeraCrypt ディスクの暗号化 XTS(ディスクのブロック向けに最適化)

よくある誤解

「軍でも使われる水準の暗号化」といった言い回しに具体的な意味はありません。宣伝ページがこの表現を使うのは、印象的に聞こえるからです。AES-256は軍で使われています。AES-128も同じです。この表現からは、モード、鍵の導出、鍵の保存場所、実際にどのデータが暗号化されるのかはわかりません。

「256ビット暗号化」がAES-256を意味するとは限りません。ほかの暗号(ChaCha20、Twofish、Serpent)も256ビットの鍵を使います。どのアルゴリズムが明記されているかを確認してください。現在の標準はAES-256-GCMです。

AES-256は弱いパスワードからは守れません。パスワードが「1234」で鍵の導出が弱ければ、暗号の強さに関係なく、実質的な安全性は4桁分です。鎖は最も弱い輪で切れます。

AES-256は使用中のデータを守りません。写真を表示するとき、写真はメモリ上で復号されなければなりません。その瞬間、写真はRAM上に平文で存在します。適切な実装はこの時間を最小限にし、復号したデータを速やかに消去します。

よくある質問

AES-256は何の略ですか?

Advanced Encryption Standard(高度暗号化標準)を256ビットの鍵で実行するものです。AESは、NISTがRijndaelの設計を選んだ後、2001年にFIPS 197として標準化した暗号です。256はビット単位の鍵の長さです。AES-256-GCMのような接尾辞は暗号利用モードを加えるもので、暗号や鍵のサイズとは別の選択です。

AES-256は破られますか?

鍵空間全体を縮めてAES-256を破る攻撃は知られていません。知られている最良の攻撃(2011年のBogdanov、Khovratovich、Rechbergerによるbiclique攻撃)は、AES-256を2^256回の操作から2^254.4回に減らしますが、これは理論上の改善であり、実際の計算上は意味がありません。AES-256は今も破られていません。

AES-256は量子コンピュータに耐えられますか?

おおむね耐えられます。Groverの量子アルゴリズムは実質的な鍵の長さを半分にするため、量子攻撃に対してAES-256は128ビットの安全性に相当します。AES-128は実質64ビットの安全性にまで下がり、破られる可能性があります。AES-256に対するGroverの探索でも約2^128回の操作が必要で、現実的ではありません。

AES-128とAES-256の違いは何ですか?

AES-128は128ビットの鍵(10ラウンド)を使います。AES-256は256ビットの鍵(14ラウンド)を使います。どちらも現在の攻撃に対して安全とされています。AES-256は、将来の進歩、特に量子コンピュータに対してより大きな余裕があります。ラウンドが多いぶんAES-256はAES-128より約40%遅くなりますが、最近のデバイスではハードウェアアクセラレーションによりほとんど無視できる差です。

AES-256暗号化でスマートフォンは遅くなりますか?

通常の使用では体感できるほどではありません。最近のAppleのプロセッサは、システムの暗号ライブラリを通じてAESのハードウェアアクセラレーションを提供します。ただし、それはアプリのAES処理がSecure Enclaveの中で実行されるという意味ではありません。処理時間はファイルサイズ、デバイス、ストレージ、実装によって変わるため、セキュリティに関する主張は、一律のミリ秒の数値ではなく測定に基づくべきです。

アプリが本当にAES-256を使っているかはどうすればわかりますか?

宣伝ページだけでなく、アプリのセキュリティに関する文書を確認してください。具体的なアルゴリズムとモード、鍵の階層、導出のパラメータ、キーチェーンやSecure Enclaveの具体的な使い方、ノンスの扱い、復旧経路、メタデータも暗号化されているかを探してください。オープンソースのコードや独立した監査があれば、こうした主張を検証しやすくなります。

結論

AES-256はNISTが標準化した広く使われている共通鍵暗号で、実用的な攻撃は知られていません。Groverのアルゴリズムを実行する量子コンピュータでも、約2^128の計算量が必要です。AES-256暗号化をうたうアプリを評価するときは、暗号の先を見てください。モード(GCM)、鍵の導出(反復回数の多いPBKDF2/Argon2)、鍵の保存場所(ハードウェアによる保護)、実際に暗号化されるデータ(内容+メタデータ)を確認してください。

Vaultaireは、ファイルの内容、ヘッダー、メタデータ、インデックス、サムネイルにAES-256-GCMを使っています。HMAC-SHA512を使うPBKDF2が、パターンとデバイス共通のキーチェーンのソルトからローカルの保管庫キーを導出し、その鍵がファイル暗号化に使うランダムなマスターキーをアンラップします。共通鍵の処理はCryptoKitを通じてアプリのプロセス内で実行され、デバイスがロックされている間はiOSのキーチェーンとデータ保護が復旧用の状態を守ります。階層の全体はセキュリティモデルで説明しています。

参考文献