You'd basically be building a cryptographic module (industry standard term, with a lot of specs and requirements to go a long with it), which is no small undertaking in terms of correctness, never mind security. The "basic" cryptographic routines aren't easy either. You're talking ECC and some other symmetric primitives. Secure & efficient ECC implementation is an entire discipline on it's own.
I have reservations about the phrase "don't roll your own cryptography" for lots of reasons, but this would be taking rolling your own to the extreme. With all the associated risks.
Absolutely possible and a very cool project, but yeah, it's hard to understate the complexity / requirements of a full cryptographic module on top of the cryptographic primitives it needs to support. I actually really like that this person took an existing commercial TPM and could integrate it into their own PCB this way, I think that's a good compromise between building your own TPM with an Arduino, and having to pay lots of money for an out-of-the-box TPM.
- A lot more hardening against physical attacks
- Cryptographic libraries optimized for their low-resource hardware
- (sometimes) a vendor certificate for a primary TPM key, aka an "EK cert"
Certainly a TPM running on an Arduino wouldn't have the physical hardware properties of a "real" TPM. But you could probably get it into a state with similar software properties.It really depends on what your threat model is and whether you intend to use the TPM to begin with. If not, you really don't care about the security of any cryptography as long as the output is valid enough to satisfy whatever application is using the TPM.
Of course it'll be hard to make it really secure but production use isn't the only place this could come in handy.
How do you know it's _a lot_ of work? Correct me if I'm wrong, since you are implying you are familiar with this, but doesn't Windows 11 just want to verify that the device is available, likely with an echo facsimile along the lines of a version or self-test response? I don't believe any version of Windows requires full TPM functionality.
All you have to do is hit Shift-F10 when the installer tells you the machine isn't compatible, launch regedit, create the key HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig. And then add a DWORD value called BypassTPMCheck and set it to 1 (BypassSecureBootCheck is also an available option)
To install Windows 11 for BIOS boot, I replaced the install.wim image on Windows 10 BIOS-compatible boot media with the analogous image from a Windows 11 ISO.
I also used Thunderbolt target disk mode to run the first installation stage under VMware Fusion on another Mac because the MacBook Pro's firmware wouldn't boot Windows USB installation media in BIOS mode, but this would presumably not be required if I'd had recordable DVD media on hand at the time.
Note that I say "currently" because there's obviously no guarantee that Microsoft won't break Windows on older hardware in an update, so I'm not relying on this install for anything critical.
[1] MacBook Pro (17-inch, Early 2011) a.k.a. MacBookPro8,3; "second-generation" Intel Core i7 CPU (viz., i7-2720QM).
Edit: I ask this question, but then remember my own `do-dist-upgrade` hellscapes... They were never worth that in the end lo
For most people, the threat model is primarily malware attacks, against which even a homebrew TPM will protect. Ideally you'd want something that literally can't be reprogrammed from the host, but even then, since it's a custom-made device an attacker would need to manually reverse-engineer it to attack it so you'd still be safe against anything but a targeted attack.
Of course, this assumes you even care about using the TPM in the first place. If you just want to satisfy Windows' requirement then security is not a concern at all.
I wonder if Windows checks it though.