The Google Pixels claim to fame is its TPM chip called Titan M, which - besides a couple of iPhones - is considered the only one which can reliably throttle brute force attempts, allowing users to securely use relatively easy PINs. For some time now I've been wondering how is this possible, and I'm here to call bull****.
This topic has been driving me crazy for some time, so I'm writing this in an overconfident manner not because I found the exact answer, but because I hope to provoke someone to proof me wrong.
Titan-M does absolutely anything special about throttling. Because Titan-M has exact throttling progression defined with exact seconds, then to do this it needs to count passage of time, and to do that it needs power. If Titan-M doesn't have its own battery (which should be able to run for 10+ years) and clock, then it's relying on external signal to count the time. So all you need to do, is to move it over to a special board and speed up time after every failed PIN attempt. It might be even as simple as changing the time value on the board, if Titan-M doesn't count it by itself using signal frequency.
TLDR: I'm here to claim, the PIN throttling is based on either:
- external time value
- is counted based on experienced frequency.
Both of which can be easily manipulated.
BTW. It gets worse. While researching this topic, I've found a research paper about Titan-M [1]. It claims Titan-M firmware can be updated, and this process is secured by user password, so just PIN.
Why then we didn't hear about bypassing PIN on GrapheneOS? I think it's because GrapheneOS is such a small niche, it will just happen when required (or even already happened), but there's just no reason for perpetrators to talk about it. For standard Pixels it's not necessary, Google can just bypass anything over Google Play Services on court order.
So what to do? Consider your threat model. GrapheneOS was always encouraging strong password as the safest solution. I'm just here to claim, bypassing PIN throttling is most likely a lot easier to defeat than it is commonly believed.
Appendix: can it be done better? Yes. Yubikeys don't allow firmware updates at all. They don't throttle PIN attempts, then count them and clear the PK when the limit is reached. This has a side effect: it's easy for a bad actor to reset the device. Someone could just take the phone, reach the limit to wipe it - pretty annoying.
[1] https://i.blackhat.com/EU-21/Wednesday/EU-21-Rossi-Bellom-2021_A_Titan_M_Odyssey-wp.pdf