Practical homomorphic encryption over integers (2017)
arxiv.org
arxiv.org
You are exactly describing Mimblewimble.
https://github.com/ignopeverell/grin/blob/master/doc/intro.m...
The idea is that you can prove that the encrypted input and output amounts in a transaction balance to zero, without having to actually reveal what any of those amounts are.
The real-world use case is being able upload data to a cloud provider and do queries and computation on it without the provider ever knowing what's inside. e.g. "How much did I spend last month?"
Edit: Try Greg Egan's book Permutation City.
Today it's not practical, but we see advances like this every year, maybe in a decade it will be practical.
If one can spoof the canary payload effectively, one would have broken the FHE scheme, probabilistically, right?
Unless I'm thinking about this wrong, the FH part of FHE makes this a pretty solvable problem. Is this not already fundamental to any FHE scheme?
https://eprint.iacr.org/2014/202.pdf
You also have to be careful to ensure that the canary cannot be identified in the plaintext; otherwise the evaluator can homomorphically identify the canary (i.e. it can compute the canary values honestly and cheat everywhere else).
Enclaves have the downside of being a bit of a pain to use. But hell, FHE isn’t any easier.
With SGX you have to trust Intel to build CPUs that isolate securely. Meltdown, Spectre (multiple variants), bugs in Intel TXT and ME, and that's only some of the headline issues from the last 4 years.
That said you can still shave it down and start FIBing if you have the $$$.
But the encryption process is public right ? So you can encrypt just like any client ?
You want authenticated encryption instead. https://tonyarcieri.com/all-the-crypto-code-youve-ever-writt...
You can sort of build something authenticated on top of a homomorphic cryptosystem, but it's kind of a hack: https://paragonie.com/blog/2017/12/assuring-ciphertext-integ...
Bob does some computations on the encrypted data and sends you the (still-encrypted) results.
You decrypt the results to get the answer of your computation. Bob never learns what your data is or what the results are.
The term "homomorphic" roughly refers to the fact that the encrypt/decrypt functions go "outside" the computation. That is, if Bob is applying the function f, we have f(Encrypt(data)) = Encrypt(f(data)). The left side is what Bob does, the right side is what you want to get (because you can decrypt it).
EDIT. To see how cool this is, think about this: I have two numbers, I encrypt them to form long strings of gibberish. Then I have Bob perform the "multiplication" function on the gibberish and send me the result, and I am able to decrypt that to get the result of multiplying the original two numbers. If that doesn't impress you, I send Bob my database of encrypted emails, then ask him to do a string lookup for "chocolate", he sends me back the set of matching emails without ever knowing what they say or what string I looked for.
edit: reading the abstract, it looks like they don't have a faster fully homomorphic system, just some better results in the partial homomorphic domains.
Definition 1 is not really a definition; in particular it would not be useful in a proof or logical argument. Likewise with Definition 2.
The authors claim that chosen plaintext attacks are not relevant; then they claim in Theorem 3 that their system is secure against CPA. Over and over in this paper the authors refer to the need to be CPA secure when the plaintext has "insufficient entropy" so it is hard to understand why they would claim CPA security is irrelevant.
The vector version of their scheme appears to be a lattice problem, but the authors do not discuss lattice attacks that might be used against their scheme. The authors state that it is "clear" that the security of the vector version follows from the same arguments used for the integer version.
In the "FHE" section the authors do not actually construct an FHE scheme; instead they have constructed some kind of garbled circuit scheme that uses the encryption schemes proposed in the paper. No proof of security is given for that garbling scheme.
For what it's worth, this is more or less what I would have written if I had to review this for a conference and I would give this paper a "strong reject" score.
You can do anything expressible as a bounded-depth (non-cyclic) circut of eg NAND gates. You can also do something like [a][+ b][+ c][+ d], where each [] is a new homomorphic operation, which gets around the bounded-size problem somewhat, but the attacker can obviously see how many chunks you're working on, just not the content, which provides some traffic analysis vulnerabilities.
All in all, it's a very useful tool but I don't really like the way people keep presenting it a silver bullet, like "yay, once we get this working we won't have to care that the cloud is full of phantom trolleys armed with hammers!".
A set with a single operation (plus some extra properties) is called a group. The integers with addition (+) is an example of a group.
Suppose I have groups X and Y. Then a group homomorphism, h, is a mapping at that preserves the + in the two groups, so
h(x +_X y)=h(x) +_Y h(y)
Where +_X is addition in X and +_Y is addition in Y.
Homomorphic encryption means that what you used to do you encryption is a homomorphism.