My primary goal is to protect Activesync-based communication from being copied or stolen from an offline device.

In that context how effective is iPhone 3GS and 4 encryption?


4 Answers 4


I've been looking at this recently and the answer appears to be that the protection may not be great.

First thing is that iOS 4.x devices may not have Apples "data protection" feature enabled on them by default. Data protection is intended to give extra protection to e-mail data and attachments. if the device has been upgraded from iOS 3.x then data protection is not enabled until the device gets a full restore, the details are in this Apple Tech Doc.

The base apple encryption on iOS 4.x devices can be bypassed relatively easily. Booting the device into DFU mode and loading a custom version of the OS (via the limera1n exploit), you can get an SSH connection over the iDevice cable, then mounting the user data partition, give you access to most information stored there in the clear. At the moment I've not found a doc. explaining exactly how apples hardware encryption works, but I guess in some way the mount command must provide the key.

  • 2
    as I wasn't so familiar with DFU, here is a link to clarify that osxdaily.com/2010/06/24/… Mar 13, 2011 at 15:31
  • Protection is pretty good - probably as good as it can be given a user remembered secret - if data protection is on and the app is written to use the protection features. Apr 26, 2011 at 5:49
  • I am trying to follow the exact steps you mentioned. So far, I have jailbreaked my iOphone with greenpois0n. The SSH client on windows is WinSCP and on the Iphone i tried BigBossPrefs. Unfortunately the iPhone BigBrossPrefs fails to start! so i am unable to connect to the iOS. My intention is to simulate that my mobile is lost (I have added PIN on purpose) and try to see what data the attacker can have access to. Any help on this would be great. May 15, 2011 at 20:35
  • I wouldn;t mind having my question as a new question if you want. May 15, 2011 at 20:36

If you write the application, then you have various options for protecting the files stored on the device. I gave a presentation on this at Voices That Matter this year, but to summarise:

  • NSFileProtection API lets you use the same device key as the filesystem encryption, but ensure that the files are protected when the device is locked by additionally deriving a second key from the user's passcode;
  • CommonCrypto and OpenSSL are a bit harder to use, but still fairly straightforward, you control the encryption and can use the keychain for key management;
  • writing your own encryption implementation would be a bad choice.
  • 1
    when is writing your own encryption implementation ever a good choice?
    – Casey
    Dec 11, 2010 at 14:04
  • 1
    @casey the only real answer I can come up with is if there's no implementation already for your environment. These days that probably isn't a common occurrence.
    – user185
    Dec 11, 2010 at 20:06

The key is available from the device, so an unlocked device (or guessable/brute-forceable) will elicit the key. The key is also on any synced iTunes apps. By sending remote kill (if possible, which should never be relied upon since RF blocking handkerchiefs/bags are well known tools used by adversaries), this can delete the key, disabling recovery of the key and filesystem, and providing "fast wipe" functionality.

It is otherwise extremely awesome, given these very realistic limitations (i.e. no TPM). BlackBerry can't do this sort of thing without a BES (although BES Express is available for free if you have Exchange or SBS/etc server). Android relies on third-party, which is unreliable and insecure at best.

There are two books that cover this, Enterprise Mac Administrator's Guide and the iPhone Forensics book. The former mentions http://www.cellebrite.com for Security ID recovery.

  • What (if anything) above changes with a jailbroken device? Nov 20, 2010 at 20:24
  • Don't jailbreak your device if you are serious about security. Other than that -- I have no idea
    – atdre
    Nov 20, 2010 at 20:57
  • @atdre: it's not necessarily @MakerOfThings7 that jailbreaks the device. It might be the app's user. Or the attacker.
    – user185
    Nov 20, 2010 at 21:35
  • 1
    @atdre - the master key is derived from the users password and so it is not stored on the device when the device is locked Apr 26, 2011 at 21:20
  • 1
    @frankodwyer: Just like I explained in my original answer, the device has to be unlocked to get the master key -- or access to the iTunes the iPhone has synced with. If the code to unlock the phone is brute-forced, then it is also game-over-time
    – atdre
    Apr 27, 2011 at 16:22

In consensus with Rory McCune's answer, that you can bypass encryption I want to add what goal the encryption in iOS devices has:

It is mainly for data loss prevention. Everything is stored encrypted. This means, that a remote lock-mechanism can force the device to forget the encryption/decryption key and shutdown. This allows you to make an arbitrary amount of data useless, without having to remove or overwrite every byte on disk.

  • No longer true with the advent of the data protection OS feature and associated APIs Apr 26, 2011 at 5:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .