fully-homomorphic-encryption
egg
fully-homomorphic-encryption | egg | |
---|---|---|
19 | 25 | |
3,455 | 1,239 | |
0.3% | 2.7% | |
7.0 | 6.8 | |
about 2 months ago | 10 days ago | |
C++ | Rust | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fully-homomorphic-encryption
-
What are the current hot topics in type theory and static analysis?
Secure computing. This includes Fully Homomorphic Encryption AKA FHE, of which there is a language/compiler which just got released and Google's older FHE compiler. FHE is probably more "compiler" than "type system", e.g. Google's compiler works on C++. Also Security Type Systems which include Oblivious data structures and Oblivious ADTs.
-
Ask HN: Should we follow what impresses us?
I don't have any advice for you, but I do work on homomorphic encryption at Google and we have an FHE compiler project [1] (though it is likely going to change a lot in the coming year). I happen to have a math PhD, so the transition to this field was not a huge stretch, but before that I worked in supply chain optimization for data centers, and just decided this was too exciting to pass up.
[1]: https://github.com/google/fully-homomorphic-encryption/issue...
-
Spiral’s Homomorphic Encryption – Is This the Future of Privacy?
+1, and some compilers already exist to do that for you. See, e.g., Google's compiler (which I work on). https://github.com/google/fully-homomorphic-encryption
-
We’re Christian Mouchet, Jean-Philippe Bossuat, Kurt Rohloff, Nigel Smart, Pascal Paillier, Rand Hindi, Wonkyung Jung, various researchers and library developers of homomorphic encryption to answer questions about homomorphic encryption and why it’s important for the future of data privacy! AMA
Once the tools are written, you should be able to take a program written in some language foo and transpile it to a FHE version of foo. See Google's C++ to FHE-C++ transpiler. Thus, you can test/debug your application without FHE before transpiling to something that is FHE.
- Google releases C++ Transpiler for Fully Homomorphic Encryption
- Fully Homomorphic Encryption by Google
- Fully homomorphic encryption (Google GitHub)
- r/crypto - Fully Homomorphic Encryption by Google
- Fully Homomorphic Encryption (FHE)
egg
-
An Introduction to Graph Theory
Maybe program optimization?
https://egraphs-good.github.io/
- The E-graph extraction problem is NP-complete
-
What is the state of the art for creating domain-specific languages (DSLs) with Rust?
For semantic analyzers, check out egg and egglog. They're custom data structures for representing compiler rewrite rules in a non-destructive way.
-
Ask HN: What is new in Algorithms / Data Structures these days?
E-graphs are pretty awesome, and worth keeping in your back pocket. They're like union-find structures, except they also maintain congruence relations (i.e. if `x` and `y` are in the same set, then `f(x)` and `f(y)` must likewise be in the same set).
https://egraphs-good.github.io/
(Incidentally, union-find structures are also great to know about. But they're not exactly "new".)
-
What are the current hot topics in type theory and static analysis?
I would add that Equality saturation/E-graphs has become quite a hot topic recently, since their POPL21 paper, with workshops dedicated to applications of e-graphs. They have even recently been added to Cranelift as an IR for optimizations.
-
Compiler Optimizations Are Hard Because They Forget
Egraphs solve the rewrite ordering problem quite nicely. https://egraphs-good.github.io/
Note that one solution to this problem is to use equality saturation (which, coincidentally, has a great implementation in rust!).
-
Modularity in IR representation and modification
Have you thought about trying to parallelize e-graphs? This way you can do a bunch of rewrite rules in parallel and then extract your desired graph at the end instead of having conflicts.
-
Any recommendations for good resources that show how algorithms and data structures are converted into fpga circuits
I think the equality saturation papers are a good start. A good start is egg. They have a presentation, a research paper and code you can play with. I think ultimately you want to translate arithmetic operations into logical operation that can be understood by the fpga. So I think it would be good to research how adders and multipliers are implemented in logic and ultimately include equalities between adders/multipliers with their logical counterpart. Note the this translation also depends on the representations of your numbers and their bit width.
-
Strategies for doing symbolic integration algorithmically
For rewriting, you may also find interesing equality saturation: https://egraphs-good.github.io/
What are some alternatives?
SEAL - Microsoft SEAL is an easy-to-use and powerful homomorphic encryption library.
prose - Microsoft Program Synthesis using Examples SDK is a framework of technologies for the automatic generation of programs from input-output examples. This repo includes samples and sample data for the Microsoft Program Synthesis using Example SDK.
differential-privacy - Google's differential privacy libraries.
Symbolics.jl - Symbolic programming for the next generation of numerical software
i2pd - 🛡 I2P: End-to-End encrypted and anonymous Internet
Catlab.jl - A framework for applied category theory in the Julia language
monero - Monero: the secure, private, untraceable cryptocurrency
Dagger.jl - A framework for out-of-core and parallel execution
HElib - HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
glow - Compiler for Neural Network hardware accelerators
EVA - Compiler for the SEAL homomorphic encryption library
StaticArrays.jl - Statically sized arrays for Julia