In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of this article published a few weeks
ago,
I have discussed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 basics of Intel SGX technology, and also
discussed challenges with using SGX for securing desktop systems,
specifically focusing on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem of trusted input and output. In
this part we will look at some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r aspects of Intel SGX, and we
will start with a discussion of how it could be used to create a
truly irreversible software.
SGX Blackboxing – Apps
and malware that cannot be reverse engineered?
A nice feature of
Intel SGX is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor automatically encrypts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 content of
SGX-protected memory pages whenever it leaves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor caches
and is stored in DRAM. In ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r words cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code and data used by SGX
enclaves never leave cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor in plaintext.
This feature, no
doubt influenced by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 DRM industry, might profoundly change our
approach as to who controls our computers really. This is because it
will now be easy to create an application, or malware for that
matter, that just cannot be reversed engineered in any way. No more
IDA, no more debuggers, not even kernel debuggers, could reveal cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
actual intentions of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 EXE file we're about to run.
Consider
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following scenario,
where a user downloads an
executable, say blackpill.exe, which in fact logically consists of
three parts:
- A 1st stage loader (SGX loader) which is unencrypted, and which task is to setup an SGX enclave, copy cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rest of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, specifically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n start executing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader...
- The 2nd stage loader, which starts executing within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave, performs remote attestation with an external server and, in case cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation completes successfully, obtains a secret key from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server. This code is also delivered in plaintext too.
- Finally cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted blob which can only be decrypted using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key obtained by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 2nd stage loader from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server, and which contains cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual logic of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application (or malware).
We
can easily see that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no way for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user to figure out what
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 encrypted blob is going to do on her computer. This
is because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key will be released by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote server only if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
2nd
stage loader can prove via
remote
attestation
that it indeed executes within a protect SGX enclave and that it is
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 original unmodified loader code that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application's author
created. Should one bit of this loader be modified, or should it be
attempted to run outside of an SGX enclave, or within a somehow
misconfigured SGX enclave, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote
attestation
would
fail and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key will not be obtained.
And once cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key
is obtained, it is available only within cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave. It cannot
be found in DRAM or on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 memory bus, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user had access to
expensive DRAM emulators or bus sniffers. And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key cannot also be
mishandled by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 code that runs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave, because remote
attestation also proved that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader code has not been modified,
and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author wrote cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader specifically not to mishandle cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key
in any way (e.g. not to write it out somewhere to unprotected memory,
or store on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 disk). Now, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loader uses cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key to decrypt cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
payload, and this decrypted payload remains within secure enclave,
never leaving it, just like cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key. It's data never leaves cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
enclave eicá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r...
One little catch
is how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 key is actually sent to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX-protected enclave so that
it could not be spoofed in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle? Of course it must be encrypted, but to which key? Well, we can have our 2nd
stage loader generate a new key pair and send cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
remote server – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 server will cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n use this public key to send
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual decryption key encrypted with this loader's public key.
This is almost good, except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that this scheme is not
immune to a classic main in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 middle attack. The solution to this
is easy, though – if I understand correctly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 description of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
new Quoting and Sealing operations performed by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quoting Enclave –
we can include cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generated public key hash as part of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 data that
will be signed and put into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quote message, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote sever
can be assured also that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 public key originates from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual
code running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave and not from Mallory somewhere in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
middle.
So, what does cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
application really do? Does it do exactly what has been advertised by
its author? Or does it also “accidentally” sniffs some system
memory or even reads out disk sectors and sends cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 gacá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365red data to
a remote server, encrypted, of course? We cannot know this. And
that's quite worrying, I think.
One might say that
we do accept all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 proprietary software blindly anyway – after
all who fires up IDA to review MS Office before use? Or MS Windows?
Or any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r application? Probably very few people indeed. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
point is: this could be done, and actually some brave souls do that.
This could be done even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 author used some advanced form of
obfuscation. Can be done, even if taking lots of time. Now, with
Intel SGX it suddenly cannot be done anymore. That's quite a
revolution, complete change of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 rules. We're no longer masters of
our little universe – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 computer system – and now somebody else
is.
Unless cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was a
way for “Certified Antivirus companies” to get around SGX
protection.... (see below for more discussion on this).
...And some good applications of SGX
The SGX
blackboxing has, however, some good usages too, beyond protecting cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
Hollywood productions, and making malware un-analyzable...
One particularly
attractive possibility is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “trusted cloud” where VMs offered
to users could not be eavesdropped or tampered by cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud provider
admins. I wrote about such possibility two years ago,
but with Intel SGX this could be done much, much better. This will,
of course, require a specially written hypervisor which would be
setting up SGX containers for each of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VM could
aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user and prove, via remote attestation, that it
is executing inside a protected and properly set SGX enclave. Note
how this time we do not require cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor to aucá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365nticate to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
users – we just don't care, if our code correctly attests that it
is in a correct SGX, it's all fine.
Suddenly Google
could no longer collect and process your calendar, email, documents,
and medial records! Or how about a tor node that could prove to users
that it is not backdoored by its own admin and does not keep a log of
how connections were routed? Or a safe bitcoin web-based wallet? It's
hard to overestimate how good such a technology might be for bringing
privacy to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 wide society of users...
Assuming, of
course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re was no backdoor for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA to get around cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX
protection and ruin this all goodness...(see below for more
discussion on this).
New OS and VMM architectures
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paragraph
above I mentioned that we will need specially written hypervisors
(VMMs) that will be making use of SGX in order to protect cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user's
VMs against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365mselves (i.e. against cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor). We could go
furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r and put ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r components of a VMM into protected SGX
enclaves, things that we currently, in Qubes OS, keep in separate
Service VMs, such as networking stacks, USB stacks, etc. Remember
that Intel SGX provides convenient mechanism to build inter-enclave
secure communication channels.
We could also take
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “GUI domain” (currently this is just Dom0 in Qubes OS) and
move it into a separate SGX enclave. If only Intel came up with solid
protected input and output technologies that would work well with
SGX, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n this would suddenly make whole lots of sense (unlike
currently
where it is very challenging).
What we win this way is that no longer a bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor should
be critical, as it would be now a long way for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacker who
compromised cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor to steal any real secret of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user,
because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are no secrets in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor itself.
In this setup cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
two most critical enclaves are: 1) cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 GUI enclave, of course, and 2)
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 admin enclave, although it is thinkable that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 latter could be
made reasonably deprivileged in that it might only be allowed to
create/remove VMs, setup networking and ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r policies for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m, but
no longer be able to read and write memory of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 VMs (Anti Snowden
Protection, ASP?).
And... why use
hypervisors? Why not use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 same approach to compartmentalize
ordinary operating systems? Well, this could be done, of course, but
it would require considerable rewrite of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 systems, essentially
turning cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m into microkernels (except for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fact that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
microkernel would no longer need to be trusted), as well as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
applications and drivers, and we know that this will never happen.
Again, let me repeat one more time: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole point of using
virtualization for security is that it wraps up all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 huge APIs of
an ordinary OS, like Win32 or POSIX, or OSX, into a virtual machine
that itself requires orders of magnitude simpler interface to/from
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 outside world (especially true for paravirtualized VMs), and all
this without cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 need to rewrite cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 applications.
Trusting Intel – Next Generation
of Backdooring?
We have seen that
SGX offers a number of attractive functionality that could
potentially make our digital systems more secure and 3rd
party servers more trusted. But does it really?
The obvious
question, especially in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 light of recent revelations about NSA
backdooring everything and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 kitchen sink, is whecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r Intel will
have backdoors allowing “privileged entities” to bypass SGX
protections?
Traditional CPU backdooring
Of course cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y
could, no question about it. But one can say that Intel (as well as
AMD) might have been having backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors for a long
time, not necessarily in anything related to SGX, TPM, TXT, AMT, etc.
Intel could have built backdoors into simple MOV or ADD instructions,
in such a way that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y would automatically disable ring/page
protections whenever executed with some magic arguments. I wrote more
about this many years ago.
The problem with
those “traditional” backdoors is that Intel (or a certain agency)
could be caught using it, and this might have catastrophic
consequences for Intel. Just imagine somebody discovered (during a
forensic analysis of an incident) that doing:
MOV eax, $deadbeef
MOV ebx, $babecafe
ADD eax, ebx
...causes ring
elevation for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 next 1000 cycles. All cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processors affected
would suddenly became equivalents of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old 8086 and would have to
be replaced. Quite a marketing nightmare I think, no?
Next-generation CPU backdooring
But as more and
more crypto and security mechanisms got delegated from software to
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 more likely it becomes for Intel (or AMD) to
insert really “plausibly deniable” backdoors into processors.
Consider e.g. cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 recent paper on how to plant a backdoor into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's Ivy Bridge's
random number generator (usable via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 new RDRAND instruction). The backdoor
reduces cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual entropy of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 generator making it feasible to
later brute-force any crypto which uses keys generated via cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
weakened generator. The paper goes into great lengths describing how
this backdoor could be injected by a malicious foundry (e.g. one in
China), behind cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel's back, which is achieved by implementing
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor entirely below cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 HDL level. The paper takes a
“classic” view on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 threat model with Good Americans (Intel
engineers) and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Bad Chinese (foundry operators/employees).
Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less, it should be obvious that Intel could have planted such
a backdoor without any effort or challenge described in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper,
because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y could do so at any level, not necessarily below HDL.
But backdooring an
RNG is still something that leaves traces. Even though cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoored
processor can apparently pass all external “randomness” testes,
such as cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NIST testsuite, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y still might be caught. Perhaps
because somebody will buy 1000 processors and will run cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m for a
year and will note down all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 numbers generated and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n conclude
that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 distribution is quite not right. Or something like that. Or
perhaps because somebody will reverse-engineer cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor and
specifically cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 RNG circuitry and notice some gates are shorted to
GND. Or perhaps because somebody at this “Bad Chinese” foundry
will notice that.
Let's now get back
to Intel SGX -- what is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 actual Root of Trust for this technology?
Of course, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor, just like for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old ring3/ring0
separation. But for SGX cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is additional Root of Trust which is
used for remote attestation, and this is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private key(s) used for
signing cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Quote Messages.
If cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 signing
private key somehow got into cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hands of an adversary, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote
attestation breaks down completely. Suddenly cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “SGX Blackboxed”
apps and malware can readily be decrypted, disassembled and reverse
engineered, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary can now emulate cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir execution
step by step under a debugger and still pass cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 remote attestation.
We might say this is good, as we don't want irreversible malware and
apps. But cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n, suddenly, we also loose our attractive “trusted
cloud” too – now cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is nothing that could stop cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 adversary,
who has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing key, to run our trusted VM outside of
SGX, yet still reporting to us that it is SGX-protected. And so,
while we believe that our trusted VM should be trusted and
unsniffable, and while we devote all our deepest secrets to it, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
adversary can read cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m all like on a plate.
And cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 worst
thing is – even if somebody took such a processor, disassembled it
into pieces, analyzed transitor-by-transitor, recreated HDL, analyzed
it all, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n still it all would look good. Because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 backdoor is...
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 leaked private key that is now also in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hands of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
adversary, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no way to prove it by looking at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
processor alone.
As I understand,
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole idea of having a separate TPM chip, was exactly to make
such backdoor-by-leaking-keys more difficult, because, while we're
all forced to use Intel or AMD processors today, it is possible that
e.g. every country can produce cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPM, as it's million times
less complex than a modern processor. So, perhaps Russia could use
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPMs, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be reasonably sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use private
keys which have not be handed over to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA.
However, as I
mentioned in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first part of this article, sadly, this scheme
doesn't work that well. The processor can still cheat cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external
TPM module. For example, in case of an Intel TXT and TPM – cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
processor can produce incorrect PCR values in response to certain
trigger – in that case it no longer matters that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM is trusted
and keys not leaked, because cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM will sign wrong values. On cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r hand we go back now to using “traditional” backdoors in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
processors, whose main disadvantage is that people might got cought
using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m (e.g. somebody analyzed an exploit which turns out to be
triggering correct Quote message despite incorrect PCRs).
So, perhaps, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
idea of separate TPM actually does make some sense after all?
What about just accidental bugs in
Intel products?
Conspiracy
cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ories aside, what about accidental bugs? What are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chances of
SGX being really foolproof, at least against those unlucky
adversaries who didn't get access to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing keys? The
Intel's processor have become quite a complex beasts cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days. And
if you also thrown in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Memory Controller Hub, it's unimaginably
complex beast.
Let's take a quick
tour back discussing some spectacular attacks against Intel
“hardware” security mechanisms. I wrote “hardware” in
quotation marks, because really most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se technologies is
software, like most of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 things in electronics cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se days.
Nevercá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365less cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 “hardware enforced security” does have a special
appeal to lots of people, often creating an impression that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se
must be some ultimate unbreakable technologies....
I think it all
started with our exploit against Intel Q35 chipset (slides
15+) demonstrated back in 2008 which was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 first attack allowing to
compromise, ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365rwise hardware-protected, SMM memory on Intel
platforms (some ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r attacks against SMM shown before assumed cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
SMM was not protected, which was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 case on many older platforms).
This was cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n
shortly followed by anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r paper from us about attacking Intel Trusted Execution Technology (TXT), which found
out and exploited a fact that TXT-loaded code was not protected
against code running in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SMM mode. We used our previous attack on
Q35 against SMM, as well as found a couple of new ones, in order to
compromise SMM, plant a backdoor cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re, and cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n compromise
TXT-loaded code from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re. The issue highlighted in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 paper has
never really been correctly patched. Intel has spent years developing
something cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y called STM, which was supposed to be a thin hypervisor
for SMM code sandboxing. I don't know if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Intel STM specification
has eventually been made public, and how many bugs it might be
introducing on systems using it, or how much inaccurate it might be.
In cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 following
years we presented two more devastating attacks against Intel TXT
(none of which depending on compromised SMM): one
which exploited a subtle bug in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor SINIT module allowing
to misconfigure VT-d protections for TXT-loaded code, and anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r one exploiting a classic buffer overflow bug also in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor's
SINIT module, allowing this time not only to fully bypass TXT, but
also fully bypass Intel Launch Control Policy and hijack SMM (several
years after our original papers on attacking SMM cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 old bugs got
patched and so this was also attractive as yet anocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r way to
compromise SMM for whatever ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r reason).
Invisible Things
Lab has also presented first, and as far as I'm aware still cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only
one, attack on Intel BIOS that allowed to reflash cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 BIOS despite Intel's strong “hardware”
protection mechanism to allow only digitally signed code to be
flashed. We also found out
about secret processor in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 chipset used for execution of Intel AMT
code and we found a way to inject our custom code into this special
AMT environment and have it executed in parallel with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 main
system, unconstrained by any ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r entity.
This is quite a
list of Intel significant security failures, which I think gives
something to think about. At cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 very least that just because
something is “hardware enforced” or “hardware protected”
doesn't mean it is foolproof against software exploits. Because, it
should be clearly said, all our exploits mentioned above were pure
software attacks.
But, to be fair,
we have never been able to break Intel core memory protection (ring
separation, page protection) or Intel VT-x. Rafal Wojtczuk has
probably came closest with his SYSRET attack
in an attempt to break cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ring separation, but ultimately cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
Intel's excuse was that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 problem was on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 side of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS
developers who didn't notice subtle differences in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 behavior of
SYSRET between AMD and Intel processors, and didn't make cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir kernel
code defensive enough against Intel processor's odd behavior.
We have also
demonstrated racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r impressive attacks bypassing Intel VT-d,
but, again, to be fair, we should mention that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 attacks were
possible only on those platforms which Intel didn't equip with so
called Interrupt Remapping hardware, and that Intel knew that such
hardware was indeed needed and was planning it a few years before our
attacks were published.
So, is Intel SGX
gonna be as insecure as Intel TXT, or as secure as Intel VT-x....?
The bottom line
Intel SGX promises
some incredible functionality – to create protected execution
environments (called enclaves) within untrusted (compromised)
Operating System. However, for SGX to be of any use on a client OS,
it is important that we also have technologies to implement trusted
output and input from/to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 SGX enclave. Intel currently provides
little details about cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 former and openly admits it doesn't have cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
later.
Still, even
without trusted input and output technologies, SGX might be very
useful in bringing trust to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud, by allowing users to create
trusted VMs inside untrusted provider infrastructure. However, at cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
same time, it could allow to create applications and malware that
could not be reversed engineered. It's quote ironic that those two
applications (trusted cloud and irreversible malware) are mutually
bound togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r, so that if one wanted to add a backdoor to allow A/V
industry to be able to analyze SGX-protected malware, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365n this very
same backdoor could be used to weaken cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 guarantees of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365
trustworthiness of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 user VMs in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 cloud.
Finally, a problem
that is hard to ignore today, in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 post-Snowden world, is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 ease
of backdooring this technology by Intel itself. In fact Intel doesn't
need to add anything to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir processors – all cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y need to do is
to give away cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 private signing keys used by SGX for remote
attestation. This makes for a perfectly deniable backdoor – nobody
could catch Intel on this, even if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor was analyzed
transistor-by-transistor, HDL line-by-line.
As a system
architect I would love to have Intel SGX, and I would love to believe
it is secure. It would allow to furcá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r decompose Qubes OS,
specifically get rid of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 hypervisor from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TCB, and probably
even more.
Special thanks to
Oded Horowitz for turning my attention towards Intel SGX.
13 comments:
With regard to Intel giving keys to NSA, it is inconceivable that NSA would not subpoena cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m. Therefore, one can rest assured that NSA has cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y keys.
"So, perhaps Russia could use cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365ir own TPMs, which cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y might be reasonably sure cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y use private keys which have not be handed over to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 NSA."
could an external device, e.g. USB-attached, work as an independent TPM? possibility of MITM seems generic to any TPM-like device, interested to hear your thoughts on this.
@jake: I don't think a USB-based TPM could be of any use, especially in a dynamic scheme, such as TXT or SGX, becuase cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is no equivalent of a "special wire" from cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device which could be used to inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 device that a trusted event occurred (e.g. SENTER needs to inform cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 TPM that is should reset certain PCR registers). In case of a USB device, I'm afraid, such signals could be just spoofed by malware.
@jake: cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re are also similar (hardware) attacks against independent TPMs were you spoof certain events (e.g. reboots) (check out this paper if you're interested)
@joanna: great paper about SGX!
It is indeed most likely that an enclave has complete control over all memory, with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 exception of ocá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r enclaves, and can snoop everything in memory. However, this is not required. In principle, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 untrusted OS could set up virtual memory where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave must reside. Besides, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 enclave only cares that it is loaded somewhere in memory and with it's pages in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 correct order. And that it's pages remain in that order. That way, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS, even though untrusted, can control what unprotected memory cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 loaded enclave can access and what not. This is similar to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 Fides architecture (disclaimer: I'm a co-author of that paper). It'll be very interesting to see how enclaves are exactly implemented. Can't wait for some more details from Intel.
Hi Joanna, excellent post on SGX. It remains to be seen just how well cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se extensions will work or how cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y'll be implemented in real life. I personally believe we should throw out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 whole x86 architecture racá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r than cobbling togecá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365r "trusted" extensions.
The Intel programming manual is available here:
http://software.intel.com/sites/default/files/329298-001.pdf
/CF
Great analysis :)
One thing about those enclaves is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y run at ring 3 and anything cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y do with cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 external world is visible to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 OS. You noted this regarding cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 I/O, but if cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re is malware in an enclave - you can know exactly what it is doing (beside reading memory probably). every system call can be tracked, so cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 risk of malware is not that big (maybe a 'sleeping' malware that wait for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right moment is a problem, but still you can monitor this).
I wonder if SGX can protect against buffer overflow control-hijack attacks or ret-2-libc attacks.
Have I missed something or is cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 only thing which stops me from emulating cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 processor that I don't know cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 secret signing key?
If so this would mean that when this technology is used widely this key would be targeted by many groups.
And in contrast to software keys cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re would be no change to replace it.
SGX is now in Intel SDM.
A question, Joanna, you mentioned that we're not sure if VT-x has a flaw that lead to EPT or functionalities bypassed.
Recently actually some of ideas are coming out in my mind to consider if we can break VT-x or get something internals for VT-x behaviors. Do you think it is valid thinking? see my blog -
http://hypervsir.blogspot.com/2014/09/thoughts-on-vmxon-and-vmcs-regions-in.html
I'm sure you are up on cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 newest research, but just in case you missed it here is an interesting paper/presentation from Microsoft Research attempting, with some success, to use SGX to create a "trusted cloud" execution environment.
Post a Comment