Prepare-and-Send Quantum Fully Homomorphic Encryption: Difference between revisions

Line 69: Line 69:
===Stage 1 Client’s Preparation===
===Stage 1 Client’s Preparation===
   
   
'''Key Generation (QFHE.KeyGen(1k,1L))'''
'''Key Generation (QFHE.KeyGen(1k,1L))'''
*Input: No. of T gates (L), Security Parameter (k),
*Input: No. of T gates (L), Security Parameter (k),
*Output: L+1 evaluation keys (encrypted Gadgets, classical HE evaluation key), L+1 public keys, L+1 secret keys
*Output: L+1 evaluation keys (encrypted Gadgets, classical HE evaluation key), L+1 public keys, L+1 secret keys
# For i = 0 to L
# For i = 0 to L
##Client executes (pki,ski,evki) HE.KeyGen() to obtain L + 1 independent classical homomorphic key sets.
## Client executes <math>(pk_i, sk_i, evk_i) \leftarrow \text{HE.KeyGen}(1^{\kappa})</math> to obtain <math>L+1</math> independent classical homomorphic key sets.
# She sets the public key to be the tuple ( .
# She sets the public key to be the tuple <math>(pk_i)_{i = 0}^{L}</math>.
# She sets the secret key to be the tuple ( .
# She sets the secret key to be the tuple <math>(sk_i)_{i = 0}^{L}</math>.
# For i = 0 to L 1
# For i = 0 to L-1
##Client runs the procedure QFHE.GenGadgetpki+1(ski) to create the gadget Γpki+1(ski).
## Client runs the procedure <math>\text{QFHE.GenGadget}_{pk_{i+1}}(sk_i)</math> to create the gadget <math>\Gamma_{pk_{i+1}}(sk_i)</math>.  
# Client sets the evaluation key to be the set of all gadgets created in the previous step (including their encrypted classical information), plus the tuple ( . The resulting evaluation key is the classical-quantum (CQ) state {missing math}
# Client sets the evaluation key to be the set of all gadgets created in the previous step (including their encrypted classical information), plus the tuple <math>(evk_i)_{i=0}^L</math>. The resulting evaluation key is the classical-quantum (CQ) state</br><math>\bigotimes_{i = 0}^{L-1}\Big(\Gamma _{pk_{i+1}}(sk_i)\otimes |evk_i\rangle \langle evk_i|)</math>
   
   
'''Encryption(QFHE.Enc())'''
'''Encryption(QFHE.Enc())'''
*Input: Quantum Input state density matrix (ρ) (say composed of n single qubit states, σ)
*Input: Quantum Input state density matrix (<math>\rho</math>) (say composed of n single qubit states, σ)
*Output: Encrypted pad keys: {a˜[0]...a˜[n], ˜b[i]...˜b[n]}; QOTP state: Xa[1]Zb[1]⊗.....⊗Xa[n]Zb[n]ρZb[1]Xa[1]⊗ ..... ⊗ Xa[n]Zb[n]
*Output: Encrypted pad keys: {a˜[0]...a˜[n], ˜b[i]...˜b[n]}; QOTP state: Xa[1]Zb[1]⊗.....⊗Xa[n]Zb[n]ρZb[1]Xa[1]⊗ ..... ⊗ Xa[n]Zb[n]
# For i=1 to n
# For i=1 to n
Write, autoreview, editor, reviewer
3,125

edits