Every time a file on the data partition is created, Data Protection creates a new 256-bit key (the “per-file” key) and gives it to the hardware AES engine, which uses the key to encrypt the file as it is written to flash memory using AES CBC mode. The initialization vector (IV) is the output of a linear feedback shift register (LFSR) calculated with the block offset into the file, encrypted with the SHA-1 hash of the per-file key.
Regarding to the iOS-Security whitepaperthe iOS-Security whitepaper (excerpt from pg. 8) when a file is writenwritten to the data partition a AES-Key is created which is used by the AES engine to encrypt the file using the AES-CBC mode. AES-CBC does need an initialization vector which is the output of a linear feedback shift register.
I would like to know what the exact input of the LFSR is?
What is the exact input of the LFSR?
What exactly does "block offset" mean?
What do they mean by block-offset how should one interpret that?Does it work like this:
Does it work like this:
encrypt(LFSR(block-offset),SHA-1(perfile-key)) ---> result stored inside the files meta data