Problem 1, public key set PSI
Problem 2, public key set PSI + signature verify
Same setup as before, but question is:
Levelled BFV is different from Fully homomorphic BFV because the parameters are fixed beforehand and circuit can only perform multiplications uptill a certain depth.
It is always convenient to think of a BFV ciphertext as a vector of plaintext slots. There can be (depending on security parameter and depth of circuit) many thousands of slots. Each slot contains a plaintext and plaintext has a space modulus some prime . x,-,+ between two ciphertexts applies the same operation slot-wise. For example,
Apart from x,+,-, BFV ciphertexts have one extra trick: rotations.
For rotations, one must view vector of slots as a 2x(length_of_vector/2) matrix.
One can rotate each row right/left by arbitrary no. of slots. For example, rotating the above ciphertext to left by 1 transforms it to:
One can swap the rows as well. For example, swapping the rows transforms the ciphertext t0:
Public Key
Anyone can encrypt a message using so that only the one with access to corresponding secret key can decrypt the output.
Rilearization key
Relinerization keys are special keys in levelled HE. They are needed to reduce the degree of ciphertext after mutliplication.
A fresh ciphertext is usually referred to as a degree 1 polynomial . The reason it is called degree 1 is because the decryption structure of fresh ciphertext is with , the secret, as the variable.
Multiplication of two degree 1 ciphertexts results in a degree 2 ciphertext. For example . The decryption structure of equals . Unless we reduce degree of output ciphertext after multiplication, the degree will grow exponentially with respect to depth of the circuit (i.e. no. of multiplications)
The procedure to convert a degree 3 ciphertext to degree 2 ciphertext is referred to as relinearization. It calculates homomorphically. To do so, we require relinerization key.
Galois key
We wouldn't need rotations for PSI, so understanding of galois keys isn't necessary.
Galois keys are required to rotate ciphertexts/ swap rows. The reason they are called "Galois" keys is because ciphertext rotations are derived from galois theorem.
Multi-party BFV differs from BFV in only the key generation and decryption procedure. In BFV since the secret key is held by a single client, the client can generate all the necessary keys and decryt the ciphertext. In MP-BFV the ideal secret key is sharded among multiple parties. Key generation and decryption are multi-party protocols.
Collective public key generation
A single round protocol that outputs the collective public key. Anyone can encrpt their private input using the public key to produce a BFV ciphertext. It is important to note that no one can decrypt the ciphertext unless all parties collectivly decrypt it.
Collective relirization key generation
A two round protocol that outputs relinearization key.
Collective decryption
A single round protocol that decrypts a given BFV ciphertext.
For more inforamtion on steps of each protocol I will direct you to this document.
Let there be two parties , , and a public set of public keys of size . Denote as the public key in set . Let denote their bit vector as a vector of bits where if and only if has valid signature from public key . Otherwise .
Note: can abort after learning 's share to decrypt the ciphertext and prevent from learning the PSI output. This is a general problem in any multi-party protocol.
Note: the protocol can be easily extended to many parties at the expense of increasing communication linearly with no. of parties during key generation protocols.
For the protocol to work correctly, we will also require zero knoledge proofs for various operations. To be specific, we will require:
We're wroking on 1, 2, 3. But will require some help with 4.
Questions for jumboji team
https://github.com/Janmajayamall/MP-PSI
The prototype implements MP-PSI for 2-parties with set (i.e. can accomodate public keys) but without zero knowledge proofs.