iPhoneのSecure Enclaveとは?
iPhoneの中にある小さな別のコンピュータ。その役目は、鍵を守り、決して外に渡さないことです。
要点
Secure Enclaveは、iPhone 5s以降のiPhoneのチップに組み込まれた、メインプロセッサから隔離された専用のセキュリティサブシステムです。Face IDやTouch IDのデータと、iPhoneの暗号化を支える鍵を守り、メインのOSが侵害されても安全を保つよう設計されています。アプリはSecure Enclaveに鍵を作らせて使うことはできますが、その鍵を読み出すことは決してできません。
押さえておきたいこと
- 独自のプロセッサ、保護されたメモリ、セキュアブートを備えています。
- パスコードの試行回数の上限を守らせる役割も担います。
- アプリは中の鍵を使えますが、取り出すことはできません。
コンピュータの中のコンピュータ
iPhoneのメインプロセッサは、iOSとすべてのアプリを動かしています。Secure Enclaveはそのすべてから切り離されています。独自の小さなOSを動かす専用のプロセッサで、そのメモリは暗号化と認証がされているため、チップのほかの部分は読み取ることも改ざんすることもできません。Appleは、iOSのカーネルが侵害された場合でも機密データを安全に保つよう設計されている、と説明しています。
iPhone 5s以降のすべてのiPhoneに搭載されているほか、iPad、Appleシリコン搭載のMac、Apple WatchなどのApple製デバイスにも搭載されています。
守っているもの
- Face IDとTouch IDのデータ。Secure Enclaveの中で処理・保護され、そのデバイスに結び付けられています。
- データ保護を支える鍵。iPhoneのファイル暗号化を支える鍵の階層には、製造時にチップに焼き込まれた固有の鍵が含まれていて、Appleによると、Appleにもそのサプライヤにも使えません。
- パスコード。ロック解除の試行はSecure Enclaveを通ります。最近のデバイスでは、専用のセキュアストレージ部品が試行回数を数え、上限を超えると保護されたデータを消去します。たとえばiPhoneでは10回です。
使えるけれど見えない鍵
中心にある考え方はシンプルです。Secure Enclaveは独自の暗号化エンジンを持ち、そのハードウェア鍵は内部にとどまり、Secure Enclave自身のソフトウェアからも手が届きません。システムのほかの部分は暗号化や復号を頼んで結果を受け取れますが、鍵そのものを求めることは決してできません。
アプリがSecure Enclaveでできること
アプリは、Secure Enclaveに秘密鍵を作らせ、保管させることができます。アプリがその鍵を平文で持つことはありません。データを渡し、署名や、暗号化に使う鍵交換の結果などの出力を受け取るだけです。鍵を使う前にFace ID、Touch ID、パスコードを必須にすることもできます。Appleの開発者向けドキュメントには、次のような制約が挙げられています。
- 使える鍵は1種類:256ビットの楕円曲線鍵(NIST P-256)で、署名と鍵合意に使われ、それを通じて暗号化にも使われます。
- 読み込みは不可:鍵はSecure Enclaveの中で作らなければなりません。平文の鍵を出し入れする方法はありません。
- 1台のデバイスだけ:鍵を使えるのは、その鍵を作ったSecure Enclaveだけです。
Secure Enclaveがしないこと
Secure Enclaveが守るのは鍵であって、画面に映るものではありません。iPhoneのロックが解除されれば、アプリはふつうにデータを読み、ロック解除されたiPhoneを持つ人には、アプリが表示するものが見えます。また、鍵がデバイスから出ないので、その鍵だけで守られたデータは新しいiPhoneに持っていけません。Secure Enclaveに頼るアプリには、別の安全な復元手段が必要です。
LatentでのSecure Enclaveの使い方
Latentは、各金庫の鍵をSecure Enclaveにある鍵で保護し、それをあなたのパターンかパスワードで解除します。アプリのファイルをiPhoneからコピーしても、手に入るのは暗号化されたデータだけです。その鍵はiPhoneから出られないので、新しいiPhoneで金庫を復元するときは、代わりに9語の復旧フレーズを使います。