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

Line 108: Line 108:
### if ci =H then{missing math} (Hadamard tranforms X gate into Z and Z into X)
### if ci =H then{missing math} (Hadamard tranforms X gate into Z and Z into X)
### if ci =P then<br/>{missing math}  
### if ci =P then<br/>{missing math}  
###if ci =CNOT with m as target bit and n as control bit then (CNOT)<br/>
###if ci =CNOT with m as target bit and n as control bit then (CNOT)<br/>(a˜[m],˜b[m];˜a[n],˜b[n]) → (a˜[m],˜b[m] ⊕˜b[n];˜a[m] ⊕a˜[n],˜b[n])
(a˜[m],˜b[m];˜a[n],˜b[n]) → (a˜[m],˜b[m] ⊕˜b[n];˜a[m] ⊕ a˜[n],˜b[n])
## If ci = Tj gate then (TjXa[m]Zb[m]ψ = Pa[m]Xa[m]Zb[m]Tjψ)
## If ci = Tj gate then (TjXa[m]Zb[m]ψ = Pa[m]Xa[m]Zb[m]Tjψ)
### Generate Measurement<br/>
### Generate Measurement<br/>M← QFHE.GenMeasurement(˜a[m],Γpkj+1(skj),evkj)<br/>
M← QFHE.GenMeasurement(˜a[m],Γpkj+1(skj),evkj)<br/>
### Gadget Correction<br/>(Xa0[m]Zb0[m]Tj)ψ ← QFHE.Measurement(M, Pa[m]Xa[m]Zb[m]Tjψ);<br/> Server gets measurement outcome x’,z’
### Gadget Correction<br/>
### Recryption Server recrypts one-pad key using pkk+1<br/>QFHE.Recpkk+1(a˜[m],˜b[m]).<br/>
(Xa0[m]Zb0[m]Tj)ψ ← QFHE.Measurement(M, Pa[m]Xa[m]Zb[m]Tjψ);<br/>  
Server gets measurement outcome x’,z’
### Recryption Server recrypts one-pad key using pkk+1<br/>
  QFHE.Recpkk+1(a˜[m],˜b[m]).<br/>
##Server updates the recrypted key using x,z and x’,z’.
##Server updates the recrypted key using x,z and x’,z’.
## Server sends the updated encryption and QOTP output state to Client.
## Server sends the updated encryption and QOTP output state to Client.
   
   
'''Stage 3 Client’s Correction'''  
===Stage 3 Client’s Correction===
1. Decryption (QFHE.Dec())
'''Decryption (QFHE.Dec())
Input: QOTP Circuit Output State (Xa0[1]Zb0[1] ⊗ ..... ⊗ Xa0[k]Zb0[k]ρ0Zb0[1]Xa0[1] ⊗ .....
*Input: QOTP Circuit Output State (Xa0[1]Zb0[1] ⊗ ..... ⊗ Xa0[k]Zb0[k]ρ0Zb0[1]Xa0[1] ⊗ ..... ⊗Xa0[k]Zb0[k]), Corresponding Encrypted Pad key (a˜0,b˜0)
Xa0[k]Zb0[k]), Corresponding Encrypted Pad key (a˜0,b˜0)
*Output: Final outcome of the computation CρC† = ρ0 (a) Client uses skL to restore the pad key from sent encryption. (a0[i],b0[i])=(HE.Dec [i](a0[i]),HE.Dec [i](b0[i]))
Output: Final outcome of the computation CρC† = ρ0 (a) Client uses skL to restore the pad key from sent encryption. (a0[i],b0[i])=(HE.Dec [i](a0[i]),HE.Dec [i](b0[i]))
# Client uses skL to restore the pad key from sen encryption
skL pkL
# Client uses pad key and operates Xa Zb on single qubits i separately just like encryption.<br/>Let single qubit representation of the output state be Xa0[i]Zb0[i]σ0Zb0[i]Xa0[i], then operation of Pauli X,Z gates as above yields σ0
0[i] 0[i]
# Client repeats this for all single qubits and hence gets the quantum state ρ0, final outcome of the computation.
(b) Client uses pad key and operates Xa Zb on single qubits i separately just like encryption.
Let single qubit representation of the output state be Xa0[i]Zb0[i]σ0Zb0[i]Xa0[i], then operation of Pauli X,Z gates as above yields σ0
(c) Client repeats this for all single qubits and hence gets the quantum state ρ0, final outcome of the computation.


== References ==
== References ==
Write, autoreview, editor, reviewer
3,129

edits