11.08.2016 Views

Behind the Scenes with iOS Security

2aCt1ji

2aCt1ji

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

7) keybagd loads system keybag (class D key available)<br />

Userspace<br />

5) launchd mounts user partition<br />

6) launchd starts keybagd<br />

keybagd<br />

gets prot key from effaceable<br />

loads device keybag into SEP<br />

8) decrypts keybag<br />

<strong>with</strong> prot key from<br />

effaceable<br />

systembag.kb<br />

/var/keybags/systembag.kb<br />

encrypted <strong>with</strong> <strong>the</strong> keybag<br />

prot key<br />

contains <strong>the</strong> device keybag<br />

4) decrypt HFS metadata <strong>with</strong> media key<br />

XNU (Kernel)<br />

HFS<br />

AppleKeyStore<br />

SEP endpoint to SKS<br />

Effaceable<br />

media key<br />

keybag prot key<br />

Class D<br />

1) kernel boots (system partition)<br />

3) decrypt class D key, load into keyring<br />

2) AppleKeyStore loads D key (before user partition is mounted)<br />

9) keybag loaded into sks memory, class B public loaded into keyring<br />

class D<br />

SEP UID<br />

SKS<br />

SEP<br />

class D<br />

SKS memory<br />

master key + SEP UID<br />

class A<br />

class B (priv)<br />

class C<br />

SKS keyring<br />

class B (public)<br />

class D<br />

10) class keys cannot be decrypted until we get <strong>the</strong> passcode<br />

11) launchd permits userspace to start loading<br />

boot

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!