4 ms·
You can totally use a multi-stage loader, storing stage 0 and encryption keys on mask ROM. You have to make sure you don’t use a shoddy crypto implementation (o
by brirec 5y ago
You can totally use a multi-stage loader, storing stage 0 and encryption keys on mask ROM. You have to make sure you don’t use a shoddy crypto implementation (or else you end up with something like Wii boothax), but the general concepts aren’t too out there:
1. Load stage zero from maskrom
2. Stage zero loads stage one from flash along with a public signing key from maskrom
3. Stage zero verifies the signature of stage one from vendor. If it’s not valid, halt.
4. Stage zero jumps into stage one.
5. Stage one and later perform the rest of the attestation and booting process.
The hardest part is bootstrapping, but it’s really not THAT hard…
- mindslight 5y agoStoring a public signing key in maskrom is the exact opposite of user empowering hardware! The public key will end up being defined by the manufacturer or the system integrator, leading to the very loss of control we're trying to avoid. The only two solutions I've seen for preserving user freedom while preventing evil maid attacks are either making it so that all system state can be easily read out and verified by external tools, or allowing for a mutable signing key that can only be changed by waiting an appropriate time delay (say on the order of days).