データ保護クラス
データ保護がサポートされるデバイス上に新しいファイルが作成されると、ファイルを作成したアプリによってクラスが割り当てられます。データへのアクセス条件を決定するポリシーはクラスごとに異なります。基本のクラスとポリシーについて、以下のセクションで説明します。Appleシリコン搭載Macコンピュータでは、Class D: No Protectionには対応しません。また、ログインおよびログアウトの前後ではセキュリティ境界が確立されます(iPhoneおよびiPadとは異なり、ロックおよびロック解除の前後では確立されません)。
クラス | 保護タイプ |
---|---|
Class A: Complete Protection | NSFileProtectionComplete |
Class B: Protected Unless Open | NSFileProtectionCompleteUnlessOpen |
Class C: Protected Until First User Authentication 注記: macOSでのFileVault保護特性の再作成にはボリュームキーが使用されます。 | NSFileProtectionCompleteUntilFirstUserAuthentication |
Class D: No Protection 注記: macOSではサポートされていません。 | NSFileProtectionNone |
Complete Protection
NSFileProtectionComplete: クラスキーは、ユーザのパスコードまたはパスワードとデバイスのUIDから生成される鍵によって保護されます。ユーザがデバイスをロックした直後(「パスコードを要求」が「即時」に設定されている場合は10秒)、復号されたクラスキーが破棄され、このクラスのすべてのデータは、ユーザがパスコードを再度入力するかFace IDまたはTouch IDでデバイスをロック解除(ログイン)しない限りアクセスできなくなります。
macOSでは、最後のユーザがログアウトした直後、復号されたクラスキーが破棄され、このクラスのすべてのデータは、ユーザがパスコードを再度入力するかTouch IDでデバイスにログインしない限りアクセスできなくなります。
Protected Unless Open
NSFileProtectionCompleteUnlessOpen: ファイルの中には、デバイスがロックされているときまたはユーザがログインしていないときに書き込みが必要なものもあります。バックグラウンドでダウンロードされるメールの添付ファイルが良い例です。この動作は、非対称楕円曲線暗号方式(Curve25519を使用するECDH)により可能になっています。通常のPer Fileキーは、NIST SP 800-56Aに記述されたOne-Pass Diffie-Hellman Key Agreementを使って保護されます。
この鍵共有に使用する一時公開鍵は、ラップされたPer Fileキーと共に保存されます。鍵導出関数は、NIST SP 800-56Aの5.8.1に記述されたConcatenation Key Derivation Function(Approved Alternative 1)です。AlgorithmIDは省略されています。PartyUInfoとPartyVInfoはそれぞれ一時的な公開鍵と静的な公開鍵です。SHA256がハッシュ関数として使用されます。ファイルが閉じられると、Per Fileキーはすぐにメモリからワイプされます。再度ファイルを開く場合は、Protected Unless Openクラスの秘密鍵とファイルの一時公開鍵を使って共有秘密鍵が再度作成されます。これらはPer Fileキーをアンラップするために使用され、Per Fileキーはファイルの復号に使用されます。
macOSでは、NSFileProtectionCompleteUnlessOpenのプライベート部分は、システム上のいずれかのユーザがログインまたは認証されている限りアクセスできます。
Protected Until First User Authentication
NSFileProtectionCompleteUntilFirstUserAuthentication: このクラスはComplete Protectionと同じように動作します。ただし、復号されたクラスキーは、デバイスのロック時またはユーザのログアウト時にメモリから削除されません。このクラスの保護は、デスクトップ環境でのボリューム全体の暗号化と似ており、デバイスを再起動させる攻撃からデータを保護します。すべての他社製アプリでは、データをほかのデータ保護クラスに割り当てない限り、これがデータのデフォルトクラスになります。
macOSでは、このクラスはボリュームがマウントされている限りアクセスできるボリュームキーを使用し、FileVaultと同様に動作します。
No Protection
NSFileProtectionNone: このクラスキーはUIDでのみ保護され、Effaceable Storageに保存されます。このクラスのファイルの復号に必要な鍵はすべてデバイスに保存されるため、この暗号化から得られるメリットは、迅速なリモートワイプができるということだけです。ファイルにデータ保護クラスが割り当てられていない場合でも、iOSデバイスやiPadOSデバイス上のすべてのデータと同様にファイルは暗号化された形式で保存されます。
macOSではサポートされていません。
注記: ブートされたオペレーティングシステムに対応しないmacOSのボリュームでは、ボリュームがマウントされている限りすべてのデータ保護クラスにアクセスできます。デフォルトのデータ保護クラスはNSFileProtectionCompleteUntilFirstUserAuthenticationです。エクステントごとの鍵機能はRosetta 2とネイティブアプリの両方で使用できます。