Hacker News new | ask | show | jobs
by dimino 4002 days ago
Wait wait what? So I can send my (locally encrypted) CC info into an Enigma-enabled CC processor, and they can deduct an amount from my account without ever actually knowing my account info?

Or more like I can send an encrypted list of passwords and they can tell me what the most common letter is in all the passwords without ever knowing any of the passwords?

If these things aren't possible, can someone provide a useful example of this being used to solve a problem? I'm having a bit of trouble actually understanding what this is/does.

4 comments

I don't know about CC processing, because... banks and regulations.

But what fully homomorphic encryption allows you to is to perform arbitrary computations on encrypted data.

So you send your encrypted data to a machine, it performs the computation, and sends it back to you still encrypted. Like the password list example you mentioned.

What is cool about this is that is solves the problem with privacy in cloud computing platforms. You don't expose your data.

NOTE: I'm not a cryptographer nor haven't read the article yet. Just writing what I can remember.

I recall something similar to this recently on HN, http://www.zerodb.io/. Are they using homomorphic encryption here?

Would homomorphic encryption make it possible for cloud hosting to run a website without knowing the code that is being ran?

ZeroDB here. We're not homomorphic, and it is possible to make a cloud hosting you're talking about w/o homomorphic encryption.

But if you are to perform heavy computing on server side, you have to be homomorphic. Or other amazing opportunities like decentralized key management, content tokenization (DRM) etc appear from this homomorphic work (even if the speed is 100 times slower than unencrypted)

This isn't fully homomorphic encryption though only somewhat homomorphic encryption. Addition and things that can be done with routines that only use addition would be able to be performed on the encrypted data, but other operations would not.

Or at least having skimmed the white paper, and having some background in this, that was my take away.

EDIT: Your explanation of homomorphic encryption is a good way to explain it at a level people can understand just what a breakthrough a workable implementation would be.

Ah, thanks for the edit. I've read about homomorphic computing a while ago, and I was getting excited, but there's still no fully homomorphic implementation, is that right?

Is there at least proof that it is possible? This would be amazing technology.

I believe there is a proof of concept which if implemented would be trillions of time slower, so lets say kinda? 100x slower as is the case with this method would be amazing if they managed to get make it fully homomorphic eventually and keep that speed.
It doesn't seem like anything is actually encrypted, just randomly distributed amongst nodes in small enough pieces so as not to provide any useful information about the original data.

Since the paper states that all nodes must collude to recover (not decrypt) the data I would assume that the pieces are encrypted asymmetrically for each node to ensure a sufficiently powerful man in the middle (cough NSA) doesn't just reassemble the pieces.

This is actually a form of encryption (See - https://en.wikipedia.org/wiki/Threshold_cryptosystem). It is encrypted in the sense that combining any number of pieces smaller than the defined threshold won't leak even a single bit of information.
The difference is encryption is usually associated with obscuring data with a key that you keep secret. In this system you broadcast out all the pieces needed to reconstruct the data. No secrets, just inconvenience due to distribution. It is not very inconvenient for an adversary that is already collecting all of your communications.
I would assume that one could just use asymmetric crypto to send the parts of the data to the different parties?
I'm still waiting for a distributed program that stores its own private bitcoin wallet keys using homomorphic encryption to keep the keys secret. Can Enigma do that? Doesn't sound like it's quite there yet, but the direction is very interesting.
From the whitepaper:

8.10 Bitcoin Wallet

1. Decentralized private key generation – Multiple Enigma nodes locally create a segment of the key, whereas the full key is only ever assembled by the user. No trail of evidence is left anywhere.

2. Decentralized transaction signing – Transactions signed without ever exposing the private key or leaving a trail.

3. Decentralized controls - Set spending limits, multi-sig, CHECKLOCKTIMEVERIFY like controls, and more with a private script. Lock time,

OK, so the secret can be generated in decentralized fashion. From reading this, I can't tell if the secret is only obtainable at the client, or does this mean that the enigma network could in effect store the pieces of the key and re-assemble it based on some pre-agreed computation that is not subject to modification by any particular user?
(Enigma here). Yes, that is possible. You can distribute a key to the nodes and make it retrievable only if some computation is satisfied (which is also done privately and leaks no information).

We have some ideas on how to do it, but we're hoping gifted developers out there would use our platform to develop such highly-needed applications (that would probably be much better than what we have in mind).

Oh wow. Do you have a github repo?)
We'll be releasing one soon!
This is very exciting!
Thanks! We think so too :)!
I was thinking of it more like a distributed supercomputer that can tackle large amounts of data without actually knowing what the data is, so it can be trusted with tasks that might otherwise have to be kept on local clusters. Crunching genome data for medical patients or something might be a good example of having to comb through lots of private data.
One of Enigma's creators here. Indeed, that's a very prominent application that is one of many to motivate our work!