Questions tagged [seal]

Microsoft SEAL is a fast and user-friendly homomorphic encryption library created by Microsoft Research. It is written in C++ and works on Windows, Linux, and macOS. The most recent version of Microsoft SEAL is publicly available at https://github.com/Microsoft/SEAL.

Introduction

Microsoft SEAL is an easy-to-use homomorphic encryption library, developed by researchers in the Cryptography Research Group at Microsoft Research. Microsoft SEAL is written in standard C++ and has no external dependencies, making it is easy to compile in many different environments. The current version includes .NET Standard wrappers for the public API.

The first version of Microsoft SEAL was released at the end of 2015 and the library has since then been in constant development with several major releases per year. Microsoft SEAL is licensed under the MIT license and can be downloaded at https://github.com/Microsoft/SEAL.

Homomorphic Encryption

Homomorphic encryption refers to a new type of encryption scheme that allows computations to be directly on encrypted data without requiring decryption first. The result of such encrypted computations remains encrypted and can thus only be interpreted the owner of a secret key (in most cases the data owner). Such functionality can for example enable a cryptographically private cloud storage and computation service. In particular, Microsoft SEAL implements the BFV scheme for encrypted modular arithmetic, and the CKKS scheme for encrypted approximate fixed-precision arithmetic.

Both the BFV and the CKKS scheme are highly performant post-quantum secure RLWE-based homomorphic encryption schemes. Such encryption schemes are currently not standardized by any major standards organization, but a recently launched effort by the HomomorphicEncryption.org group attempts to instead create a consortium standard describing secure parameters, a standard API, and a programming model for several schemes, including the BFV and the CKKS schemes. Microsoft SEAL implements the secure parameters recommended by the standard.

Documentation and Questions

The GitHub repository front page provides a detailed installation guide for multiple platforms. For a hands-on learning experience, Microsoft SEAL contains extensively commented example projects demonstrating core concepts of the library. In addition, the header files contain detailed comments for the public API.

When asking questions it is important to know the specific version of Microsoft SEAL that is being used, as well as seeing the complete code producing the issue. In particular, the values set in the encryption parameters (EncryptionParameters class) are critical to know, as the behavior of the encryption scheme depends totally on these parameters. Before asking your question please look at the highest voted questions under this tag, as these tend to address many of the common issues, misunderstandings, and fundamental challenges in using Microsoft SEAL.

79 questions
1
vote
0 answers

.Net SEAL Giving 2 different answers depending on input

I have a simple BFV context and all I'm doing is SquareInplace. I get the wrong answer depending on my input values and depending on how I pull the value from plaintext. / | Encryption parameters: | Scheme: BFV | PolyModulusDegree: 8192 | …
1
vote
0 answers

Can we multiply only specific slots in ciphertexts using Microsoft SEAL?

For example : In a BFV scheme, using BatchEncoder, we have a ciphertext of some numbers [1,2,3,4,5,0,0,0.......] and we have another ciphertext - [-1, -2, -3, -4, -5, -6, 0, 0......] and we add the two together. The output for it would be -…
1
vote
0 answers

How to include multiple header files in SWIG?

Is there any way to include multiple header files with complex dependency structure in SWIG? I plan to use Microsoft SEAL( a C++ library) in Java with SWIG. However, I don't know how to deal with the complex dependency relationship in the header…
Lucas Chen
  • 11
  • 1
1
vote
1 answer

How to encrypt data frame column through PySeal library

I am doing research on Fully homomorphic encryption. Since only fully homomorphic encryption allows to perform computation on encrypted data and this mechanism provides by the PySeal library which is a python fork version of the Microsoft SEAL…
1
vote
0 answers

Seal report integration with asp.net mvc web application

I want to show seal reports with in my asp.net application, For this i have integration TestandSample application code. How can i execute report and render report with in my application. what scripting file do i required and how to change the header…
Umer J.
  • 11
  • 1
1
vote
1 answer

Apply homomorphic operations on large encrypted data

Currently experimenting on homomorphic encryption using the PALISADE library. I want to apply simple he operations like additions and multiplications on large encrypted inputs. For example input A[3200] and input B[4096] both vectors/arrays of int…
Cowas
  • 328
  • 2
  • 12
1
vote
2 answers

The form of Plaintext in real number CKKS Encoding Microsoft SEAL

I wonder about the size and form of Plaintext in CKKS Encoding for real number, taking small N for example: Input vector array = [1.1, 2.2] N = 8, scale Delta = 2^2 = 4 Number of slot = N/2 = 4 Form of Plaintext: ptx = [4.4 8.8 0.0 0.0] with size…
France
  • 29
  • 4
1
vote
0 answers

Javscript implementation of Shamir's threshold secret sharing scheme : share()

I have a project of an end-to-end verifiable online voting system. I generated the private key for encryption using the node-seal library available online. I was trying to split the private key into multiple shares using Shamir's threshold secret…
1
vote
0 answers

BFV Symmetric Key Encryption in SEAL

I'm trying to implement BFV symmetric encryption using the secret key in SEAL, as described here. (I'm aiming for the reduction of the initial message size by 50%.) However, I'm not able to produce ciphertexts with a noise budget > 0. After…
codedust
  • 11
  • 1
1
vote
1 answer

How do you choose an optimal PlainModulus in SEAL?

I am currently learning how to use SEAL and in the parameters for BFV scheme there was a helper function for choosing the PolyModulus and CoeffModulus and however this was not provided for choosing the PlainModulus other than it should be either a…
fallere456
  • 111
  • 1
1
vote
1 answer

Can we perform division operation on encrypted data using Microsoft SEAL / PySEAL library

I am using PySEAL library, which is a fork of Microsoft SEAL homomorphic encryption library to implement Machine Learning algorithms on encrypted data. For this I would need to divide numbers. In the examples.py source code there are examples to…
user11764216
1
vote
1 answer

How to access CSV file (located in pc hdd) from a docker container with python pandas?

I want to implement a Machine Learning algorithm which can operate on homomorphic data using PySEAL library. PySEAL library is released as a docker container with an 'examples.py' file which shows some homomorphic encryption example. I want to edit…
user11764216
1
vote
1 answer

SEAL-CKKS max multiplication depth

I am trying to understand how SEAL-CKKS scheme works and I wonder what multiplication level can we achieve using this scheme? Like 100 possible?
dilot
  • 67
  • 6
1
vote
1 answer

Symmetric Variant of the BFV scheme

Is it possible to encrypt a plaintext using the secret key in SEAL? Does the symmetric variant help in increasing the noise budget of the ciphertext, or improve the homomorphic evaluation in some other way?
AdveRSAry
  • 187
  • 7
1
vote
1 answer

Decoding and Decryption Error Indicators in SEAL

I know that in SEAL 2.3.1 the decoding and decryption errors will fail silently. I.e. there are no indicators for insufficient noise error or find violations of the plain_modulus, poly_modulus setting, when attempting to decode / decrypt some…
TalG
  • 677
  • 1
  • 9
  • 26