Simple Encrypted Arithmetic Library goes open source
microsoft.com
microsoft.com
Moving to MIT is great for this. As someone working on FHE, we'll finally be able to see some interesting applications with this library other than Microsoft's research. Great job to the SEAL team!
[1] https://en.wikipedia.org/wiki/Homomorphic_encryption#Fully_h...
Currently what FHE needs is better toolchain support. Selecting encodings and encryption parameters is hard, but a lot can be done with good language support and tooling. We're presenting some of our work on automatically selecting good data layouts for NNs on FHE at the PPML workshop in NIPS next weekend [1].
While the full homomorphic encryption schemes tend to be at the slower side for now, partially homomorphic systems are fast.
Non-encrypted AES operation is approximately 10.000.000 times faster.
https://tonyarcieri.com/all-the-crypto-code-youve-ever-writt...
In my experience, a lot of teams also reach for FHE to solve problems that are easily and securely solved without it (i.e. searchable encryption):
https://github.com/paragonie/ciphersweet
That being said, there is the 0.01% problem space where FHE makes perfect sense (mostly in the realm of encrypted databases and machine learning). For those systems, if the database can ever be considered adversarial (your threat model may rule this out, most applications' do not), a simple construction involving HMAC, a secure digital signature algorithm, and an append-only ledger can protect the application that reads from the database against chosen-ciphertext attacks.
https://paragonie.com/blog/2017/12/assuring-ciphertext-integ...
Selling "encryption, but not IND-CCA3" to a lot of (clueful, at least) companies is almost impossible.
If you read the linked article, it discusses a way to hack it in.
"Homomorphic encryption is a form of encryption that allows computation on ciphertexts, generating an encrypted result which, when decrypted, matches the result of the operations as if they had been performed on the plaintext."
The blog doesn't say much (to me) about the choice:
In addition to having no external dependencies, Microsoft SEAL
is written in standard C++, making it easy to compile in many
different environments.
Is Rust unsuitable for this project? If anyone here worked on SEAL, I'd love to learn more about this -- did the SEAL team consider using Rust?Where did you get that impression? The creators of Rust would undoubtedly love that to be the case, but Rust is still essentially in its infancy. To my knowledge there are almost no major projects released that have been built in Rust. It's ranked below such heavy hitters as Ada and Prolog for popularity on the TIOBE index[1]. It's pretty unlikely that Rust will become the standard language for everything crypo- or security-related anytime soon (or ever, but it could happen).
https://news.ycombinator.com/item?id=18545373
This includes Microsoft, which I forgot in that post, who uses it in production for their IOT product, and as part of Visual Studio Code.
That said, for crypto, there are some less than ideal things. That’s not stopping projects from working on it.
To support that...
Grin contains a phenomenal amount of cryptography: https://github.com/mimblewimble/grin
Bulletproofs implementation in rust (small proof sizes): https://github.com/dalek-cryptography/bulletproofs
...with tons of really well done cryptography by that group (dalek): https://github.com/dalek-cryptography
Pairing based crypto library used in the second largest distribution of Ethereum (and maybe zcash?): https://github.com/paritytech/bn
These libraries have prompted me to start learning rust (albeit slowly as I'm using Go and C at work).
But it is a big place, and some places do get to experiment.
Edit: I guess to make the point crystal clear since there's downvotes, "search engine popularity" is not equivalent to "appropriate tool for the job". Tiobe could equally be viewed as "which languages are hardest to use" or "which languages attract the most newcomers" both of which screw with search engine query rankings.
Probably in-house competence & interoperability: tons of language provide binding to C++ (including Microsoft .net framework). And I guess researchers at MSR have other things to do than to learn a new language for the sole purpose of having the approvement of one or two netizens.
This adds nothing of value to the conversation and only distracts from conversations worth having about encryption and practical applications, and shoots down the work that’s gone into this.
This adds nothing of value to the conversation and only distracts from conversations worth having about the question asked by the parent, and shoots down the work that’s gone into that comment.
One can prove the math is correct, but proving that in actual use it doesn't leave secrets behind in memory or leak information in timing variations requires guarantees that few (if any) languages provide.
OpenSSL is a C library.
Their publications are online, if one wants to see what peer reviewed works they've published: https://www.microsoft.com/en-us/research/group/cryptography-...
I don't, and I think it's dangerous to assume that. Many open source projects have systems in place for publicly reviewing and approving code, but microsoft does not have a history of conducting public code reviews for their projects. I would never assume that publicly viewable code is being reviewed by others who know what they are doing if it's not obvious that they are.
> Now, anyone can go in and verify how it works. Any backdoor would be visible in the code
I would only trust those with a high degree of mathematical knowledge, specifically around the subject of cryptography to be able review the code in any meaningful way. The rest of us can verify that it builds successfully and, well, that's about it.
Note also that the theory of homomorphic encryption has been developed in the open scientific community; all schemes and security estimates are backed up by published papers, and multiple other publicly available implementations. SEAL itself has been publicly available since 2015, although under a non-commercial license. In 2017 Microsoft helped launch the HomomorphicEncryption.org consortium for standardizing homomorphic encryption (see http://HomomorphicEncryption.org). Today, this group consists of more than 300 scientists from around the world, including partners and participants from industry (Microsoft, IBM, Duality Technologies, Intel, Google, multiple start-ups), top researchers from universities (MIT, Seoul National University, EPFL, ...), and government (e.g. NIST).
AFAIK, looking at the code for a Dual_EC_DRBG implementation wouldn't look backdoor'd as the backdoor was in the mathematics of the crypto itself.
Even if the code itself had a backdoor, a carefully hidden one may go undetected. Like a missing "goto" or a single equals sign; `if x = y`. An example here: https://freedom-to-tinker.com/2013/10/09/the-linux-backdoor-...