本文へ移動

AES-256暗号化をやさしく解説

ほとんどのアプリが「AES-256」とうたっています。大事なのは、鍵がどこにあるかです。

2 分で読めます最終確認日

要点

AESはNISTが公開した暗号化の標準で、AES-256は256ビットの鍵を使うバージョンです。可能性が多すぎて、すべてを試すことはできません。GCMはAESの使い方の1つで、改ざんも検出します。アルゴリズムがこれほど強力なので、アプリの本当のセキュリティは鍵の管理――誰が鍵を持ち、どこに保管し、何で解除するか――で決まります。

押さえておきたいこと

  • AES-256:NISTの標準で、ブロックは128ビット、鍵は256ビット。
  • GCMは完全性チェックを加え、改ざんされたデータは復号に失敗します。
  • 強力な暗号でも、鍵の管理がずさんなら何も守れません。

AESとは

AES(Advanced Encryption Standard)は、米国国立標準技術研究所(NIST)が2000年に選定し、FIPS 197で規定したブロック暗号です。秘密鍵を使って、データを128ビットのブロック単位で変換します。標準ではAES-128、AES-192、AES-256の3つのバージョンが定められていて、数字は鍵の長さをビットで表しています。

AESはあらゆるところで使われていて、iPhoneも例外ではありません。パスコードを設定するとデータ保護がオンになり、iPhoneのデータが256ビットのAESで暗号化されます。

256ビットで十分な理由

256ビットの鍵が取りうる値は2²⁵⁶通りです。すべてを試すのは、コンピュータが速くなれば済む話ではなく、実際にできることの範囲をはるかに超えています。だからこそ、しっかり作られたシステムへの現実の攻撃は、暗号を正面から破るのではなく迂回します。狙われるのは鍵、鍵を解除するパスワード、あるいは復号されているあいだのデータです。

GCMが加えるもの

暗号だけでは、データを隠せても、誰かが書き換えたかどうかはわかりません。NISTがSP 800-38Dで規定したGCM(Galois/Counter Mode)は認証付き暗号です。暗号化したデータと一緒にタグを生成し、データかタグが改ざんされていれば、壊れたり操作されたりした内容を返す代わりに、復号が失敗します。

GCMには厳格なルールが1つあります。暗号化のたびに使う初期値(ナンスまたはIVと呼ばれます)を、同じ鍵で決して繰り返してはいけません。慎重な実装では、毎回新しい値を生成します。

本当の問題は鍵の管理

「AES-256」からわかるのは、錠が頑丈だということです。鍵がどこに保管されているかについては何も語りません。アプリについてずっと多くを教えてくれるのは、次の問いです。

  • 誰が鍵を持っているか。会社がメールであなたのアクセスをリセットできるなら、その会社にも、その会社に侵入した人にも、あなたのデータに届く道があります。
  • どこに保管されているか。データのすぐ隣に保存された鍵や、短いPINから作られた鍵は、そこが弱点になります。
  • 何で解除するか。デバイスのセキュリティハードウェアと、あなただけが知る秘密で守られた鍵は、攻撃がはるかに難しくなります。
  • 秘密を忘れたらどうなるか。誠実な答えには、サポートへの問い合わせではなく、あなたが保管する復旧キーが登場します。

各ファイル

専用のAES-256-GCM鍵

金庫の鍵

各ファイルの鍵を包む

Secure Enclave

あなたのパターンで開く

ファイルごとに専用の鍵があります。金庫の鍵がそれらすべてを包み、その鍵を解けるのはSecure Enclaveの中、あなたのパターンだけです。

Latentでの使い方

Latentは、ファイルを1つずつ固有のAES-256-GCM鍵で暗号化します。それらの鍵は金庫の鍵で包まれ、金庫の鍵はiPhoneのSecure Enclaveにある鍵で保護されて、あなたのパターンかパスワードで解除されます。金庫がロックされると、鍵はメモリから消去されます。ほかの誰もコピーを持っていません。予備は9語の復旧フレーズだけで、それを持っているのはあなただけです。

出典

  1. NIST — FIPS 197, Advanced Encryption Standard (AES)
  2. NIST — SP 800-38D, Galois/Counter Mode (GCM) and GMAC
  3. Apple — Set a passcode on iPhone

あなたのものは、あなただけのものに。

試すのも自由、離れるのも自由。