3 ms·
Employees 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 ha
by dpark 9y ago
Employees 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/
- dpark 9y agoThat's pretty cool, and a good write-up, too. Thanks for the link. Obviously still doesn't help for the GMail case unless Google starts publishing their code, and they pretty much give up on email search, and somehow the whole chain of email cross-provider lands in these enclaves, but it's very interesting.