Microsoft SEAL
{{Infobox software
| name = Microsoft SEAL
| screenshot = Microsoft-SEAL.png
| screenshot alt = Microsoft SEAL example of homomorphic encryption
| developer = Microsoft Research
| released = {{Start date and age|2018|12|03}}
| latest release version = 4.0.0
| latest release date = {{Start date and age|2022|03|17}}
| repo = {{URL|https://github.com/Microsoft/SEAL}}
| programming language = C++
| operating system = Microsoft Windows, macOS, Linux, Android
| platform = IA-32, x86-64, ARM64
| genre = Homomorphic encryption library
| license = MIT License
| website = {{URL|https://www.microsoft.com/en-us/research/project/microsoft-seal}}
}}
Simple Encrypted Arithmetic Library or SEAL is a free and open-source cross platform software library developed by Microsoft Research that implements various forms of homomorphic encryption.{{Citation|title=Microsoft SEAL is an easy-to-use and powerful homomorphic encryption library.: microsoft/SEAL|date=2019-11-20|url=https://github.com/microsoft/SEAL|publisher=Microsoft|access-date=2019-11-20|archive-url=https://web.archive.org/web/20190531131953/https://github.com/microsoft/SEAL|archive-date=2019-05-31}}{{Cite book|url=https://books.google.com/books?id=OT2jDgAAQBAJ&pg=PA104|title=Advances in Cryptology – EUROCRYPT 2017: 36th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Paris, France, April 30 – May 4, 2017, Proceedings|last1=Coron|first1=Jean-Sébastien|last2=Nielsen|first2=Jesper Buus|date=2017-04-10|publisher=Springer|isbn=9783319566146|pages=104|language=en}}
History
Development originally came out of the Cryptonets paper,{{Cite journal|last1=Downlin|first1=Nathan|last2=Gilad-Bachrach|first2=Ran|last3=Laine|first3=Kim|last4=Lauter|first4=Kirstin|last5=Naehrig|first5=Michael|last6=Wernsing|first6=John|date=2016-05-25|title=CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy|url=http://proceedings.mlr.press/v48/gilad-bachrach16.pdf|journal=Proceedings of the 33rd International Conference on Machine Learning|archive-url=https://web.archive.org/web/20180826211245/http://proceedings.mlr.press/v48/gilad-bachrach16.pdf|archive-date=2018-08-26}} demonstrating that artificial intelligence algorithms could be run on homomorphically encrypted data.{{Cite web|url=https://www.microsoft.com/en-us/research/blog/the-microsoft-simple-encrypted-arithmetic-library-goes-open-source/|title=The Microsoft Simple Encrypted Arithmetic Library goes open source|date=2018-12-03|website=Microsoft Research|language=en-US|url-status=live|archive-url=https://web.archive.org/web/20191112165543/https://www.microsoft.com/en-us/research/blog/the-microsoft-simple-encrypted-arithmetic-library-goes-open-source/|archive-date=2019-11-12|access-date=2019-11-20}}
It is open-source (under the MIT License) and written in standard C++ without external dependencies and so it can be compiled cross platform. An official .NET wrapper written in C# is available and makes it easier for .NET applications to interact with SEAL.
Features
= Algorithms =
Microsoft SEAL supports both asymmetric and symmetric (added in version 3.4) encryption algorithms.
= Scheme types =
Microsoft SEAL comes with two different homomorphic encryption schemes with very different properties:
- BFV:{{Cite journal|last1=Fan|first1=Junfeng|last2=Vercauteren|first2=Frederik|date=2012|title=Somewhat Practical Fully Homomorphic Encryption|url=https://eprint.iacr.org/2012/144}} The BFV scheme allows modular arithmetic to be performed on encrypted integers. For applications where exact values are necessary, the BFV scheme is the only choice.
- CKKS:{{Cite book|last1=Cheon|first1=Jung Hee|last2=Kim|first2=Andrey|last3=Kim|first3=Miran|last4=Song|first4=Yongsoo|title=Advances in Cryptology – ASIACRYPT 2017 |chapter=Homomorphic Encryption for Arithmetic of Approximate Numbers |date=2017|editor-last=Takagi|editor-first=Tsuyoshi|editor2-last=Peyrin|editor2-first=Thomas|chapter-url=https://link.springer.com/chapter/10.1007/978-3-319-70694-8_15|series=Lecture Notes in Computer Science|volume=10624|language=en|location=Cham|publisher=Springer International Publishing|pages=409–437|doi=10.1007/978-3-319-70694-8_15|isbn=978-3-319-70694-8|s2cid=3164123 }} The CKKS scheme allows additions and multiplications on encrypted real or complex numbers, but yields only approximate results. In applications such as summing up encrypted real numbers, evaluating machine learning models on encrypted data, or computing distances of encrypted locations CKKS is going to be by far the best choice.
= Compression =
Data compression can be achieved by building SEAL with Zlib support. By default, data is compressed using the DEFLATE algorithm which achieves significant memory footprint savings when serializing objects such as encryption parameters, ciphertexts, plaintexts, and all available keys: Public, Secret, Relin (relinearization), and Galois. Compression can always be disabled.
Availability
There are several known ports of SEAL to other languages in active development:
= C++ =
- [https://github.com/Microsoft/SEAL Microsoft SEAL] (Microsoft's source)
= C#/F# =
- [https://www.nuget.org/packages/Microsoft.Research.SEALNet/ NuGet] (Microsoft's official package)
= Python =
- [https://github.com/Lab41/PySEAL PySEAL]
- [https://github.com/Huelse/SEAL-Python SEAL-Python]
- [https://github.com/tf-encrypted/tf-seal tf-seal]
- [https://github.com/ibarrond/Pyfhel Pyfhel]
= JavaScript =
- [https://github.com/morfix-io/node-seal node-seal]
- [https://github.com/PrivateSky/sealjs sealjs]
= TypeScript =
- [https://github.com/morfix-io/node-seal node-seal]
References
{{Reflist}}
External links
{{Portal|Free and open-source software}}
- {{Website|https://www.microsoft.com/en-us/research/project/microsoft-seal|Microsoft SEAL: Fast and Easy-to-Use Homomorphic Encryption Library}}
- {{Github|https://github.com/Microsoft/SEAL}}
{{Microsoft FOSS}}
{{Microsoft Research}}
Category:Homomorphic encryption
Category:Cryptographic software
Category:Free and open-source software
Category:Free software programmed in C++