Can we build trustable hardware? (2019)
bunniestudios.com
bunniestudios.com
Anyone who remembers old-skool EPROMS will know what I mean.
When doing my VLSI course at UCL in the 1980s we all had to make a "chip". Mine was a 16 bit counter with ripple adder and accumulator.
And we had them fabbed (yes probably unbelievable in this day and age) and had to test them on the lab bench!
BTW I'm not talking about FPGA here. We actually had a class visit to the fab-plant and put on bunny suits to go into a level-3 clean area and look at our UV masks in the projector room.
So, obviously to save money, all the class had a little bit of silicon real-estate and some shared tristate registers that we could access our design through with our own address space.
Now my point is; that when the chips were delivered we were all super excited. We looked at our silicon through a high power bench microscope. Everyone had signed their name (initials) in silicon next to their plot on the die. I remember marvelling at the smallest writing I had ever done in my life!
So, here's part of how you make semi-secure hardware.
Hardware you can actually look at using a simple lab microscope, no need for x-rays etc.
Just sample randomly from the wafers and have those packaged in quartz, while 99% of the rest are normally packaged in opaque resin/ceramic. Make the randomly sampled wafers available for public inspection.
But once circuitry gets more complicated and chips become more integrated you can do just that because the only thing that would need to change is the contents of one single chip.
There was a big scare around small components used to insert new code into target machinery:
https://www.bloomberg.com/news/features/2018-10-04/the-big-h...
But that - if true - mostly hinged on being able to dynamically alter the software loaded into a high level design where the purpose, wiring diagram and target were intimately known to the attackers, all they had to do was engage in camouflaging their part as something innocent, any kind of component level audit would show that this part - which apparently wasn't on the circuit diagram in the first place - performed to its normal specifications.
Initially I was quite skeptical but then a while later this appeared:
https://www.schneier.com/blog/archives/2021/02/chinese-suppl...
And with this file as background:
https://www.eff.org/files/2014/01/06/20131230-appelbaum-nsa_...
That makes the attack sound more plausible. The practical upshot is that if you outsource your fabrication to an unknown third party that you can never be sure what you get unless your skills are orders of magnitude better than theirs. This goes for normal hardware and probably for high value targets and networking components you will have to be extra careful. But I'd be just as careful with for instance large battery packs or things that can be turned on or off remotely. (But that's getting away from component level bad stuff and into the realm of 'normal' attack vectors into embedded hardware.)
Where the hell does that leave us?
https://explorecourses.stanford.edu/search?view=catalog&filt...
That’s just the one I’m familiar with. I know there are others.
Mostly they use MPWs now though so one can’t visit the site. But the price is pretty low. One can get ~100 qty 10 mm^2 packaged parts for maybe $20K
https://grainger.illinois.edu/news/stories/composing-the-fut...
https://graphics.stanford.edu/courses/cs148-10-summer/docs/1...
https://www.computer.org/publications/tech-news/chasing-pixe...
http://bitsavers.trailing-edge.com/pdf/sgi/iris/geometry_eng...
[1] https://tinytapeout.com/ No affiliation, but participated in an earlier run.
If you don't think that wouldn't be done, you've got a bit more living to do.
But I have no proposal of architecture that includes an external verification processor.
Sounds about right to me. And if you can't trust the hardware, it goes without saying that you can't trust the software running on it.
They go on to explain/promote their "Betrusted" verifiable hardware approach, which is good and all, but ultimately I feel suffers from the same fundamental problem (hard to verify the actual hardware you're using without destroying it). Some mitigation strategies are offered, though. I'm glad they aren't over-promising, and are clear that these are steps in the right direction rather than full solutions.
I think most people (myself included) don't have the technical expertise to know if a given verification is valid, either. Such people would need to offload that task to someone else — someone they must trust, yet again.
The notion of trust is so profound and slippery, even without involving computers. It's fascinating to see it play out in a more rigorously-observed fashion through modern technology.
I’m not sure I care if the code that helps me view 3d graphics has been compromised or not.
Depending on my results of this process, the cost of the hardware, and the sensitivity of the applications I could see my increasing the number of items I would need to purchase. I can also see "verification" companies that test a statistically significant sample of devices before reselling them to individuals.
I'm not sure which world was better, the old PC world where rootkits and other similar malware had free reign, or the modern "trusted" world.
Indeed, I would choose the old PC world, though I concede that most users would not. The saddest part of it is that they aren't mutually exclusive and shouldn't have to sacrifice one for the other. You do lose a little bit of "security" by trusting the user (and therefore anyone with physical access), but this is something I think the owner of the device should get to decide. If it's not configurable, we should be very clear about the fact that when you "buy" it you're merely renting with no specified return date.
So welcome to the world of GNU/Linux phones, which currently has Librem 5 and Pinephone.
I'll take the old world over the new one, no contest. Sure, I had to actively work to protect myself from bad actors in the old one. But in the new one, I also have to protect myself from the devices themselves. That's a much more difficult prospect.
Am I mistaken in believing that installing GrapheneOS on a Google Pixel phone completely takes over the phone including taking over the phone's verified-boot subsystem with the result that GrapheneOS can tell if the boot process has been tampered with, e.g., by an evil maid?
The best approach is to assume it is compromised and take steps to limit the potential damage.
The Germans assumed Enigma was secure, and as a result lost their U-Boot fleet and lost the Afrika Korps. This was despite a lot of evidence that it was compromised, but they kept using it for critical information.
Code-breaking also cost Japan the battle of Midway.
People should just assume their phone is infected with Pegasus.
One device to craft the message.
Another to encrypt.
Another to transmit.
One to receive.
One to decrypt.
One to consume.
Oh wait, wrong message.
Own a fab, design and verify your own chips, produce them under a strict control and cross-checking, same for all other parts, assembly, transportation, storage, and operation. Background-check everyone you employ. This is basically how high-assurance military hardware is handled.
The question for the rest of us is: can we buy trustable hardware? Even more specifically, can we buy if for the peanuts we're used to pay, instead of buying the whole wad of production chains as the military does?
Here the answer is negative in the strict sense: we can't be certain. But the answer is mostly-somehow-positive in many cases, because nobody cares enough to add subtle behaviors to MCUs that go for cents and control light switches and kids toys. The more advanced is your machine though, and the more there is a reason to bug it, e.g. to have an ability to remotely disable affected devices, or worse.
https://wiki.f-si.org/images/5/5c/Gabriel_Gouvine_MOOSIC_FSi...
A whole lot of progress in IC manufacturing is making things smaller. No reason one couldn't include the fabrication machinery itself in that quest.
Another approach is to fabricate IC's in a blank state, and have end users 'burn' its function. FPGAs are a thing, iirc even some fuse-programmed ones exist. Some gate arrays consist(ed? not sure if made anymore) of bulk, prefabricated logic, with a layer of customer-specified routing on top. Something like that could lend itself well to 'diy-at-home'.
All these would sidestep much of the "trust 3rd party" problem.
So yeah it's possible. Technology (or more precisely: equipment on the market) just isn't quite there yet.
> I still wouldn't "trust" you if that trust hasn't been earned elsewise.
And since a large swath of the tech industry (and most of the consumer tech industry) has spent years actively demonstrating that they can't be trusted, even if by some miracle they all suddenly decided to start being decent, it will take decades to even get back to the neutral point on the trust scale.
The word "trust" is critical, as it does not carry the meaning that might be expected in everyday usage. A trusted system is one that the user feels safe to use, and trusts to perform tasks without secretly executing harmful or unauthorized programs; trusted computing refers to whether programs can trust the platform to be unmodified from the expected, and whether or not those programs are innocent or malicious or whether they execute tasks that are undesired by the user.
That is the common trust in the open-source software community, but AFAIK not practical in hardware hence impossible. In software we can build from source and verify the checksum to make sure the binaries aren't manipulated, but not for the hardware.
We know we can't trust humans so we use software to protect us.
For hardware it does get a little more difficult, but if the attacker isn't allowed to run their own (modified) version of the firmware/software, then such attacks are very, very difficult to do. You would want to design your product in such a way that you can check the storage/flash contents without having to trust the product to self-report, otherwise a modified software build could easily lie to the verifier about it's hash.
So for most use cases, both hardware and software are mitigated substantially by verifying the software build.
An important note here is that it doesn't need to require distrusting the user. Of course modern tech companies love to distrust the user because it gives them substantially more control over how their product is used, so the "security" justification of using anti-tamper technologies is highly attractive to them.
You make a subtly backdoored version (for example, tamper with the RNG so it only has a few bits of entropy) and you either return it, or sign up as a third-party seller and ship it to Amazon yourself, to be commingled with existing legitimate inventory.
Then a year or two later, because you know all but a few bits of the private key, you grab the money and run.
No need to control who gets the backdoored devices, just ship enough that you luck into some rich buyers.
There are multiple sources of 555 timer equivalent and replacement chips for example: multiple fabs implementing the same spec should get results which are equivalent.
Though I suppose you can't really verify an unintended excession of function, which is really how you hide malicious behavior (unless you did something like space missions do where you have multiple systems running in lock-step and having their results cross-checked).
actually one of those rare moments when i have to ask someone "did you even read the _title_", because you'll note it doesn't even say "trusted hardware" but "trustable hardware" and i've never heard that latter term used in the context you're alluding to.
Maybe a better area of focus than malware prevention would be malware detection and filtering. We could have hardware chips which detect anomalous activity, block it as much as possible and notify the user. You could source multiple such chips from a range of providers to reduce the risk of tampering of any specific chip.