Intel x86 Root of Trust: Loss of Trust
blog.ptsecurity.com
blog.ptsecurity.com
Traitorous computing should not exist and a pox be upon the heads of everyone who let such modules make it into our computers.
If your system is running unsandboxed, untrusted third party code, that's pretty bad, regardless of the presence or absence of a trusted platform. As an example: FLOSS systems are definitely capable of running malware.
On the other hand, a reproducible build of open source software might well be what runs in (and relies on the attestation provided by) a trusted computing platform.
I do see one practical concern with integrating trusted computing on a general purpose computer:
If an implementation depends mostly on security through obscurity to achieve the desired attestation capabilities, this makes it much harder to audit it for vulnerabilities or backdoors. But I don't see how that is a fundamental property of a trusted computing system.
If I can't produce a binary with the same "reproducible state" as the one you had because your _kernel_ was one that I don't run (especially because maybe I don't _want_ to run it), that destroys all the value of a reproducible build.
A reproducible build should not _undermine_ software freedoms, specifically those protected by a Free Software license. But trusted computing always undermines software freedoms: that's by design. It's intentional. It's all about locking 100% of the users into a single monoculture where there is minimal freedom.
And that's fine in a managed IT environment such as a corporation. But it's not ok when I buy hardware and the manufacturer refuses to hand over the certificate chain to me.
This is the "old" way of using a TPM, and I agree, it does not make sense at all. After all, it never came to be, and that's not only because of the vocal protests against it. It simply does not make sense!
But I would encourage you to read up on how, for example, the Signal foundation is thinking about using something like SGX.
Of course, few people notice if the ME firmware is updated, and Intel doesn't often update deployed ME firmware. But it verifies the BIOS, and the BIOS verifies the kernel.
And that's the point where people start caring. Hence I used the kernel as an example.
Signal is thinking about using SGX, but they also have other ways to grant the user reasonable security. After this CSME exploit, Signal may reconsider using SGX.
Either way, my point still stands: verifiable builds do not rely on trusted computing at this point. I hope they never do. It would be twisted logic to tell the user the only way they can have their software freedom is by asking the trusted computing infrastructure to verify it for them. The trusted computing infrastructure being absolutely as opaque and locked-down as possible. Trusted computing is not reproducible! Its designed-in purpose is to be opaque, to hide things from the user.
Of course they don't. They are orthogonal, i.e. one does not imply the other, but one also does not prevent the other.
The verifiable build serves you, the hardware owner, in knowing that the software does what its vendor claims.
The trusted platform's assertion serves the software vendor, allowing them to trust the environment that their software is running in.
> It would be twisted logic to tell the user the only way they can have their software freedom is by asking the trusted computing infrastructure to verify it for them.
Nobody is saying that. If you want to trust your computer to do what you think it does, you don't want trusted computing; you probably want reproducible builds, trusted boot etc. But trusted computing also does not inherently prevent you from doing that. The two are orthogonal!
I suppose this depends on precisely what's meant by the term. Trusted computing based on a root of trust you control is incredibly useful by providing guarantees to you about remote systems you own and operate. This can be realized at present using Secure Boot and a TPM, but more hardware support (ex VM screening or SGX based on your own keys) would be nice.
You seem to be using trusted computing to refer only to hardware that works against the owner. Instead, I've always thought of it as referring to a device that is capable of providing various guarantees about the code it executes - it just happens that current implementations are primarily designed to provide those guarantees to third parties instead of the owner.
This is also my take on it. As with many issues in tech, it’s not about the tech itself, but rather who the tech is working for.
I want to be able to secure my computer (an ATM, say) against people with physical access to it. A root of trust (that the original purchaser of the device controls) allows for that.
Or, to be slightly more dark, I, as an enterprise IT administrator, don't want the employees fucking around with the hardware I deploy, even when they have all day to poke and prod around. I'm the root user of those workstations, not them. I need to be able to enforce enterprise security policies on them, and I can't do that if they can "jailbreak" the company's computers. (They want to run arbitrary code for personal reasons? They can do it on their own arbitrary personal devices, then, for which I have conveniently provided them a partitioned-VLAN guest network to join.)
("I" being a business, or individual, any proxy for society at large)
The fact that a tiny few human beings had the power of a "tornado" over others' lives ended fairly abruptly in some circumstances, with apparently good enough reason that it stayed that way.
Note: you're referring to absolutism, which is a mode of monarchy (also found in totalitarianism, dictatorship). By contrast, most monarchies still 'alive' today operate more in "symbolism" mode, in the constitution of their country.
This is kind of a recapitulation of the argument that forked Ethereum into Ethereum Classic:
• There was a system, partially founded on a guiding principle of its participants having final say in what happens in their in-system interactions, through contracts they enter into the system. Those contracts were each supposed to "have root" over all state-changes made to their own private storage.
• Something went wrong with a contract, in a way that corrupted its private storage and made things worse for pretty much everybody, since it was a very popular contract. The maintainers of the system decided to violate the guiding principle in the name of making things better for everybody, by just reaching in and overriding the rules of the popular contract, so that it would retroactively have done the "right" thing, and not gotten corrupted.
• Some people thought that there shouldn't be any entity (consortium or otherwise) with power to override the rules of their contracts, even if those changes are "to the good", so they left and started their own alternative system, mostly the same other than the guarantee that they'd never violate the guiding principle.
• The market decided that the alternative system has about 1/10th the economic value of the original system. Most developer effort, userbase, etc. sided with the original system, and with the concept of there being a political entity with the power to overrule individual contracts. The contract creators themselves seem to want the "safety net" implied by this entity having the power to overrule them.
Interesting, no?
Maybe if you live on that Face/Off prison where everyone wears metal boots on a magnetic grid. But in the real world rule-of-law is quite fragile because everyone has "root" over their own bodies. The obvious benefit is an ability of the public to revolt against a corrupt regime.
Regardless, it's a fatuous metaphor because nobody is advocating for mandatory metal boots nor the little Harkonnen heart plug thingies from Dune. Some people are, however, quite vehemently demanding that all software/hardware be designed by law to give root to a trusted third party. That's fatuous and dangerous and therefore requires different metaphors.
My point with my analogy was that, in the real world, hardware/software already do give root "by law" to the state. Not explicitly, but rather implicit in the fact that the government can tell you what to do, and so, if they want to control your computer, they can make you do it. (What else do you call a National Security Letter?) That's kind of what "by law" means—the law doesn't need to say that the law supercedes X; the law can supercede X in any specific case, any time it likes. If a court rules you need to open up your computer, there doesn't need to be a law making that request legal. A court said it; it's legal by definition.
And even then, a government only needs (the public conception of the machinery of) the law on their side if they aren't all that motivated to deal with you. If they really care—think "motivated enough to go though the trouble of putting someone into a witness-protection program, but... the opposite of that"—then there are plenty of private places they can disappear you to, and paint over your life with fabrications of criminal behavior they caught you in, including several months of evidence from a parallel running manufactured narrative of your life.
If you think there's a difference between dying by having your heart unplugged, and dying by having a SWAT team show up at your door with munitions you can never hope to have parity with, I don't know what to tell you. Either way, you're going to end up doing what they say, or dying trying to get away. (And if they really really care, you won't even be able to do that. You'll just wake up in a straightjacket in a padded room with all your teeth pulled out, so that you can't even bite your tongue.)
I would tell you that this kind of choice [being root in your 'own' system, having a 'root mechanism' in a collective network: pick any, both or none] fundamentally comes down to ethical values, a personal hierarchy thereof. The case of cryptocurrencies, if we ignore the speculative aspect, is interesting insofar as it demonstrates quite fundamentally opposed political views — here a certain idea of "benevolent interventionism" (however dictatorial / democratic in legitimity, the very existence of the mechanism), versus a certain ideal of "the hand of God" (re Adam Smith), a 100% non-distorted entity (I reckon, from that to Conway's game of life is but a matter of vocabulary: it's a fascinating object for nerds indeed).
Again, if we ignore the speculative aspect — which distorts everything, makes all of the above possible on paper but absolutely not observed in real life so far.
On topic, I think there's a certain tension forking towards the "free" domain — think Linux and open source and free software but actuated: now it's RISC-V (big mover in the integrated sector, GPUs..), OpenPower, think also companies like Tesla or Amazon making their own 'forks' of everything in-house, not because of NIH (these are too efficient to fall prey to such emotional traps) but rather because they do squeeze some degree of efficiency (like Google with their TPUs and what-have-you). How all programming languages in 20 years have gone open-source and mostly collegial in governance, and most major projects by way of consequence; etc.
This [x86 RoT] is just one in a list of reasons that justify this much deeper trend, as I reckon; and there is indeed a certain idealism of "the hand of God" as in being root on your own system (God = me = root). I very much subscribe to this ideology myself, if only for the practical reason that a backdoor is a backdoor is a backdoor.
Unless you're running something like a Raptor Talos II, You don't really have the root of trust. You have a branch off of the manufacturer's root.
That may be better for some enterprises, but in this modern age is that really enough? Consider how the PLA was involved in the hacking of Experian/Equifax.
Until you can review the code yourself and verify the binaries, you don't really have the root of trust. Someone else does. (I'm barring other types of shenanigans here, but it's the next logical step.)
For the workstation scenario, though, you don't really care who has the "ultimate" root, just so long as you can get whoever that is to help you to stop a particular class of attacker (e.g. your own employees, contractors, and any "visitors" in the building) from getting root. It's fine if the PLA has root on the boxes, because the boxes aren't actually storing trade secrets or anything; the point of having pseudo-root on the boxes is, in fact, to enforce a security regime that ensures your employees don't store any trade secrets on the boxes!
See also: being an "organization owner" in an enterprise SaaS service. Sure, I can't stop Google from snooping my GSuite data—but I'm also paying them to host that data for me, and e.g. selling it would be a violation of the contract. Even though they can, in theory, do it, they're economically incentivized against doing so (and doubly so, because if they did it once and got found out, they'd never make any GSuite money again.)
> Unless you're running something like a Raptor Talos II, You don't really have the root of trust.
Mind you, there are "multiply-descendant root-of-trust" setups that are quite common these days. In modern Apple devices, you've got an Intel processor doing most stuff, but then the Apple-controlled T2-chip domain doing encryption stuff, with its own boot chain completely isolated from the Intel one.
Edit: I wonder if there is any feasible way one could do this without trusting the CPU at all, but I suppose that completely defeats the point.
Normally a microcode update would be verified as well, but since it has been hacked in the past and CSME verification can now be bypassed it would probably be a matter of time.
It used to be the case that an internal ROM with a unique on-time programmable entry that can only be read internally was safe enough, but with decapping, gliching and breaking PKI chains that is getting weaker and weaker.
Why not generate a unique key for each device on first boot? isn't it a fact that the original purchaser does not have control of the trusted computer platform. Trusted as in the OEMs trust they can control your computer.
"I don't want to have to trust my cloud provider."
"Ok, we'll absolutely pinky-swear by this API you can access that our machines are running a trusted setup."
"Ok! I'll just trust the API you provide."
Even if the API is an x86 instruction, even if you do timing checks and side-channel checks in your code, you're still just in an arms race with your cloud provider while they hold all the power.
Of course, if that trust, due to malice or implementation defects, is misplaced, you're not better (but also not worse) off than without something like SGX.
An x86 core with SGX can be emulated...
(Edit: SGX can't be emulated. I stand corrected. Perhaps a better argument would have been arguing that verifiable builds give the user software freedom by granting them the ability to run the same code everywhere. But trusted computing != verifiable builds.)
That being said, I have serious misgivings about any hardware I own and use being explicitly designed _not_ to do my bidding. I can certainly see the utility of such an arrangement for a cloud provider though.
This does require trusting the CPU manufacturer (Intel) though. It's possible that Intel could collude with a server operator to create fake remote attestation messages, and trick you into encrypting your compute workload to them instead of the securely-sandboxed code of hash XYZ. That's not any worse than the current setup where your submitted compute workloads can't at all be encrypted in a way that the cloud operators can't read. Currently, if I want to use a no-name cloud host, then I have to trust the no-name cloud host to not be conspiring against me. With remote attestation, I just have to trust that the no-name cloud host and Intel aren't working together to conspire against me. I trust Intel relatively, so it doesn't matter how shady the no-name cloud host is.
This seems like a bad idea. Probably the number 1 reason for a host to go snooping in your VPS is because they have been requested to by a government. A government also has the power to ask intel to let the host do this. So no security has been gained here.
As a BE developer, I can tell you FE should always be untrusted. Always. Anyone who tells you otherwise is insane.
Yes, NetFlix wants to live a fantasyland where they control the display of content. Tough. At the end of the day, I can record my iPad and put it on YouTube.
There are still plenty of people unconcerned with the economics of multi-tenant cloud hosting, DRM, or prevention of cheating in videogames.
If X's trust in Intel to provide a platform where the code runs verified doesn't agree with your ethical view, that meant you likely don't trust X and Intel. That's all - there's no betrayal, or traitors, or other ethical dilemmas here.
Trust is not universal and you cannot trust everyone.
You're probably more interested in trustless computing, where those modules are irrelevant.
And yeah, that responsibility includes checking for updates and downloading security fixes.
"Trust" is always used in "Root of trust" and "Trustworthy computing" to mean "deny software freedom to the user."
That's not even close to what the dictionary says trust means.
I'm fine with a root of trust I have complete control over, and a trusted computing chain built on that would be welcome. Such an arrangement would do nothing to curtail my freedom, since I could install my own keys and thus firmware. And it wouldn't require any additional trust in the hardware vendor beyond what I already place in them. It could even ship with the vendor's keys installed by default, the same way Secure Boot works today.
I'd still have mixed feelings about something like SGX (in its current form) being standard in consumer hardware though, since at its core it consists of the hardware working against the owner. I can see why such an arrangement is desirable for cloud providers, but widespread consumer adoption would allow a third party (presumably a content provider) to require its use as part of a DRM scheme.
That being said, even SGX could be made palatable if there was no vendor provided key in the hardware at all and it instead attested everything with _my_ key. This would still protect remote systems against myriad forms of physical attack and allow for screening VMs from each other, all without compromising the integrity of my system (from my perspective). The downside, of course, is that it would require actually trusting your cloud provider.
Once the first set of patches for SGX support in Linux got rejected specifically because the user couldn't set their own keys -- I felt it was inevitable Intel was going to cede control on this, only a matter of when the chips appeared. It's just not how they roll; Intel's relatively good and well-prepared-in-advance Linux support is one of their good strengths, and they almost certainly don't want to keep patches around for a major feature like SGX any more than they absolutely have to. (The latest versions of the kernel patches, I think, only support SGXv2 style user controlled attestation. They have yet to be merged upstream.)
So even worse availability than I thought, I figured more than one SKU was supported. (I think you could at least buy either a NUC or a 1U from Intel for SGXv1 prototyping, but this is all I can find at the moment.)
Honestly though given all that it's still hard to find what actually defines SGXv2 in terms of features or errata, though. But FLC is the major requirement that will allow mainstream kernel support, from my understanding.
1. A user-programmable MSR would allow the device owner to falsify the attestation of enclave initialization (when using their own keys).
2. The ME (and other firmware) would still not be replaceable or owner controllable.
3. Due to 2, enclave compromise would have to be premeditated. That is, once an enclave is up and running IIUC it can (potentially) use MRENCLAVE to derive the sealing key. Without control of the ME that enclave would be unbreachable, correct?
So realistically, to maintain control of code running on my device I would have to set my own SGX keys and configure my system to actively compromise all enclaves at launch. From a security standpoint, there's still a black box (the ME) with super-root that could be compromised by attackers that I can't inspect, modify, or disable. And from a political standpoint, there's still a tragedy of the commons regarding DRM if the majority of providers decide to require SGX with Intel root keys as a condition of service.
Have I misunderstood anything?
(While responding, I stumbled across an interesting paper regarding using SGX to protect malware against researchers: https://arxiv.org/abs/1902.03256)
Edit: It appears I was overly optimistic - playback of 4k BluRay already requires Intel SGX. (https://old.reddit.com/r/Amd/comments/bw0cwq/will_ryzen_3rd_...)
That's not what "root of trust" means. Root of trust is normally a certificate which signs other certificates. If you trust that top level certificate to be valid, it means you can trust that the certificates signed by it are valid as well. That's all there is to it.
What someone does with the certificates - whether that's signing TLS traffic, or execution attestation is completely separate. I don't think you'd argue that TLS is used to "deny software freedom to the user" - right? (https://en.wikipedia.org/wiki/Root_certificate)
"trustworthy computing" is not a technical term, but a marketing phrase. (https://en.wikipedia.org/wiki/Trustworthy_computing)
You're probably referring to "trusted computing" which is a very specific use of signing and attestation of computing states. It uses the chain of trust in the same way it uses addition (or substitute any higher level concept you want) - you can't say "addition is bad, because it denies software freedom to the user" in this case.
If it is so specific, why is it present in every single Intel CPU? And why aren't end users able to delete the built-in root of trust and replace it with their own?
Trusted computing, as implemented by Intel, is actively hostile to the citizens of a free society. So in this case, I really can say that it denies software freedom to the user.
No, but if I could not make a website that was not signed by e.g. DigiCert, then I would argue that something was not right.
At least in theory. IIRC, a number of side channel attacks are exploitable on Intel SGX, so the adversary could leak secrets but not tamper with execution.
Now, if anyone tries to boot it with something other than Grub, it will fail and prompt for a password.
This seems like a reasonable tradeoff for secure boot, though it would be nice if Grub had a lockdown mode for this use case.
Or take a look at a ready-made configuration: https://github.com/CrowdStrike/travel-laptop
The problem with trusted computing is in how Apple, for example, uses it to prevent users from running software they don't like on their own phones. The problem is the fact that Apple is in control instead of the user, not the technology it uses to maintain the control.
99% of the time this is DRM :/
In my work, it's mostly about being certain that our embedded devices run the code that we wrote and that the devices themselves are not rogue clones. In other words, about ensuring the security of the entire system.
I get the backlash against DRM, I hate it too. But I think these days the biggest DRM hoopla is largely over, and I am annoyed by the rather childish "treacherous computing" take.
There are lots of legitimate cases that do not boil down to "but you want to hurt your users". My users want a system that can be trusted, too.
The idea is not to "take control over people's computers", i.e. your trust in your own computer. It is rather to enable somebody to gain some level of trust in the computations that are happening on somebody else's computer.
Yes, this technology is commonly used for DRM, and that was one of its earliest applications. But it's not limited to that. Trusted computing can switch the roles and give you as a user certainty over the computations a third party provider performs in the cloud on your behalf. The Signal team is doing a lot of very interesting experiments there [1].
If your concern is a hardware backdoor or something similar, this is less of a question of trusted computing, and rather one of trust in hardware vendors. Your hardware vendor can screw you over entirely without TPM, TEE, secure elements and the like.
On the other hand, Intel's trusted computing platform being horribly broken does not magically give you FOSS replacements for all the firmware, ROMs and microcode running on the dozens of peripherals in your computer.
Yes they can, but as I understand it they are using TPM to screw us over, hence people celebrating its being popped. No misunderstanding of trusted computing necessary: there aren't, in practice, other vendors to choose from here.
I do see that the existence of both trusted and untrusted systems could exert some pressure on consumers to adopt the latter, due to the unavailability of certain services on the former (e.g. DRM, banking apps on rooted Android phones etc).
The danger here is a loss of "freedom to tinker", which I do appreciate very much, and I share that concern. But has that actually happened with TPM?
the TPM is a PASSIVE component. It only responds to your requests and you can do cool things with it.
There are a lot of possibilities with distributed computing
I’ve spent a lot of time thinking about this and I don’t really know how to do it without one of those two things.
Edit: like I hear you saying there are possibilities in a distributed computing world, but I don’t have any idea what distributed computing enables for key recovery (except possibly k of n schemes but that’s just replication, not safety).
Edit 2: also, presume that users suck at key management and can’t remember long password strings, 24 words, or be trusted to store a key for a meaningful period of time.
Do you have an example of such an enclave and how it would operate without a remote attention service in the model where a user can trust that a distributed network they don’t control is safeguarding their key?
(But I suppose that just proves your point.)
Is signal moving towards some sort of key escrow policy?
Trusted platforms are pretty interesting IMO in their ability to essentially provide FHE by means of tamper-resistance instead of mathematical security. Objections should be more directed at the control of keys being with Intel; maybe some other orgs should be in charge, maybe there could be a number of trust vendors you could choose, or at least veto (and allow external users of your external platform to choose). Something more in line with TLS authentication: we all need to trust 3rd parties to use the internet, and nobody protests -- with good reason. It's a well designed, open, decentralized system with good oversight.
DRM lets users watch Netflix on their phones while on an airplane.
Hardware key storage significantly decreases the attack surface for malware trying to extract them, compared to storing them on the application processor.
How is the average user being fucked here, exactly?
hardware encryption is arguably a better use of TEE, but as far as I know, no actual implementations use SGX for that purpose. the TPM is used, but it's not fast enough for actual encryption. the OS loads the keys from the TPM and does the encryption in regular software.
No, DRM exists to restrict users, it does not enable anything for them.
But this is exactly the idea of trusted computing:
"Prove to me that I can trust your hardware to run my software according to my specifications, and I will use it to compute things (for our mutual benefit) that I would otherwise only compute on my own hardware."
DRM is the canonical example, but wouldn't it be nice to be able to actually know that cloud service provider has to adhere to their terms of service, rather than having to take their word for it?
(The big "if" here is that the terms of service are expressible and enforceable in the context of some piece of software.)
As a user - why should I trust your software with my computer?
There is great imbalance of power, the companies aren't necessarily the good guys. It already got unfair with DRM, for example together with DMCA is effectively blocking fair use, like ability to make own backup copy of purchased medium, or purchasing it once and being able to play the content on multiple devices.
It also prevents one from being able to sell their copy to someone else which also is allowed by law.
And that was the real error. The TPM should be a TPM. It could be on die, but it should be an entirely isolated device with its own RAM, no DMA, no modules, and no other funny business.
not an issue if it's on-die, as the parent suggested.
To me it sounds like Intel is not thrilled with ptsecurity's work, and may not be awarding ptsecurity a bounty or recognition for this. But that's just my two cents.
------>8------ quoting from the article ------>8------
We should point out that when our specialists contacted Intel PSIRT to report the vulnerability, Intel said the company was already aware of it (CVE-2019-0090). Intel understands they cannot fix the vulnerability in the ROM of existing hardware. So they are trying to block all possible exploitation vectors. The patch for CVE-2019-0090 addresses only one potential attack vector, involving the Integrated Sensors Hub (ISH). We think there might be many ways to exploit this vulnerability in ROM. Some of them might require local access; others need physical access.
As a sneak peek, here are a few words about the vulnerability itself:
1. The vulnerability is present in both hardware and the firmware of the boot ROM. Most of the IOMMU mechanisms of MISA (Minute IA System Agent) providing access to SRAM (static memory) of Intel CSME for external DMA agents are disabled by default. We discovered this mistake by simply reading the documentation, as unimpressive as that may sound.
2. Intel CSME firmware in the boot ROM first initializes the page directory and starts page translation. IOMMU activates only later. Therefore, there is a period when SRAM is susceptible to external DMA writes (from DMA to CSME, not to the processor main memory), and initialized page tables for Intel CSME are already in the SRAM.
3. MISA IOMMU parameters are reset when Intel CSME is reset. After Intel CSME is reset, it again starts execution with the boot ROM.
Therefore, any platform device capable of performing DMA to Intel CSME static memory and resetting Intel CSME (or simply waiting for Intel CSME to come out of sleep mode) can modify system tables for Intel CSME pages, thereby seizing execution flow.
------>8------ quoting from the article ------>8------
Intel alone controls the certificate chain for the CPU I own? I don't trust it, and it's user-hostile. Users won't know that it's because of Intel that, for instance, their legacy apps don't run any more. Or their Mac's NVMe drive cannot be recovered (though, yes, this is Apple's Trusted Computing chip, not Intel's).
I take it as the tech community's responsibility to clearly point out who violated their trust on this one.
Trusted computing could be "not user-hostile," or perhaps that's what "user-friendly" means? But to not be user-hostile the certificate chain must be surrendered at point of sale.
It's ironic that sysadmins for large corporations _are_ enabled by Intel's management tools, and _are_ aware of the purpose of these trusted computing tools. But end users _are_ _not_ enabled, _are_ _not_ aware, and are thus treated hostilely by Intel and cannot do the things they absolutely need to do with their own PC.
It does not mean the ordinary sense of trust, which indicates complete confidence in the integrity and accuracy of the referent.
It means that you have no choice but to rely on it.
"Trustworty Computing" eventually became the "Palladium"[2] project with more ambitious goals including DRM. Palladium evolved into NGSCB ("Next-Generation Secure Computing Base") when Microsoft joined with other companies to form the TCPA ("Trusted Computing Platform Alliance") that later became the ("Trusted Computing Group").
The term has always been used by Microsoft (and later the TCPA/TCG) mean a trustworthy platform, from the developer perspective[3].
[1] https://en.wikipedia.org/wiki/Trustworthy_computing
[2] https://en.wikipedia.org/wiki/Next-Generation_Secure_Computi...
5200.28-STD - DoD Trusted Computer System Evaluation Criteria - August 15, 1983 - The Orange Book.
How is that not absolutely disastrous for users?
TPM is essentially a device that takes control away from the computer owner, it is protecting some company's software from YOU.
I want nothing more than for Intel to stop acting as awful as it does, but the market doesn't care about what users want for goods that are almost mandatory.
This reminds me of that change.org petition from years ago addressed to intel to remove management engine et al.
Which was ridiculously naive and disconnected from reality, in my opinion.
It sounds from the end of the article that there are separate DMA/IOMMU processes for the CSME, but I'm not familiar enough with stuff this far down to know for certain.
The T2 chip has its own Secure Enclave and immutable BootROM, and it supposedly verifies the Intel UEFI ROM before it is allowed to load, and then the CPU reads this from the T2 over SPI. So it would seem that this boot process is not weakened by a compromise of the Intel key, as only Apple can sign UEFI updates to be loaded onto the T2 chip.
Source: https://manuals.info.apple.com/MANUALS/1000/MA1902/en_US/app... (long PDF)
If so, is it actually more secure, or has it simply not been scrutinized as much as Intel's version by security researchers?
[1] https://en.wikipedia.org/wiki/AMD_Platform_Security_Processo...
[2] https://en.wikipedia.org/wiki/ARM_architecture#Security_exte...
There are chips you can buy that do not come with any TrustZone code, and you may write your own to put in there, if you so wish
I am now reconsidering the idea.
5 years of Intel CPUs and chipsets
https://arstechnica.com/information-technology/2020/03/5-yea...
The researchers have not demonstrated a complete end to end attack, but it seems likely one exists.
While this could likely be pulled off easily as a local attack, in some cases it might also be possible to do as a remote attack depending on being able to program other hardware devices to exploit the flaw during a reboot.
Both exist to treat the user as a hostile entity.
At the individual level, remote attestation has a particularly terrible end game. Think of all those websites that attempt to enforce their desired business whims client-side, that we rightfully laugh at - browser fingerprinting, image save as, anti-adblock, etc. Now imagine they're successful!
Another possibility is still a source leak, where 4k content gets lifted off Netflixes own internal content storage.
Cinema DCP packages, however, do - it's either watermarked at the DCP distributor or in the decryption module, but that stuff is out of reach for most warez crews.
But then only ~6 accounts to have >50% probability of seeing every combination of each bit and be able to combine them at random.
There's no need for that, the CENC standard has more robust watermarking support, but it's not really used in practice yet because it's not commonly supported by browsers and possibly other clients.
Assuming there is a watermark, how would you track them down? It's not like you need to register your hdmi capture device.
Now, as for whether or not you can distinguish the re-encoding from it's original source.... difficult but plausible in certain scenarios? Perhaps if the content was heavily re-encoded to the point where you can statistically determine the presence of the generational noise. With only a single re-encode it may be impossible to determine.
[0] https://goughlui.com/2016/11/22/video-compression-x264-crf-g...
if so, that is definitely not a good thing.
Apple is a good example here. You can't even touch the internal storage whether you want it encrypted or not, because all access to the onboard storage is gated by their black box security processor.
I'd rather just forego the silicon and do it all in software, since there's no way to ensure that the OEMs aren't being bastards. Another reason is that the hardware vendor is in a great, centralized position to be backdoored either by hackers or the bad guys with badges.
Also note that voting etc could easily be implemented with smart cards (eg SIMs, credit card chips, etc). These are still trusted computing, but are at least limited in scope. Top-down control has no place in general CPUs if we wish to remain an open society.
Remote attestation is required for many privacy-preserving activities. It isn't just DRM.
I didn't say it was just DRM. Remote attestation creates a vulnerability whereby remote entities demand that you attest to running a software environment that they control.
It's possible to do boot verification and attestation without baking in privileged manufacturer keys. If the attestation key were generated and installed by the owner, they could prove everything to themselves remotely, without being forced to prove anything to hostile parties.
If this were the case here, I wouldn't be cheering.
>"This vulnerability jeopardizes everything Intel has done to build the root of trust and lay a solid security foundation on the company's platforms. The problem is not only that it is impossible to fix firmware errors that are hard-coded in the Mask ROM of microprocessors and chipsets."
Could someone explain what a Mask ROM is? This is the first I've heard of this. How is it different that a regular ROM?
Regular rom can be many things, rewritable like (E)EPROM or flash, disks like cd(-rom) or chips like PROM (which is write once, read many).
It's part of a job of an IC engineer to be able to tap arbitrary metal layer on the device with microprobes to "debug" it, and this is something quite routine in a process of a microchip development.
Any such measures can only deter people without access to an IC development lab.
https://web.stanford.edu/class/ee311/NOTES/Interconnect%20Sc...
Even if doing so requires destroying, and reconstructing some tracks around the probe, 7nm shouldn't be much different from how it was done back a decade ago.
Smart designers will put wires with useful information under many other layers which if broken will disable them.
So yes it's doable, you'll likely damage the chip in the process, it's certainly neither easy nor trivial
Criminals who anticipate finding a way to profit on the information would be far more likely to go through the trouble of bribing someone or investing in the resources to snag it.
For a good discussion of this topic, I recommend Andrew "bunnie" Huang's talk about supply chain security:
It is something a government might do to get someone's crypto keys or iPhone, or to hack into foreign network infrastructure (Huawei/etc) (after all in the past they've built special purpose submarines to do such things)
My company (zeroK NanoTech) has developed and is now selling advanced focused ion beam (FIB) systems with enhanced resolution and machining capability that are well suited to these operations.
We did circuit-edits on 10 nm node chips with Intel and they have given talks about it at several conferences (e.g. ISTFA)
Surname Steele ringed in my head as something lab equipment related, and, yes, indeed you are
That's a pretty tiny group, isn't it?
This is all completely wrong.
Yet, "firmware recovery" people in China use that regularly to make a living. Hardened/encrypted MCU firmware extraction costs under $20k here.
Any pointers to online info for people interested in finding out more, and/or setting up their own gear for this? :)
AFAIK, the Secure Enclave stores the actual disk encryption keys and Touch ID data, so that should be safe. But the secure boot validation, firmware password, startup security policy, etc. can now be bypassed (once a full exploit to do so is written). Also, it is quite possible that the Intel ME and UEFI firmware validation can be bypassed by simply disabling that part of the T2's bridgeOS code.
It fulfills the same abstract purpose, but that's where the similarities end.
That's not a criticism per se, I am sure it's hard to design these things securely and without bugs.
Right now the only attacks I know of treat it as a decryption oracle, but it'd be nice to not have to pre decrypt programs on a real PS4 for cases like archiving and emulation.
I'm no expert, but that would be the only legal way of archiving these programs, no?
Using it as a decryption oracle involves enough circumvention in the first place that you might already be running afoul of the DMCA if that applies to you.
Meanwhile, institutions that are given more legal carte blanche like Archive.org would probably prefer to have the decryption keys in case there comes a point where they have access to encrypted binaries, but PS4s to decrypt with have become hard to find, or keys are rotated to the point where new applications exist that require a firmware version that aren't subject to the same decryption oracle attacks.
<And, not a lawyer>
Note well: I am not claiming that the tools exist currently to do this.
A reference to the specific vulnerability would be nice. CVE? Conference presentation? El Reg? Sketchy blogspam? Maybe I've been living under a rock, but it would still help the reader out.
"CVE-2019-0090 was initially found externally by an Intel partner and subsequently reported by Positive Technologies researchers. Intel would like to thank Mark Ermolov, Dmitry Sklyarov and Maxim Goryachy from Positive Technologies for reporting this issue."
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-0090
https://www.intel.com/content/www/us/en/security-center/advi...