Skip to main content
Tweeted twitter.com/#!/StackCrypto/status/364171744367890432
Added link to the paper. Tweaked the wording. Added relevant tag.
Source Link
B-Con
  • 6.2k
  • 1
  • 31
  • 45

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

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 whitepaper when a file is writen 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 do they mean by block-offset how should one interpret that?


Does it work like this:

encrypt(LFSR(block-offset),SHA-1(perfile-key)) ---> result stored inside the files meta data

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 the iOS-Security whitepaper (excerpt from pg. 8) when a file is written 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.

  • What is the exact input of the LFSR?

  • What exactly does "block offset" mean?

Does it work like this:

encrypt(LFSR(block-offset),SHA-1(perfile-key)) ---> result stored inside the files meta data

Post Migrated Here from security.stackexchange.com (revisions)
Source Link
enigma
  • 131
  • 2

iOS Data Protection: What is the Input of the LFSR?

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 whitepaper when a file is writen 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 do they mean by block-offset how should one interpret that?


Does it work like this:

encrypt(LFSR(block-offset),SHA-1(perfile-key)) ---> result stored inside the files meta data