Write, autoreview, editor, reviewer
3,129
edits
Line 69: | Line 69: | ||
===Stage 1 Client’s Preparation=== | ===Stage 1 Client’s Preparation=== | ||
'''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 ( | ## 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 | # For i = 0 to L-1 | ||
##Client runs the procedure QFHE. | ## 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 { | # 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())''' | |||
*Input: Quantum Input state density matrix ( | *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 |