Hallo Kollegen.
Ich fand es interessant, Informationen über die interne Struktur der Apple-Technologie mit der Community zu teilen, da es nur sehr wenige Artikel zu diesem Thema gibt. Ich habe beschlossen, mit dem iPhone zu beginnen. Daher schlage ich vor, dass Sie zusammen mit mir versuchen, die Arbeit dieses mysteriösen Geräts zu verstehen.
Ich werde versuchen, die neuesten Modelle ins Visier zu nehmen. Ich würde mich freuen, wenn Ihre Kommentare auf Fehler hinweisen und uns allen helfen, besser zu verstehen, wie die Geräte, die uns umgeben, funktionieren.
Einführung
Ich weiß nicht, ob dies jemanden überraschen wird oder nicht, aber das Starten eines iPhone unterscheidet sich nicht wesentlich vom Starten eines IBM- PC - kompatiblen Computers in Form einer Systemeinheit unter einem Tisch, über den bereits viel gesprochen hat wurde geschrieben. Dies ist wahrscheinlich der Grund, warum es zu diesem Thema so wenige Artikel gibt, die sich auf mobile Geräte beziehen.
Wenn Sie den Prozess des Starts des iPhone als Ganzes betrachten, handelt es sich um eine Kette vertrauensvoller Übergänge von einer Phase des Downloads zu einer anderen, die als "Vertrauenskette" bezeichnet wird . Im Allgemeinen sind drei unabhängige Programme an dem Prozess beteiligt: Boot-ROM , iBoot und der XNU-Kernel (in der Reihenfolge der Ausführung). Die Übertragung der Kontrolle von einem zum anderen erfolgt, nachdem die Identität der Person, auf die die Kontrolle übertragen werden soll, überprüft wurde. Jeder von ihnen hat die kryptografische Signatur von Apple . Es stellt sich eine vernünftige Frage: Wie wird die Echtheit des ersten Schritts überprüft? Antwort: auf keinen Fall .
Der allererste erhält die Kontrolle über das Boot-ROM. Es ist eine unveränderliche Komponente des Systems, es wird werkseitig genäht und ändert sich nicht mehr. Es kann nicht aktualisiert werden (im Gegensatz zu BIOS und UEFI). Daher macht es keinen Sinn, die Echtheit zu überprüfen. Daher hat es den entsprechenden Status: "Hardware-Root of Trust" . Der öffentliche Schlüssel der Apple Root Certificate Authority (CA) ist in das Boot-ROM eingebettet, mit dem die Authentizität des iBoot überprüft wird. IBoot überprüft wiederum die Authentizität des XNU-Kerns mit seinem Schlüssel. Mit dieser Überprüfungskette können Sie nur vertrauenswürdige Software ausführen.
, Boot ROM. , Jailbreak ( ). Boot ROM . , . 150 . , . Boot ROM iBoot . . (AES, ANC, USB), ( , ), (env, libc, image), ( SoC, MMU, NAND). , . iBoot , , ..
.
|
|
|
|
|
|
1. Boot ROM |
|
|
BIOS, UEFI, coreboot |
SRAM |
2. iBoot |
|
|
GNU GRUB, Windows Bootmgr, efibootmgr |
SDRAM |
3. XNU |
|
|
Linux, NT kernel, GNU Hurd |
SDRAM |
4. iOS |
|
|
Ubuntu, Windows, Android |
SDRAM |
. ( , , , ). (PMIC — Power Management Integrated Circuit). PMIC , , Lightning, ( ). . . , .
PMIC Power-On. : ( ). — .
, . , - . , . , , . , , . PMIC Side-Button , , , : ( ). , PMIC PMIC. D- . CLR . , RC-, .
, CTLx -. . CLR , CLK , CTLx , PMIC .
SoC CPU
. , , , , . - . (System on a Crystal — SoC) Apple — TSMC (Taiwan Semiconductor Manufacturing Corporation). Apple , , . , - . , Apple.
SoC . , , , , , -, . . SoC . . (Power-on reset / PoR generator). : , . PoR , .
, , RC- . ( ), PoR , .
. , . PoR - ( ). (Program Counter/PC register) . (Reset vector). , 0×100000000
. ( , ). .
, , . , , (primary core), . .
(Read only memory — ROM). SoC. ( ) ( ). . , Boot ROM. .
Boot ROM
, Boot ROM — , SoC. -. Apple. C , - . Boot ROM, , -, — _start
. , , arm64. :
(L2 cache) ( 2 MiB).
, . , .
main
( C) LR.ret
main
.
. , , .
.
,
main
.
, , C.
main
CPU.
, , Exception Levels (EL): EL0, EL1, EL2, EL3. . — . ( ). . , , .
CPU .
(Secure Configuration Register - SCR): (FIQ IRQ).
.
(System Control Register: SCTLR): , (Memory Management Unit - MMU, CPU), , ( Execute Never / XN — NX- x86 ), .
.
main
, .
:
.
(DVFS - Dynamic voltage and frequency scaling).
, BootROM.
BootROM.
(PLL - Phase Lock loop).
(SEP - Secure Enclave processor).
(sepOS), . .
( -). (Static Random Access Memory — SRAM). , . (Dynamic Random Access Memory — DRAM). , SRAM , DRAM . . , . , . SRAM ( , ), DRAM ( , ). SoC GPIO (General Purpose Input/Output) . , , , DFU (Device Firmware Upgrade mode — ). , .
/ (BIOS), Boot ROM : ( ) (heap). . , Boot ROM.
: , SoC. iPhone :
GPIO
, . DFU . , , DFU , , .
, . DFU , USB, - ( NAND ).
if (dfu_enabled)
boot_fallback_step = -1;
while (1) {
if (!get_boot_device(&device, &options))
break;
process_boot(device, options);
if (boot_fallback_step < 0)
continue;
boot_fallback_step++;
}
reset();
, ( ). , USB. , «».
Apple — IMG4 ( ). DER ASN.1.
sequence [
0: string "IMG4"
1: payload - IMG4 Payload, IM4P
2: [0] (constructed) [
manifest - IMG4 Manifest, IM4M
]
]
sequence [
0: string "IM4P"
1: string type - ibot, rdsk, sepi, ...
2: string description - 'iBoot-6723.102.4'
3: octetstring - the encrypted/raw data
4: octetstring - containing DER encoded KBAG values (optional)
sequence [
sequence [
0: int: 01
1: octetstring: iv
2: octetstring: key
]
sequence [
0: int: 02
1: octetstring: iv
2: octetstring: key
]
]
]
(UtilDM — Utility Device Manager), ANC (Abstract NAND Chip) . NAND , iBoot. IMG4.
, . , . . — (environment) . , , , Boot ROM (Apple Root CA public key).
, Boot ROM. -, iBoot. , , - , , , ..
iBoot , .
. iPhone — iBoot.
.
:
Apple: Boot process for iOS and iPad devices
Apple: Hardware security overview
Design & Reuse: Method for Booting ARM Based Multi-Core SoCs
Maxim integrated: Power-on reset and related supervisory functions
The iPhone wiki
ARM: Documentation
Jonathan Levin: MacOS and *OS internals
Wikipedia
: iBoot address space
Harry Moulton: Inside XNU Series
Ilhan Raja: checkra1n
Texas Instruments: Push-Button Circuit
iFixit: iPhone 12 and 12 Pro Teardown
SecureROM iBoot, 2018