Recovering the master key from RAM to break Android's file-based encryption (2021)
sciencedirect.com
sciencedirect.com
(And if anything else on your motherboard dies, Apple's official answer is "you're f*cked", since they refuse to do board-level repair.)
For the threat model of most users, where hardware-based targeted attacks aren't a big concern, this is a bad tradeoff.
I've heard of zero T2s dying. I've hard of android data recovered (TFA)
Cloud is a great solution for most people. But not really an option for "where do I put my decades-stale collection of old home directories" or "mbox files from email in the late 90's".
> hardware-based targeted attacks
You mean physical-access attacks, correct? Is it really just these kinds of attacks that a T2 chip protects against?
AFAIK if malware has super user privilege, it can access the RAM of other processes, and therefore it can access the encryption keys stored in RAM by other processes.
If those processes could have used an encryption API that does the encryption on the chip, and therefore not need to store encryption keys in RAM, they'd be protected against this kind of attack, a kind of attack that is not hardware-based.
Given how fast networks and storage and processors are these days - if something takes more than an hour or two of diagnostic time and rarely happens, you just nuke the machine and re-image.
From my understanding the BFU state is much harder given that the keys are not in memory but in the TEE. Although there has been exploits for that in the past, not sure if they can extract encryption keys.
It's also interesting to consider what's possible with arbitrary code execution vulnerabilities in early boot stages - would they be able to influence the ARM TZ?
JFC that one would have been obvious to think ahead of: what to do if the key derivation becomes compromised?
In an ideal system, each file's metadata should not just specify which master key is to be used, but also which version/KDF scheme was used - that way, newly created files could benefit from stronger encryption schemes and existing files be transparently re-encrypted in the background (or in the foreground, which may be easier to implement technically, but people won't want to wait hours for their upgrade to finish).
Passwords have been doing this for decades, every password in /etc/shadow carries a prefix indicating the hash scheme and settings (salt, rounds), and if the system default changes (like Arch did last year [1]), users get their password updated at login. In user space, for example PHP has a function to check if a re-hash is needed [2].
[1] https://archlinux.org/news/changes-to-default-password-hashi...
[2] https://www.php.net/manual/en/function.password-needs-rehash...