3 ms·
This is also true. I think the particular threat I was replying to was "can employees, on a whim, go into stored e-mail and view it?" You're right that there's
by munin 9y ago
This is also true. I think the particular threat I was replying to was "can employees, on a whim, go into stored e-mail and view it?" You're right that there's another possibility, which is that on a whim the employees will engineer a system such that they can view all the plaintext that flows into and out of your inbox.
There are maybe a few things that could be done to reduce your trust in "Honest Munin's Very Secure E-Mail Hosting and Used Cars", like, I could publish the code to the server and run it in SGX, allowing anyone in the world to use SGX attestation to verify* that the code running in SGX is the code that I publish, and that code could only initiate encrypted network connections with other mail servers. So even if I ran that in good faith and sat outside the SGX container listening to the network traffic, I'd still be getting a face-full of encrypted data.
This is still a "verify*" because maybe something is funky with SGX. You're not really trusting me now though, you're trusting Intel and the SGX TCB. Maybe that's worse? I don't know. I still think that's an improved proposition over trusting the honesty of system administrators to not grep your INBOX on a whim, though.
edit: I guess this also kind of breaks down because the story for TLS in SMTP land is kind of dire, so you could probably actively MITM the communication between the SGX blob and the outside and there's no practical way for anyone to know that this is going on. Maybe someone will fix that someday! Probably not though!
- dpark 9y agoEmployees looking on a whim is generally solved by encryption at rest with shared keys. You don’t need a unique key per user. You just need to make it really hard for the employee to get the key. Key per user doesn’t gain much except difficulty indexing for search. (I have no idea if Google encrypts email at rest, by the way.) As for SGX, it doesn’t really solve for this problem. It would allow Google to verify what software is running, but with a Google-controlled network in between the server in question and the user, I’m fairly certain any assurances SGX could yield are gone. Google could publish their code publicly, allow users to request attestation, but send attestation requests to server A running the public code while serving the user’s email on server B running NSA-modified snooping code. And of course your email isn’t actually sitting on a single machine anyway. It’s probably stored redundantly on 3+ backend machines and served by any of thousands of front end machines. Verifying each of these would be infeasible even if technically possible. (I’m not very familiar with SGX, though, so maybe there’s some magic I’m missing here.) Also attestation is for binaries. I doubt you could actually verify a source match.
- munin 9y ago> I’m not very familiar with SGX, though, so maybe there’s some magic I’m missing here. There is magic you are missing. I don't want to be the person that glibly says "you should read more about this" and then vanishes, but because I don't have time to write out what the magic is, that's exactly what I'm going to do :( The magic does allow users to verify that the software they're talking to is what it says. Specifically, it also allows users to set up an encrypted channel with the processor that is running the software that is attested, so you exactly can't do the attack you propose of shuttling attestation to one system and actual data to another. The technology is pretty cool, you should check it out!
- dpark 9y agoI don't want to glibly dismiss your comment either, but I fail to see how this helps users at all. From what I can tell, you're correct that the SGX connection can be structured such that attestation cannot be spoofed by sending the data request to a different service (assuming you trust Intel), but that doesn't really help end users. 1. Intel does not bill the technology for this purpose, which makes me doubt its fitness. SGX is very specifically billed as being for developers who want to run secure software in an untrusted environment, not for end users who don't trust the developers. These are wildly different scenarios. 2. The "encrypted channel with the processor" implies direct access to individual machines, which is impractical at Google scale. 3. The attestation is for binaries and not source, so attesting that the binaries are unchanged doesn't help users verify that the binaries match the trusted source. (Of course Google also doesn't publish the GMail source anyway.)
- haldean 9y agoSignal actually just wrote up a very detailed post about how they're using SGX to provide verification that the computer you're sending your data to is running a specific algorithm: https://signal.org/blog/private-contact-discovery/ https://signal.org/blog/private-contact-discovery/
- 9y ago