AES-256暗号化をやさしく解説
ほとんどのアプリが「AES-256」とうたっています。大事なのは、鍵がどこにあるかです。
要点
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
あなたのパターンで開く
Latentでの使い方
Latentは、ファイルを1つずつ固有のAES-256-GCM鍵で暗号化します。それらの鍵は金庫の鍵で包まれ、金庫の鍵はiPhoneのSecure Enclaveにある鍵で保護されて、あなたのパターンかパスワードで解除されます。金庫がロックされると、鍵はメモリから消去されます。ほかの誰もコピーを持っていません。予備は9語の復旧フレーズだけで、それを持っているのはあなただけです。