Thread (20 messages) 20 messages, 9 authors, 2018-12-11

Re: [PATCH v11 00/13] Intel SGX1 support

From: Josh Triplett <josh@joshtriplett.org>
Date: 2018-12-10 23:12:31
Also in: kvm, linux-crypto, lkml, platform-driver-x86

On Mon, Dec 10, 2018 at 09:27:04AM +0100, Pavel Machek wrote:
On Sun 2018-12-09 23:47:17, Josh Triplett wrote:
quoted
On Sun, Dec 09, 2018 at 09:06:00PM +0100, Pavel Machek wrote:
...
quoted
quoted
quoted
quoted
The default permissions for the device are 600.
Good. This does not belong to non-root.
There are entirely legitimate use cases for using this as an
unprivileged user. However, that'll be up to system and distribution
policy, which can evolve over time, and it makes sense for the *initial*
kernel permission to start out root-only and then adjust permissions via
udev.
Agreed.
quoted
Building a software certificate store. Hardening key-agent software like
ssh-agent or gpg-agent. Building a challenge-response authentication
system. Providing more assurance that your server infrastructure is
uncompromised. Offloading computation to a system without having to
fully trust that system.
I think you can do the crypto stuff... as crypto already verifies the
results. But I don't think you can do the computation offload.
You can, as long as you can do attestation.
You can not, because random errors are very easy to trigger for person
with physical access,
Random errors can also just happen, so if you're concerned about that
you might want to build each object on two different machines and
compare. Good luck generating the *same* random errors on two machines.

(And, of course, someone can also DoS you in any number of other ways,
such as accepting data and then never sending back a result. So you'll
need timeouts and failovers.)
quoted
quoted
quoted
As one of many possibilities, imagine a distcc that didn't have to trust
the compile nodes. The compile nodes could fail to return results at
all, but they couldn't alter the results.
distcc on untrusted nodes ... oh yes, that would be great.

Except that you can't do it, right? :-).

First, AFAICT it would be quite hard to get gcc to run under SGX. But
maybe you have spare month or three and can do it.
Assuming you don't need to #include files, gcc seems quite simple to run
in an enclave: data in, computation inside, data out.
So is there a plan to run dynamically linked binaries inside enclave?
I've seen some approaches for that, but you could also just statically
link your compiler. (Since you'd need attestation for all the individual
libraries, you'd need to know the versions of all those libraries, so
you might as well just statically link.)
Or maybe even python/shell scripts? It looked to me like virtual
memory will be "interesting" for enclaves.
Memory management doesn't seem that hard to deal with.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help