Skip to main content

Data Protection

Let's delve into the technical details of Data Protection in iOS, which plays a crucial role in securing user data:

  1. Overview:

    • Data Protection is a built-in feature of iOS that provides strong encryption for user data.

    • When enabled, it ensures that sensitive information stored on an iOS device remains confidential and secure.

  2. Encryption Mechanism:

    • Symmetric Encryption: iOS uses symmetric encryption algorithms (e.g., AES) to protect data.

    • Each file or piece of data is encrypted with a unique per-file encryption key.

    • The device's hardware and firmware handle the actual encryption process.

  3. Key Hierarchy:

    • Class Keys: Each file has its own class key.

    • File System Key: Protects the class keys.

    • Hardware Key: Derived from the user's passcode.

    • Efficient Key Derivation: iOS uses a slow hash function to derive keys from the user's passcode.

  4. Data Protection Classes:

    • iOS defines several data protection classes based on the level of security required:

      • Complete Protection: Data is accessible only when the device is unlocked.

      • Protected Unless Open: Data remains encrypted when the device is locked.

      • Protected Until First User Authentication: Data is accessible after the first unlock.

      • No Protection: No encryption.

  5. Keychain Services:

    • iOS apps can use the Keychain Services API to securely store sensitive data (e.g., passwords, tokens).

    • The keychain data is automatically protected using the device's data protection mechanisms.

  6. File System Encryption:

    • All files stored on the iOS file system are encrypted.

    • Even if an attacker gains physical access to the device, they cannot access the raw data without the proper keys.

  7. App-Specific Encryption:

    • Apps can enable data protection for specific files or directories.

    • By default, app-specific files are encrypted using the Complete Protection class.

  8. iCloud Data Protection:

    • Advanced Data Protection for iCloud offers end-to-end encryption for iCloud data.

    • Trusted devices retain sole access to encryption keys, protecting data even from Apple.

  9. Best Practices:

    • Always use the Data Protection entitlement in your app's entitlements file.

    • Encrypt sensitive data using unique keys.

    • Leverage the Keychain Services for secure storage.

    • Understand and choose the appropriate data protection class for your app.

Data Protection in iOS ensures that user data remains confidential, even in the face of potential threats or unauthorized access.

When a new file is created on devices supporting Data Protection, it's assigned a class by the app that creates it. Each class uses different policies to determine when the data is accessible. The basic classes and policies are described in the following table:

ClassProtection type
Class A: Complete ProtectionNSFileProtectionComplete
Class B: Protected Unless OpenNSFileProtectionCompleteUnlessOpen
Class C: Protected Until First User AuthenticationNSFileProtectionCompleteUntilFirstUserAuthentication
Class D: No ProtectionNSFileProtectionNone