Appleプラットフォームのセキュリティ
データ保護の概要
iPhone、iPad、Apple Watch、Apple TV、Appleシリコン搭載MacなどのApple SoCを搭載したデバイスでは、デバイスのフラッシュストレージに保存されたデータを保護するために、「データ保護」と呼ばれる技術が使用されます。データ保護により、デバイスで電話の着信などの一般的なイベントに応答すると同時に、ユーザデータを高いレベルで暗号化することが可能になっています。一部のシステムアプリ(「メッセージ」、「メール」、「カレンダー」、「連絡先」、「写真」など)とヘルスケアデータの値は、デフォルトでデータ保護を使用します。他社製アプリにもこの保護は自動で適用されます。
実装
データ保護は、鍵の階層を構築して管理することで実装され、Appleデバイスに内蔵されたハードウェア暗号化技術をベースにしています。データ保護は、各ファイルをクラスに割り当てることでファイルごとに制御されます。ファイルにアクセスできるかどうかは、そのクラスキーがロック解除されているかどうかによって決定されます。また、APFS(Apple File System)によって、鍵をエクステントごとにさらに分割できる(ファイルの一部に別の鍵を持たせることができる)ようになっています。
データボリューム上にファイルが作成されるたびに、データ保護によって新しい256ビット鍵(Per Fileキー)が作成され、ハードウェアAESエンジンに渡されます。ハードウェアAESエンジンは、ファイルがフラッシュストレージに書き込まれるときに、その鍵を使用してファイルを暗号化します。A14~A17およびM1~M3を搭載したデバイスでは、暗号化にXTSモードのAES-256が使用され、256ビット鍵(Per Fileキー)が鍵導出関数(NIST Special Publication 800-108)で処理されることにより、256ビットの調整鍵と256ビットの暗号鍵が導出されます。A9~A13およびS5~S9を搭載したデバイスでは、暗号化にXTSモードのAES-128が使用され、256ビットのPer Fileキーが128ビットの調整鍵と128ビットの暗号鍵に分割されています。
Appleシリコン搭載Macでは、データ保護はデフォルトでクラスCになっていますが(データ保護クラスを参照してください)、Per ExtentキーやPer Fileキーではなくボリュームキーが使用されます。これにより事実上、FileVaultでユーザデータを保護する場合と同じセキュリティモデルが再現されます。ただし、パスワードを暗号鍵の階層とタングルして完全な保護を受けるには、ユーザがFileVaultを有効にする必要があります。デベロッパは、Per FileまたはPer Extentキーを使用するさらに高レベルの保護クラスを選択することもできます。