Skip to content

Commit bd72a41

Browse files
committed
More details of FactoryTrust
1 parent 8feeee8 commit bd72a41

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

_data/terms.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,10 @@ term_list:
793793
- title: Time Zone
794794
tz0:
795795
- title: TrustZone for SEP
796+
SCIP:
797+
- title: System Coprocessor Integrity Protection
798+
KIP:
799+
- title: Kernel Integrity Protection
796800
tz1:
797801
- title: TrustZone for AP (Trusted Boot Monitor)
798802
UART:

wip/Factory_Threat_Model.md

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,27 +56,64 @@ By fixing hashes to a sequence of zeros, once a APTicket is issued it may be re-
5656
Zero keys can be observed both the for xART root UUID (00000000-0000-0000-0000-000000000000) as well
5757
as the initial values for BNCH domain nonces.
5858

59-
## HyperVisor `hypr`, Application Partitions `appv`, Root Domain (`hyp0`) and `0Cfg`
59+
## HyperVisor `hypr`, Application Partitions `appv`, Root Domain (`hyp0`) and `hyp0`'s SysCfg `0Cfg`
6060

6161
For Apple systems historically the `hypr` role is filled by the SPTM, but with newer Apple Silicon
6262
this have moved from EL2 to Guarded Execution Roles.
6363

64+
In "self hosted factory trust" the `hyp0` partition is used to act as the restoring station, and
65+
a `hypX` partition is the restored station. This manifests in the FDR cached data as unlabeled
66+
parts (those without any prefix such as `fCfg`, `dCfg`, etc), those of the `hyp0` host station
67+
(`mansta`) and those of the restored device station `mandev`. This allows the `fSys` or Firmware
68+
SysCfg and `0Cfg` or `hyp0` domain 0 SysCfg to be stored at the root NOR part, while EAN can be
69+
leveraged for the per OS `fCfg`
70+
6471
### `hyp0` XNU and the TXM
6572

66-
EL2 execution, as well as the initial
73+
EL2 execution begins for consumer builds with the setup of the PPM (Largely replaced by Trusted
74+
Execution Monitor and Exclaves). For classical setup, the hypervisor component is loaded, followed
75+
by `hyp0` (analogous to XEN `dom0`).
6776

6877
## Re-entrant iBoot and SEP
6978

79+
To support differing versions of the SEPOS and related services the device root SEPROM will load
80+
the system level `sepf`,`sepi`
81+
7082
## iBoot (`ibot`), iBoot Data (`ibdt`), secondary iBoot (`)
7183

7284
## Usage of Local Policy and Local Trust Keys
7385

7486
## FDR, Managed Station and Managed Device
7587

88+
FDR or "SysCfg in the Cloud" allows blobs of data to be retrieved by the restoring system through
89+
a proxy mechanism implemented by the restore station. This permits the restoring device to
90+
request and retrieve the 4CC binary objects for placement onto persistent memory. There are multiple
91+
trust primitives in the FDR system:
92+
93+
* The `trst` or at rest signing certificate
94+
* The `rssl` or TLS trusted root certificate for communications with the FDR service
95+
* The `rvok` or revoked Certificate / Key list
96+
* The `trpk` or trusted public keys (additional to the one in the `trst` certificate)
97+
normal restore process appears to contain the `trst`, `rssl`, an empty `rvok` and no `trtk`.
98+
Factory trusted installs seem to contain a `trpk` that is a sequence of public keys that may
99+
additionally be used.
100+
76101
## Communication with `hop0` via RemoteXPC
77102

103+
The HyperVisor Partitions are connected using synthetic USB NCM/CDC devices, usually annotated as
104+
apniX (Apple Private NCM Interface). This provides a transport mechanism between the domains over
105+
the virtualized USB and IPv6 Fabric similar in nature to the system utilized by the T1/T2 chips.
106+
For this reason the `/usr/libexec/remotectl` command line app can be used to interrogate the remote
107+
system's `remoted` service.
108+
78109
## Dual NVMe Endpoints, and Emulated Apple NOR
79110

111+
The Apple NAND Storage 2/3 components are capable of multiple endpoints, where each endpoint
112+
is a configuration of mappings of LBAs (Logical Block Addresses) to Namespaces, with a given type.
113+
On systems where a hypervisor is used, typically two such endpoints can be observed, the "true" or
114+
"root" endpoint, as well as a shadow mapping used for the guest operating system thereby allowing
115+
a different set of namespaces and their LBAs
116+
80117
## Custom Sequencing via the PMGR
81118

82119
## The Trust Object, and Embedded Trust Keys `trpk`

0 commit comments

Comments
 (0)