# Microsoft SEAL
Microsoft SEAL is an easy-to-use open-source ([MIT licensed](LICENSE)) homomorphic encryption library developed by the Cryptography and Privacy Research Group at Microsoft.
Microsoft SEAL is written in modern standard C++ and is easy to compile and run in many different environments.
For more information about the Microsoft SEAL project, see [sealcrypto.org](https://www.microsoft.com/en-us/research/project/microsoft-seal).
This document pertains to Microsoft SEAL version 4.0.
Users of previous versions of the library should look at the [list of changes](CHANGES.md).
## News
The [BGV scheme](https://eprint.iacr.org/2011/277) is now available in Microsoft SEAL.
Implementation details are described in [this paper](https://eprint.iacr.org/2020/1481.pdf).
We truly appreciate [Alibaba Gemini Lab](https://alibaba-gemini-lab.github.io/) for making massive efforts to develop the BGV scheme and integrate it in Microsoft SEAL. And we would like to thank Privacy Technologies Research, Intel Labs, for continous testing and reporting issues.
Starting from version 3.7.2, Microsoft SEAL will push new changes to the `main`, `master`, and `contrib` branches without creating a new version.
We adopt this approach to merge community contribution and resolve issues in a timely manner.
These branches will stay ahead of the latest version branch/tag.
New versions will be created when there are important bug fixes or new features.
The [EVA compiler for CKKS](https://arxiv.org/abs/1912.11951) is available at [GitHub.com/Microsoft/EVA](https://GitHub.com/Microsoft/EVA). See [CKKS Programming with EVA](#ckks-programming-with-eva) below for more information.
The [SEAL-Embedded for CKKS Encryption](https://tches.iacr.org/index.php/TCHES/article/view/8991) is available at [Github.com/Microsoft/SEAL-Embedded](https://github.com/microsoft/SEAL-Embedded).
The [APSI library for Asymmetric PSI](https://eprint.iacr.org/2021/1116) is available at [Github.com/Microsoft/APSI](https://github.com/microsoft/APSI).
## Contents
- [Introduction](#introduction)
- [Core Concepts](#core-concepts)
- [Homomorphic Encryption](#homomorphic-encryption)
- [Microsoft SEAL](#microsoft-seal-1)
- [Getting Started](#getting-started)
- [Optional Dependencies](#optional-dependencies)
- [Intel HEXL](#intel-hexl)
- [Microsoft GSL](#microsoft-gsl)
- [ZLIB and Zstandard](#zlib-and-zstandard)
- [Installing from NuGet Package](#installing-from-nuget-package-windows-linux-macos-android-ios)
- [Examples](#examples)
- [CKKS Programming with EVA](#ckks-programming-with-eva)
- [Building Microsoft SEAL Manually](#building-microsoft-seal-manually)
- [Building C++ Components](#building-c-components)
- [Requirements](#requirements)
- [Building Microsoft SEAL](#building-microsoft-seal)
- [Installing Microsoft SEAL](#installing-microsoft-seal)
- [Building and Installing on Windows](#building-and-installing-on-windows)
- [Building for Android and iOS](#building-for-android-and-ios)
- [Building for WebAssembly](#building-for-webassembly)
- [Basic CMake Options](#basic-cmake-options)
- [Advanced CMake Options](#advanced-cmake-options)
- [Linking with Microsoft SEAL through CMake](#linking-with-microsoft-seal-through-cmake)
- [Examples, Tests, and Benchmark](#examples-tests-and-benchmark)
- [Building .NET Components](#building-net-components)
- [Windows, Linux, and macOS](#windows-linux-and-macos)
- [Android and iOS](#android-and-ios)
- [Using Microsoft SEAL for .NET](#using-microsoft-seal-for-net)
- [Building Your Own NuGet Package](#building-your-own-nuget-package)
- [Contributing](#contributing)
- [Citing Microsoft SEAL](#citing-microsoft-seal)
- [Acknowledgments](#acknowledgments)
## Introduction
### Core Concepts
Most encryption schemes consist of three functionalities: key generation, encryption, and decryption.
Symmetric-key encryption schemes use the same secret key for both encryption and decryption; public-key encryption schemes use separately a public key for encryption and a secret key for decryption.
Therefore, public-key encryption schemes allow anyone who knows the public key to encrypt data, but only those who know the secret key can decrypt and read the data.
Symmetric-key encryption can be used for efficiently encrypting very large amounts of data, and enables secure outsourced cloud storage.
Public-key encryption is a fundamental concept that enables secure online communication today, but is typically much less efficient than symmetric-key encryption.
While traditional symmetric- and public-key encryption can be used for secure storage and communication, any outsourced computation will necessarily require such encryption layers to be removed before computation can take place.
Therefore, cloud services providing outsourced computation capabilities must have access to the secret keys, and implement access policies to prevent unauthorized employees from getting access to these keys.
### Homomorphic Encryption
Homomorphic encryption refers to encryption schemes that allow the cloud to compute directly on the encrypted data, without requiring the data to be decrypted first.
The results of such encrypted computations remain encrypted, and can be only decrypted with the secret key (by the data owner).
Multiple homomorphic encryption schemes with different capabilities and trade-offs have been invented over the past decade; most of these are public-key encryption schemes, although the public-key functionality may not always be needed.
Homomorphic encryption is not a generic technology: only some computations on encrypted data are possible.
It also comes with a substantial performance overhead, so computations that are already very costly to perform on unencrypted data are likely to be infeasible on encrypted data.
Moreover, data encrypted with homomorphic encryption is many times larger than unencrypted data, so it may not make sense to encrypt, e.g., entire large databases, with this technology.
Instead, meaningful use-cases are in scenarios where strict privacy requirements prohibit unencrypted cloud computation altogether, but the computations themselves are fairly lightweight.
Typically, homomorphic encryption schemes have a single secret key which is held by the data owner.
For scenarios where multiple different private data owners wish to engage in collaborative computation, homomorphic encryption is probably not a reasonable solution.
Homomorphic encryption cannot be used to enable data scientists to circumvent GDPR.
For example, there is no way for a cloud service to use homomorphic encryption to draw insights from encrypted customer data.
Instead, results of encrypted computations remain encrypted and can only be decrypted by the owner of the data, e.g., a cloud service customer.
Most homomorphic encryption schemes provide weaker security guarantees than traditional encryption schemes. You need to read [SECURITY.md](SECURITY.md) if you are thinking of building production software using Microsoft SEAL.
### Microsoft SEAL
Microsoft SEAL is a homomorphic encryption library that allows additions and multiplications to be performed on encrypted integers or real numbers.
Other operations, such as encrypted comparison, sorting, or regular expressions, are in most cases not feasible to evaluate on encrypted data using this technology.
Therefore, only specific privacy-critical cloud computation parts of programs should be implemented with Microsoft SEAL.
It is not always easy or straightfoward to translate an unencrypted computation into a computation on encrypted data, for example, it is not possible to branch on encrypted data.
Microsoft SEAL itself has a steep learning curve and requires the user to understand many homomorphic encryption specific concepts, even though in the end the API is not too complicated.
Even if a user is able to program and run a specific computation using Microsoft SEA
没有合适的资源?快使用搜索试试~ 我知道了~
安装同态加密包 pyfhel 3.4.1版本
共460个文件
cpp:120个
h:88个
cs:63个
5星 · 超过95%的资源 需积分: 0 3 下载量 54 浏览量
2023-06-05
20:40:29
上传
评论
收藏 2.41MB ZIP 举报
温馨提示
安装同态加密包 pyfhel 3.4.1版本
资源推荐
资源详情
资源评论
收起资源包目录
安装同态加密包 pyfhel 3.4.1版本 (460个子文件)
gradlew.bat 2KB
make.bat 782B
fips202.c 19KB
blake2b.c 10KB
blake2xb.c 6KB
setup.cfg 21B
.clang-format 4KB
SEALMacros.cmake 4KB
CheckCXXIntrinsicsSpecific.cmake 2KB
ExternalBenchmark.cmake 2KB
EnableCXX17.cmake 1KB
ExternalZLIB.cmake 1KB
functions.iOS.cmake 1KB
ExternalZSTD.cmake 1KB
ExternalIntelHEXL.cmake 1KB
CheckCXXIntrinsicsHeader.cmake 1018B
EnableCXXCompilerFlags.cmake 960B
CleanArtifacts.cmake 897B
ExternalGTest.cmake 850B
ExternalMSGSL.cmake 754B
CheckMemset.cmake 582B
packages.config 119B
evaluator.cpp 258KB
evaluator.cpp 110KB
uintarith.cpp 76KB
rns.cpp 52KB
8_performance.cpp 49KB
encryptor.cpp 46KB
rns.cpp 45KB
context.cpp 39KB
Afseal.cpp 38KB
polyarithsmallmod.cpp 34KB
ztools.cpp 33KB
uintcore.cpp 25KB
uintarith.cpp 23KB
mempool.cpp 23KB
evaluator.cpp 22KB
context.cpp 21KB
uintarithsmallmod.cpp 20KB
1_bfv_basics.cpp 20KB
keygenerator.cpp 19KB
iterator.cpp 19KB
7_serialization.cpp 19KB
decryptor.cpp 19KB
rlwe.cpp 18KB
serialization.cpp 18KB
ntt.cpp 17KB
mempool.cpp 17KB
batchencoder.cpp 16KB
ciphertext.cpp 15KB
common.cpp 14KB
ciphertext.cpp 14KB
3_levels.cpp 14KB
5_ckks_basics.cpp 14KB
uintarithmod.cpp 14KB
plaintext.cpp 14KB
valcheck.cpp 14KB
numth.cpp 13KB
2_encoders.cpp 13KB
keygenerator.cpp 13KB
bench.cpp 13KB
streambuf.cpp 12KB
polyarithsmallmod.cpp 12KB
ckks.cpp 12KB
modulus.cpp 11KB
stringtouint64.cpp 11KB
galoiskeys.cpp 10KB
serialization.cpp 10KB
bgv.cpp 10KB
uintarithmod.cpp 10KB
randomgen.cpp 10KB
relinkeys.cpp 10KB
ciphertext.cpp 10KB
plaintext.cpp 9KB
ckks.cpp 9KB
encryptor.cpp 9KB
locks.cpp 9KB
dynarray.cpp 8KB
4_bgv_basics.cpp 8KB
galois.cpp 8KB
plaintext.cpp 8KB
modulus.cpp 8KB
numth.cpp 8KB
scalingvariant.cpp 8KB
ckks.cpp 8KB
encryptionparameters.cpp 8KB
modulus.cpp 8KB
encryptor.cpp 7KB
kswitchkeys.cpp 7KB
6_rotation.cpp 7KB
bfv.cpp 7KB
globals.cpp 7KB
uint64tostring.cpp 7KB
ckksencoder.cpp 7KB
randomgen.cpp 7KB
Demo_Afseal_batch.cpp 7KB
polycore.cpp 6KB
encryptionparams.cpp 6KB
uintarithsmallmod.cpp 6KB
keygenerator.cpp 6KB
共 460 条
- 1
- 2
- 3
- 4
- 5
资源评论
- m0_703520142024-01-20下载了之后该怎么安装啊
李良生
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功