Secure Multiparty Delegated Quantum Computation: Difference between revisions

mNo edit summary
Line 61: Line 61:


==Pseudo Code==
==Pseudo Code==
*Enforcing honest behavior for client </math>C_k</math>
*Enforcing honest behavior for client <math>C_k</math>
# Client </math>C_k</math> sends </math>m</math> qubits </math>\ket{+_{\theta_i^k}}=\frac{1}{\sqrt{2}}(\ket{0}+e^{i\theta_i^k}\ket{1})</math> to the Server and secret-shares the values </math>\{\theta_i^k\}_{i=1}^m</math> with all clients, using a VSS scheme.
# Client <math>C_k</math> sends <math>m</math> qubits <math>|+_{\theta_i^k}\rangle=\frac{1}{\sqrt{2}}(|0\rangle+e^{i\theta_i^k}|1\rangle)</math> to the Server and secret-shares the values <math>\{\theta_i^k\}_{i=1}^m</math> with all clients, using a VSS scheme.
# The Server requests the shared values from the clients for all but one qubit, and measures in the resconstructed bases. If the bases agree with the results of the measurements, then with high probability, the remaining state is correctly formed in relation to the shared angle.
# The Server requests the shared values from the clients for all but one qubit, and measures in the resconstructed bases. If the bases agree with the results of the measurements, then with high probability, the remaining state is correctly formed in relation to the shared angle.
*State preparation for </math>j\in I</math>)
*State preparation for <math>j\in I</math>)
#Server stores states received from clients </math>C_k</math> to distinct registers </math>\mathcal{S}_k\subset \mathcal{S}</math> (</math>k=1,\dots,n</math>);
#Server stores states received from clients <math>C_k</math> to distinct registers <math>\mathcal{S}_k\subset \mathcal{S}</math> (<math>k=1,\dots,n</math>);
##for </math>k=1,\dots,n-1</math>
##for <math>k=1,\dots,n-1</math>
###if </math>k=j</math> '''then''' break;
###if <math>k=j</math> '''then''' break;
###if </math>k=n-1</math> and </math>j=n</math> '''then''' break;
###if <math>k=n-1</math> and <math>j=n</math> '''then''' break;
###if </math>k=j-1</math>, '''then'''
###if <math>k=j-1</math>, '''then'''
####CNOT on </math>\mathcal{S}_k\otimes\mathcal{S}_{k+2}</math>;
####CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+2}</math>;
###'''else'''
###'''else'''
####CNOT on </math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
####CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
###measure state in </math>\mathcal{S}_k</math> and get outcome </math>t_j^k</math>;
###measure state in <math>\mathcal{S}_k</math> and get outcome <math>t_j^k</math>;
##if </math>j=n</math> '''then'''  
##if <math>j=n</math> '''then'''  
###CNOT on </math>\mathcal{S}_{n-1}\otimes\mathcal{S}_n</math>;
###CNOT on <math>\mathcal{S}_{n-1}\otimes\mathcal{S}_n</math>;
####measure state in </math>\mathcal{S}_{n-1}</math> and get outcome </math>t_n^{n-1}</math>;
####Measure state in <math>\mathcal{S}_{n-1}</math> and get outcome <math>t_n^{n-1}</math>;
###else
##else
####CNOT on </math>(\mathcal{S}_{n}\otimes\mathcal{S}_j)</math>;
###CNOT on <math>(\mathcal{S}_{n}\otimes\mathcal{S}_j)</math>;  
   
####Measure state in <math>\mathcal{S}_n</math> and get outcome <math>t_j^n</math>;
    \hspace{0.5in}measure state in </math>\mathcal{S}_n</math> and get outcome </math>t_j^n</math>;
   
    end;
   
\end{algorithm}
      
      
      
      
Line 102: Line 97:
\end{figure}
\end{figure}
      
      
    \vspace{0.3in}
====State preparation for (<math>j\in O^c\setminus I</math>)====


\begin{algorithm}[H]
# Server stores states received from clients <math>C_k</math> to distinct registers <math>\mathcal{S}_k\subset \mathcal{S}</math> (<math>k=1,\dots,n</math>);
    \floatname{algorithm}{Protocol}
# For <math>k=1,\dots,n-1</math>
    \caption{(State preparation for </math>j\in O^c\setminus I</math>)}
## CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
    \label{Algo3}
## Measure state in <math>\mathcal{S}_k</math> and get outcome <math>t_j^k</math>;
    Server stores states received from clients </math>C_k</math> to distinct registers </math>\mathcal{S}_k\subset \mathcal{S}</math> (</math>k=1,\dots,n</math>);
   
    for </math>k=1,\dots,n-1</math>
   
    \hspace{0.5in}CNOT on </math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
   
    \hspace{0.5in}measure state in </math>\mathcal{S}_k</math> and get outcome </math>t_j^k</math>;
   
    end;


\end{algorithm}
\vspace{0.2in}
   
\begin{figure}[H]
\begin{figure}[H]
     \centerline{
     \centerline{
Line 136: Line 119:
\end{figure}
\end{figure}
      
      
\begin{algorithm}[!h]
====Multiparty Quantum Computing Protocol====
    \caption{Multiparty Quantum Computing Protocol}
* A quantum input <math>\rho_{in}</math> and measurement angles <math>\{\phi_j\}_{j=1}^q</math> for qubits <math>j\in O^c</math> .
    \label{protocol}
    \begin{itemize}
        \item A quantum input </math>\rho_{in}</math> and measurement angles </math>\{\phi_j\}_{j=1}^q</math> for qubits </math>j\in O^c</math> .
    \end{itemize}
      
      
    \underline{\emph{Preparation phase}}
'''Preparation phase'''
    \begin{description}
 
        \item[quantum input:] For </math>j\in I</math>  
''Quantum input'': For <math>j\in I</math>  
        \begin{enumerate}
 
            \item Client </math>C_j</math> applies a one-time pad </math>X^{a_j}Z(\theta_j^j)</math> to his qubit, where </math>a_j\in_R\{0,1\}</math> and </math>\theta_j^j\in_R\{l\pi/4\}_{l=0}^7</math> and sends it to the Server. He secret-shares the values </math>a_j</math> and </math>\theta_j^j</math> with the other clients.
# Client <math>C_j</math> applies a one-time pad <math>X^{a_j}Z(\theta_j^j)</math> to his qubit, where <math>a_j\in_R\{0,1\}</math> and <math>\theta_j^j\in_R\{l\pi/4\}_{l=0}^7</math> and sends it to the Server. He secret-shares the values <math>a_j</math> and <math>\theta_j^j</math> with the other clients.
            \item Each client </math>C_k (k\neq j)</math>, runs Protocol \ref{Algo1} with the Server. If all clients pass the test, the Server at the end has </math>n-1</math> states </math>\ket{+_{\theta_j^k}}=\frac{1}{\sqrt{2}}\big(\ket{0}+e^{i\theta_j^k}\ket{1}  \big)</math> for </math>k\neq j</math>.
# Each client <math>C_k (k\neq j)</math>, runs Protocol 1 with the Server. If all clients pass the test, the Server at the end has <math>n-1</math> states <math>|+_{\theta_j^k}\rangle=\frac{1}{\sqrt{2}}\big(|0\rangle+e^{i\theta_j^k}|1\rangle \big)</math> for <math>k\neq j</math>.
            \item The Server runs Protocol \ref{Algo2} and announces outcome vector </math>\mathbf{t}_j</math>. \\
# The Server runs Protocol2 and announces outcome vector <math>\mathbf{t}_j</math>.  
        \end{enumerate}\vspace{-0.1in}
At this point the Server has the state  <math>\rho'_{in}=\big(X^{a_1}Z(\theta_1)\otimes \dots \otimes X^{a_n} Z(\theta_n)\otimes \mathbf{1}_{\mathcal{R}}\big)\cdot \rho_{in}</math>, where  
        At this point the Server has the state  </math>\rho'_{in}=\big(X^{a_1}Z(\theta_1)\otimes \dots \otimes X^{a_n} Z(\theta_n)\otimes \mathbf{1}_{\mathcal{R}}\big)\cdot \rho_{in}</math>, where  
<math>\theta_j=\theta_j^j+\sum_{k=1, k\neq j}^n (-1)^{\bigoplus_{i=k}^n t_j^i+a_j}\theta_j^k </math>
        \begin{equation}\label{eq:entangle1}
# [non-output / non-input qubits:] For <math>j\in O^c\setminus I</math>  
            \theta_j=\theta_j^j+\sum_{k=1, k\neq j}^n (-1)^{\bigoplus_{i=k}^n t_j^i+a_j}\theta_j^k
        \end{equation}
        \item[non-output / non-input qubits:] For </math>j\in O^c\setminus I</math>  
         \begin{enumerate}
         \begin{enumerate}
             \item[4.] All clients </math>C_k</math>, </math>k\in[n]</math>  run Protocol \ref{Algo1} with the Server. If all clients pass the test, the Server at the end has </math>n</math> states </math>\ket{+_{\theta_j^k}}=\frac{1}{\sqrt{2}}\big(\ket{0}+e^{i\theta_j^k}\ket{1}  \big)</math> for </math>k=1,\dots,n</math>.
             \item[4.] All clients </math>C_k</math>, </math>k\in[n]</math>  run Protocol \ref{Algo1} with the Server. If all clients pass the test, the Server at the end has </math>n</math> states </math>\ket{+_{\theta_j^k}}=\frac{1}{\sqrt{2}}\big(\ket{0}+e^{i\theta_j^k}\ket{1}  \big)</math> for </math>k=1,\dots,n</math>.
Write, autoreview, editor, reviewer
3,129

edits