Prepare-and-Send Verifiable Universal Blind Quantum Computation: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 47: Line 47:
* <math>|+\rangle_{\theta_i}</math>:  <math>\frac{1}{\sqrt{2}} (|0\rangle +e^{i\theta_i}|1\rangle)</math>
* <math>|+\rangle_{\theta_i}</math>:  <math>\frac{1}{\sqrt{2}} (|0\rangle +e^{i\theta_i}|1\rangle)</math>
* <math>\phi_i</math>: True measurement angle for qubit <math>i</math>.
* <math>\phi_i</math>: True measurement angle for qubit <math>i</math>.
* <math>\phi^{'}_i</math>: Updated version of measurment angle for qubit <math>i</math>.
* <math>r \in \{ 0, 1\}</math>: randomly chosen parameter for <math>\pi</math> rotation in order to hide classical output.
* <math>r \in \{ 0, 1\}</math>: randomly chosen parameter for <math>\pi</math> rotation in order to hide classical output.
* <math>\theta^{'}_i</math>: Updated version of Random local phase angle for qubit <math>i</math>.
* <math>\delta_i</math>: Final measurement angle for qubit <math>i</math>.
* <math>\delta_i</math>: Final measurement angle for qubit <math>i</math>.
* <math>b_i</math>: Measurement output by the server.
* <math>b_i</math>: Measurement output by the server.
Line 83: Line 83:
* The client prepares <math>|e\rangle = X^{x1}_1 Z_1(\theta_1) \otimes ... \otimes X^{xn}_n Z_n(\theta_n)|I\rangle</math> using QOTP.
* The client prepares <math>|e\rangle = X^{x1}_1 Z_1(\theta_1) \otimes ... \otimes X^{xn}_n Z_n(\theta_n)|I\rangle</math> using QOTP.
* Client randomly chooses <math>t</math>, where <math>t \in D</math>.
* Client randomly chooses <math>t</math>, where <math>t \in D</math>.
* For <math>i = n+1, n+2, ....m</math>:
* For <math>i = n+1, n+2, ....m</math> (non-input qubits):
** if <math>i \in D</math>:
** if <math>i \in D</math>:
*** if <math>i != t</math> then state <math>|0\rangle</math> or <math>|1\rangle</math> is prepared
*** if <math>i != t</math> then state <math>|0\rangle</math> or <math>|1\rangle</math> is prepared
*** if <math>i == t</math> then <math>|+\rangle_{\theta_i}</math> is prepared
*** if <math>i == t</math> then <math>|+\rangle_{\theta_i}</math> is prepared
** if <math>i</math> == non-input qubit then <math>|+\rangle_{\theta_i}</math> is prepared
** else <math>|+\rangle_{\theta_i}</math> is prepared
* For <math>l = 1, 2, ...n</math>:
* <math>\forall l\epsilon\{1,..,n\}</math>, Client sends all qubits to server.
** The client sends the qubits to the server.




'''Stage 2: '''Server's preparation:</br>
'''Stage 2: '''Server's preparation:</br>
'''Output''': Cylinder brickwork state which has a disentangled trap qubit.
'''Input''': <math>m</math> qubits sequentially.</br>
'''Output''': entangled graph state with a disentangled trap qubit.
* Server creates an entangled state from all received qubits using CZ operations according to their indices and creates the cylinder brickwork state.
* Server creates an entangled state from all received qubits using CZ operations according to their indices and creates the cylinder brickwork state.


Line 100: Line 100:
'''Output''': <math>b_i</math>
'''Output''': <math>b_i</math>


* For <math>i = 1, 2, ... m-n</math>:  
* For <math>i = 1, 2, ... m-n</math> (received qubits):  
** Client computes <math>\phi_i</math>.
** Client computes <math>\phi_i</math>.
*** if <math>i == t</math>:
*** if <math>i == t</math>, then <math>\phi_i = 0</math>
**** <math>\phi_i = 0</math>
** Client randomly selects <math>r_i</math> and generates <math>\theta'_i = \theta_i + r_i</math>.
** Client randomly selects <math>r_i</math>.
** Client then computes the angle <math>\delta_i = \phi_i + \sum_{j:i \in N_g(f(j)}\theta'_i + s_i\pi</math> and sends <math>\delta_i</math> to server.
** Client then computes the angle <math>\delta_i</math> and sends this to the server.
** Server measures <math>i</math> and sends <math>b_i</math> to client.
<div style="text-align: center;"><math>\delta_i = \phi^{'}_i + \theta_i + r_i\pi</math></div>
** Client sets the value <math>s_i = b_i \oplus r_i</math> in <math>s</math>
** Server measures <math>b_i</math> and sends it to client.
** Client sets the value of <math>s_i</math> in <math>s</math> to be <math>b_i \oplus r_i</math>.


'''Stage 4: '''Verification:</br>
'''Stage 4: '''Verification:</br>
'''Input''': Output qubits <math>m-n+1</math> to <math>m</math></br>
'''Input''': Output qubits <math>m-n+1</math> to <math>m</math></br>
'''Output''': Verification result
'''Output''': Verification result
* For <math>i = m-n+1, ... m</math>:  
* For <math>i = m-n+1, ... m</math> (output qubits):  
** Server sends output qubit <math>i</math> to client.
** Server sends <math>i</math> to client.
* Client measures the output trap qubit <math>t</math> (which was disentangled) with angle <math>\delta_t = \phi_t + r_t\pi</math>.  
* Client measures the output trap qubit <math>t</math> (which was disentangled) with angle <math>\delta_t = \phi_t + r_t\pi</math>.  
** Client obtains the result <math>b_t</math>.
** Client obtains the result <math>b_t</math>.
*** If <math>b_t == r_t</math>:
*** If <math>b_t == r_t</math>, then computation is accepted.
**** Computation is accepted.
*** else, computation is rejected.
*** else:
**** Computation is rejected.


==Further Information==
==Further Information==
<div style='text-align: right;'>''*contributed by Rhea Parekh''</div>
<div style='text-align: right;'>''*contributed by Rhea Parekh''</div>
Write, autoreview, editor, reviewer
3,125

edits