Then we're getting into compromised hardware, you verified that the chips actually are the same as the circuit diagrams after all.
There is only so much tinfoil you can deploy. If an advanced nation state truly has you in its sights there isn't much you can do about it, and to be honest that's the way it should be. We sacrifice individual liberties for the advantages of being part of an organised society, and the limitation of coercive power to the state is a key part of that.
A well regulated state in which the right people get targeted, with an acceptably low false positive rate that scales based on the degree of privacy violation of the targeting seems to be a perfectly sensible state of affairs. Apple's argument that they are being asked to do something that isn't justified fits just fine into that.
* Certificate Transparency-style public ledger for all firmwares that Apple has signed. Refuse an update if the firmware version has not been published to the ledger. This would make these backdooring attempts public, since we can assume people would watch the ledger and ask questions in case of an unknown version being published.
* For open source firmwares, reproducible builds are a great tool to make sure the distributed binaries actually match the publicly reviewable source code. Third parties could recompile the firmware and attest (through signing) that they get the same result.
I don't know any implementation of either of these two systems, at least publicly available (hint: Bazel does reproducible builds, and you can guess what is driving this requierment). Debian and Mozilla are experimenting with reproducible builds but I don't know that it ever reached any useful conclusion.
That's seems like a fantastic idea but without open source firmware I don't see how it could be enforced.
But it's pretty easy to imagine a feature where, similar to cert-pinning, many clients report the hashes that they see on the website and if you see something different from what everyone else does, you know something is wrong. It wouldn't need to be a "techie" feature - it would simply show a package as broken and refuse to install if it wasn't verifying, etc.
And the goal isn't some impossible 100% security, the goal is enough security to end mass interception and make the government rely on warrants and targeted tactics again.
This is why as well as serving those hashes over HTTPS, you sign the hashes with a key, the public part of which is distributed/retrievable/verifiable via some other means.
I think there's value in the purely user-based solution though. If two people go to a site at the same time and aren't served the same binary they should be curious why, even if the company securely and auditably signed both images.
And, it helps in all the cases when companies don't implement great release-security.
And how do I verify that the code I've just read is what shipped on my computer? If I install it myself, how do I verify the CD or ISO I have is what I read? If I compiled it myself, how do I verify the compiler didn't change anything? What about the system that compiled the code, do I trust that? How far back do I have to go before I have trusted everything?
And then what about hardware? Is there a chip that changes some of the code that's running? Can I verify every piece of hardware in my system, a 16-core CPU with 64GB of RAM and a high-end video card? How do I even do that? And what are the odds I am a world class C coder and a world-class hardware expert?
And then what about client code? Am I a world-class Javascript expert too, with full source access to the Django backend? And the system that is running that server code, do I have access to that hardware to make sure it's not going to compromise my security?
No. Fully trusting a computer is impossible. It doesn't mean we shouldn't try, we should at least make it as hard as possible for the bad guys to trick us. But what's better, IMO, is to create an environment where it's detrimental to companies to trick their users like that. Apple seems to have gotten a lot of great press for standing up in this situation. There's a market for it.
Can you trust Apple tech? Maybe not. But can you trust it more than Google or Microsoft or Samsung or Facebook or Amazon etc etc? It does seem that way. Without being a world-class expert in everything, eventually you have to trust someone.
I completely agree. I liken it to something like world-peace: It's an ideal, and we'll probably never get there. Doesn't mean we shouldn't try to get there though.
We should have a series of standardized trusted execution modules which are open source hardware and open source software. There should be a public process by which these are vetted. Watchdog groups could disassemble samples of the chips and place them under electron microscopes and otherwise examine them for tampering.
The effect of this would be to place individuals and grassroots organizations on an even playing field with corporations and governments with regards to such tools. It's a disaster for large organizations to have access to individual private information, yet it's a societal boon for such organizations to be open and for individuals to know what they are doing. The same asymmetry applies to trusted execution. It's a disaster when big organizations use it against individuals, but it would be a societal good if individuals could revoke access to their information from corporations when they break goodwill.
That's just in this universe. If users truly owned their devices, with full knowledge of the hardware and control of the software + data, we would never have this discussion.
In this world, you have to jump through flaming hoops just to prevent Apple from automatically swapping out your OS!