5 ms·
Despite being a pragmatist, it’s fun to imagine what’s possible as a thought experiment: You’re a western signals intelligence agency with virtually unlimited
by rl3 5y ago
Despite being a pragmatist, it’s fun to imagine what’s possible as a thought experiment:
You’re a western signals intelligence agency with virtually unlimited budget and access to some of the brightest mathematical minds on the planet. Your goal is to evaluate the viability in systemic compromise of virtually all compiler infrastructure used in modern computing to the point where verifiability becomes all but impossible, as theorized in the article.
How would you even go about that? What would the modifications look like? How much foresight would you need? Is it even a worthwhile goal, let alone a feasible one?
In practice, you’re probably just going to compromise the proprietary platform security modules instead. There, you can use undercover or otherwise sanctioned employees at semiconductor companies backed up by offensive cyber on a continuous basis. From that offensive vantage point, you’re able to compromise most compilers in use today.
If those miraculous Mes binaries devoid of any available source were in fact compromised, I suspect at best they’d be relics of a chess game that started long ago and is still being played today, with the binaries themselves no longer relevant.
Rather than some deliciously diabolical compromise at the lowest levels of the software stack from which all further compromise flows (a single turtle), a more pragmatic view might hold that systemic compromise may be more akin to architecting turtle contagions and ensuring their continuous delivery. Compilers are just one vector in achieving that end.
An even more pragmatic view might hold systemic compiler compromise (i.e. compilers indiscriminately compromising other compilers) is not undertaken for all manner of reasons.
- jerf 5y ago"In practice, you’re probably just going to compromise the proprietary platform security modules instead." That's the real problem. It's practical to bootstrap software in surprisingly few steps. There are people who can write assembler that can do a basic C compiler, from which we can get a full C compiler, from which the world is our oyster. I'm not that good in assembler myself but I could bootstrap from nothing in another couple of intermediate steps (and a whole bunch of time). Then on top of that you have things like NixOS and Debian pushing for full reproducability, which isn't a panacea on its own but means we get further visibility into what builds produce, and makes it more worthwhile to do a full software bootstrap because it extends the assurance out that much farther. If there is in fact an ancient buried trapdoor in our compiler stacks, whoever put it there better start trying to remove it because it's probably getting close to being discovered. I don't think there is one, but the amount of room for it to hide in is rapidly shrinking. But that does nothing about the hardware that has a backdoor into reading the contents of my harddrive and shoveling them out over Wifi to some arbitrary network destination if the right network packets arrive at my Wifi adapter. My software will never even see these magic packets because the hardware will never deliver them.