4 ms·
I guess you could build a simple "stub" TPM using an arduino nano that just speaks enough of the TPM protocol to make Windows happy. It would have to store some
by dark-star 4y ago
I guess you could build a simple "stub" TPM using an arduino nano that just speaks enough of the TPM protocol to make Windows happy. It would have to store some bits of binary data somewhere, and maybe have to implement some basic cryptogrphic routines, but I guess it could be possible?
- bem94 4y agoIt's possible, but it is _a lot_ of work! 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.
- joerichey 4y agoOne reasonable way to do this could involve running the reference TPM2 simulator [0] on the Arduino. It's just a C library that already implements all the cryptographic routines and TPM2 commands. In fact, this is basically how TPM vendors implement their chips. They just generally have: - 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. [0] https://github.com/microsoft/ms-tpm-20-ref https://github.com/microsoft/ms-tpm-20-ref
- 2OEH8eoCRo0 4y agoI'd use this over a real TPM so that I have more control over my PC.
- daneel_w 4y ago> "It's possible, but it is _a lot_ of work!" 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.
- Nextgrid 4y agoSee my other comment: https://news.ycombinator.com/item?id=31293577 https://news.ycombinator.com/item?id=31293577 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.
- nonrandomstring 4y agoCreating an adversarial relationship between the user and vendor is a debasement of security principles. Now, Windows is the threat model and that's why "mandating" this was the wrong choice altogether. Microsoft could even have sold this as a feature. The fact that they chose instead to push it on users tells you everything you need to know about the future of users' relationship with their products. The perimeter of my security ends where Microsoft begins.
- GekkePrutser 4y agoIt could be interesting in terms of debugging and reverse engineering. Seeing what secrets apps are storing. Normally you don't have full view on what's in your TPM as an end user. Of course it'll be hard to make it really secure but production use isn't the only place this could come in handy.
- deleted 4y ago[deleted]
- GTP 4y agoYeah, but the point of having a TPM isn't just to have hardware capable of storing keys and doing some cryptography (so you can e.g. sign a challenge without exposing the private key) but also an hardware that makes extracting the keys from it hard. With an Arduino you can get the first part, but I don't think you can also make it tamper resistant or tamper evident. But still a device that could be interesting to play with, just be aware of the reduced grade of security that you get
- willis936 4y agoIt isn't blanket reduced security. Rolling your own greatly reduces the odds of a supply chain attack on a simple, unauditable, single-point-of-failure piece of security hardware.
- Nextgrid 4y agoIt really depends on what your threat model is. 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.
- GTP 4y agoI don't agree about malware protection: a TPM woukd protect you from malware in the sense that it would prevent a malware from getting your keys, but currently the most widespread form of malware are ransomware for which a TPM can't do anything. Also attackers are rarely interested in getting your cryptographic keys, usually they are interested in getting your login details for some service, for which they use phishing
- jnwatson 4y agoStill, an outside observer would be able to tell you faked it, because the endorsement key certificate would be signed by you and not a “real” manufacturer. I wonder if Windows checks it though.
- hulitu 4y agoAn outside observer should not have access to your TPM.
- ziml77 4y agoWhy would you do that when it's easy to disable the install-time check? 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)
- temac 4y agoI'm not sure win11 will accept to update if you do that. Or it is just when it detects an "unsupported" processor?
- PawBer 4y agoWindows 11 can update without peoblems with unsupported hardware. The only thing that's different is a warning in the settings. One Microsoft employee even used a 7th gen Intel CPU during an official screencast.
- jasomill 4y agoWindows 11 currently has no trouble running or updating on my Sandy Bridge MacBook Pro[1]. Not only does the machine have no TPM whatsoever, it's booting Windows 11 in BIOS mode because its firmware doesn't properly initialize the GPU when booting Windows in UEFI mode. 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).
- spoiler 4y agoHi! I'm curious what made you go through all this trouble just for Windows 11 and was it worth it in the end? Edit: I ask this question, but then remember my own `do-dist-upgrade` hellscapes... They were never worth that in the end lo