4 ms·
47 upvotes, no comments. I'm guessing no one understands this.
by asdfaoeu 6y ago
47 upvotes, no comments. I'm guessing no one understands this.
- jacobush 6y agoYep. Was hoping for someone to debunk or explain. My (probably deeply flawed) hunch was that one would need some kind of specialised virtual machine or something to make homomorphic stuff. I'm babbling now. Yes, someone please explain Cingulata.
- qayxc 6y agoCingulata is a system for secure, privacy preserving applications based on homomorphic encryption. Homomorphic encryption is a form of cryptography that allows for operations on encrypted content to yield the same results (though encrypted) as if applied to plain text input. Basically, the framework takes algorithms implemented in C++ into a virtual boolean circuit that operates on encrypted data. This means you can run your database, AI training, page ranking, etc. on encrypted data for a truly end-to-end encrypted processing or computation on untrusted devices or environments (cloud computing!). This comes at a price, though, as the virtual circuit is basically a software interpreter for your original algorithm and thus is abysmally slow compared to the original code... At least that's my understanding of the system.
- radres 6y agoSo I can give an executable to anyone in the world and they cannot get to my source code?
- layoutIfNeeded 6y agoNo. You have a function F which maps inputs x to outputs y. You transform this function into new one F', that will map the encrypted inputs encrypt(x) to the encrypted outputs encrypt(y), without knowing how to decrypt. F(x) = y F'(encrypt(x)) = encrypt(y)
- russfink 6y agoThis is correct. Additionally, the entity performing the computation does not get to learn the answer. This is an important distinction between a technique such as this, and software obfuscation.
- aruss 6y agoNot quite. The data is encrypted, the computation is not. Through the use of universal circuits (circuits that run other circuits) you could give an encrypted executable to an untrusted party to run on encrypted data, but note that the result of this computation is encrypted as well (so, the executable would be useless for the other party -- only you would be able to use the results). In fact, this idea underpins the crucial idea behind FHE: bootstrapping.
- marius_k 6y agoAre these operations encrypted also? Is this method more efficient rather than returning a mapping of all possible unencrypted inputs and outputs for a given operation. [edit] I just did the math. 1. mapping of adding two bytes would make ~64kB list of values. 2. mapping of adding two i32 would make ~73786976294838.2MB list of values (looks like encryption would do a better job)
- aruss 6y agoIt's a requirement of these algorithms that they run in polynomial time with respect to the size of the input. They're large polynomials with big constants, but they're dwarfed by the exponentials you're considering.