But starting with iOS 3.0 and the iPhone 3GS, the full filesystem was encrypted. The key for this encryption is not user-selectable, but depends on a UID which is “burned†into the phone's chips at the factory (Sogeti, pp 4 and 5, also ISG, p 9). The UID is a 256-bit key “fused into the application processor during manufacturing.†Apple further stages that “no software or firmware can read them directly†but can only see the results of encryption using those keys.
The UID key is used to create a key called “key0x89b.†Key0x89b is used in encrypting the device's flash disk. Because this key is unique to the device, and cannot be extracted from the device, it is impossible to remove the flash memory from one iPhone and transfer it to another, or to read it offline. (And when I say “Impossible,†what I really mean is “Really damned hard because you'd have to brute force a 256-bit AES key.â€)