TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

An open-source fully homomorphic encryption library

127 pointsby cirwinabout 12 years ago

12 comments

drostieabout 12 years ago
"Fully homomorphic" means "a computation can be done on two encrypted values without decrypting them." It is an extension of <i>partially homomorphic</i> systems, which allow some computation which cannot be extended to arbitrary computations.<p>A good usage case for partially homomorphic systems is public elections. Suppose given E(x) and E(y) you can efficiently compute E(x + y). Now imagine that you arrange a set of bit-fields as:<p><pre><code> 1000 1100 0111 0111 0100 1110 0010 1001 (random) (check bits) (votes Alice) (votes Bob) </code></pre> In other words, the current vote tally is being represented as a number E(0x8C774E29). You can now create two ballots, E(0xBF010100) and E(0xBF010001). You can add either of those ballots to the vote tally even though you cannot read the vote tally. We can make all of these numbers public knowledge without disclosing your vote -- i.e. a public database can say "Alice's vote was E(0xBF010100)" and "Bob's vote was E(0xDB010001)" and once that encryption is performed, third parties cannot actually verify that Alice didn't vote for Bob or vice versa. So any member of the population can take the public database and confirm that the arithmetic was done properly on the encrypted vote tallies, without figuring out what the actual votes were. Then at the highest level, the tally can be decrypted to find out that Alice won the vote, without disclosing exactly who voted for her. The "check bits" form here a sum of votes as a quick check that someone didn't just add some random ballot in there to screw with the system.<p>Of course, you need more bits as you want to have more candidates and more voters; and there are problems with confirming that a number looks like 0x010100 and not 0x050500. But fundamentally you can get these really cool cryptographic voting systems which preserve the anonymity of your vote at the lowest level, but can be audited at the lowest level (i.e. we can potentially remove votes, say, from people who were not alive at the time of the election), the votes have perfectly auditable mathematics up to the regional level due to the public databases of encrypted votes; and then once the population is large enough to suitably anonymize the vote, you can decrypt and tally votes publicly too.<p>Now that's if you just have some function esum such that esum(E(x), E(y)) = E(x + y).<p>If you have enough to make a full set of logical gates, you could in principle do an entire computation on a set of inputs which you couldn't possibly know, so that the "cloud" could "compute" with your data without ever actually knowing it.
评论 #5632347 未加载
评论 #5631469 未加载
评论 #5634481 未加载
评论 #5631568 未加载
评论 #5633877 未加载
StavrosKabout 12 years ago
This is not terribly on-topic, but, if you're interested in cryptography, Dan Boneh (Craig Gentry's advisor) is currently giving a Coursera course on it:<p><a href="https://class.coursera.org/crypto-006/class" rel="nofollow">https://class.coursera.org/crypto-006/class</a><p>I'd highly recommend it, it's amazingly interesting, and Boneh is very good at explaining things. I used to think that cryptography was hopelessly impenetrable, but it turns out most algorithms (well, mostly symmetric cryptography) are simple to understand. We're currently at asymmetric crypto and the math's starting.
评论 #5631849 未加载
评论 #5631896 未加载
symmetricsaurusabout 12 years ago
The README has lots of really cool words and names and things. But it doesn't say what homomorphic encryption is or what it is good for. Could someone enlighten me?
评论 #5631001 未加载
评论 #5631005 未加载
评论 #5631552 未加载
评论 #5631004 未加载
评论 #5632924 未加载
评论 #5631121 未加载
nraynaudabout 12 years ago
I skimmed some docs, and I can't find the list of operation that can be done with that. Is it numerical stuff like addition/multiplication? Is it text editing?
评论 #5631445 未加载
jychangabout 12 years ago
It's basically this, <a href="http://eurocrypt2010rump.cr.yp.to/9854ad3cab48983f7c2c5a2258e27717.pdf" rel="nofollow">http://eurocrypt2010rump.cr.yp.to/9854ad3cab48983f7c2c5a2258...</a> , I think. I wonder what the performance numbers are.
评论 #5636247 未加载
Zarathustabout 12 years ago
While I greatly applaud the effort of implementing such a complex crypto scheme, I'm afraid I will have to wait years before using something like this. Who wants to be the early adopter of a cryptographic library?
JacobiXabout 12 years ago
Holomorphic encryption is a very interesting concept especially in a cloud setting. One could perform some operations on encrypted client data. But I don't know if it's mature enough.
评论 #5631506 未加载
doe88about 12 years ago
For those trying to compile it, you'll need to install the last version (6.0.0) of NTL (the Ubuntu package from 13.04 does not provide this version).
tocommentabout 12 years ago
could you use something like this to make an anonymous bitcoin protocol?
评论 #5631928 未加载
escaped_hnabout 12 years ago
I thought homomorphic encryption wasn't secure or complete due to the fiaso that happened on SE earlier this month?
评论 #5632141 未加载
topbananaabout 12 years ago
OK, I read this as homeopathic. I need some sleep
kvakvsabout 12 years ago
GPL? That doesn't encourage too many uses of this code. Especially for commercial purposes.
评论 #5631101 未加载
评论 #5631099 未加载
评论 #5631295 未加载
评论 #5631133 未加载
评论 #5631939 未加载