Editing Secure Multiparty Delegated Quantum Computation

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
This [https://arxiv.org/abs/1606.09200 example protocol] achieves the functionality of [[Secure Client- Server Delegated Computation|Delegation Quantum Computation]] to a server for multiple Clients with the guarantee that Server is unknown of any Clients' inputs, outputs, and computation. This protocol is an extension of [[Prepare-and-Send Universal Blind Quantum Computation]] in the multiparty setting.
This protocol develops the idea of delegation of quantum computation to a server in a multi-party setting with guarantee for secrecy of both the data and the computation.
 
It performs computation on encrypted data in the Measurement Based Quantum Computing framework.
'''Tags:''' [[:Category:Multi Party Protocols|Multi Party Protocols]], [[:Category:Quantum Functionality|Quantum Functionality]], [[:Category:Universal Task|Universal Task]]
This protocol is a direct extension of '''Universal Blind Quantum Computation (to be linked)''' in the multiparty setting.
[[Category:Multi Party Protocols]] [[Category:Quantum Functionality]][[Category:Universal Task]]
 


==Assumptions==
==Assumptions==
Line 16: Line 14:
===Preparation phase===
===Preparation phase===


* '''Input qubits:''' For the input qubit states, each client one-time pads their qubit and uses [[Quantum Secret Sharing|secret sharing]] schemes to share the secret values with other clients. The honest behaviour for every client is enforced via the given protocol. The server then one-time pads them and measures the one-time padded qubits and announces the measurement values.
* '''Input qubits:''' For the input qubit states, each client one-time pads their qubit and uses secret sharing schemes to share the secret values with other clients. The honest behaviour for every client is enforced via the given protocol. The server then one-time pads them and measures the one-time padded qubits and announces the measurement values.
* '''Non-output and non-input qubits:''' The clients send the qubits in random phases allowed in MBQC. The server then one-time pads them and announces the measurement values.
* '''Non-output and non-input qubits:''' The clients send the qubits in random phases allowed in MBQC. The server then one-time pads them and announces the measurement values.
* '''Output qubits:''' The server prepares them in the <math>|+\rangle</math> state.
* '''Output qubits:''' The server prepares them in the </math>|+\rangle</math> state.
* '''Graph state:''' The server entangles the qubits to a brickwork state.
* '''Graph state:''' The server entangles the qubits to a brickwork state.


Line 26: Line 24:
* '''Non-output qubits:''' All clients choose a random bit based on which they compute the measurement angle of the qubits. They send this angle to the server who then returns the result based on the measurement.     
* '''Non-output qubits:''' All clients choose a random bit based on which they compute the measurement angle of the qubits. They send this angle to the server who then returns the result based on the measurement.     
* '''Output qubits:''' The server sends the encrypted qubits to the corresponding clients. The clients then jointly compute the Pauli corrections and apply them to get the actual output.
* '''Output qubits:''' The server sends the encrypted qubits to the corresponding clients. The clients then jointly compute the Pauli corrections and apply them to get the actual output.


==Notation==
==Notation==
Line 46: Line 45:
* <math>s^Z_j</math>: <math>Z</math> correction term for <math>j^{th}</math> qubit.
* <math>s^Z_j</math>: <math>Z</math> correction term for <math>j^{th}</math> qubit.


==Requirements==
==Hardware Requirements==


* The quantum operations required from the clients are limited to creating <math>|+\rangle</math> states and applying X gates and rotations around the z-axis.
* The quantum operations required from the clients are limited to creating <math>|+\rangle</math> states and applying X gates and rotations around the z-axis.


==Knowledge Graph==
{{graph}}


==Properties==
==Properties==
Line 63: Line 59:




==Protocol Description==
\section{Pseudo Code}
*Enforcing honest behavior for client <math>C_k</math>
 
# 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.
\begin{algorithm}[H]
# 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.
    \floatname{algorithm}{Protocol}
*State preparation for <math>j\in I</math>)
    \caption{(Enforcing honest behavior for client </math>C_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>);
    \label{Algo1}
##for <math>k=1,\dots,n-1</math>
    \begin{enumerate}
###if <math>k=j</math> '''then''' break;
        \item 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.
###if <math>k=n-1</math> and <math>j=n</math> '''then''' break;
        \item 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.
###if <math>k=j-1</math>, '''then'''
    \end{enumerate}
####CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+2}</math>;
\end{algorithm}
###'''else'''
   
####CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
    %\vspace{0.1in}
###measure state in <math>\mathcal{S}_k</math> and get outcome <math>t_j^k</math>;
   
##if <math>j=n</math> '''then'''
\begin{algorithm}[H]
###CNOT on <math>\mathcal{S}_{n-1}\otimes\mathcal{S}_n</math>;
    \floatname{algorithm}{Protocol}
####Measure state in <math>\mathcal{S}_{n-1}</math> and get outcome <math>t_n^{n-1}</math>;
    \caption{(State preparation for </math>j\in I</math>)}
##else
    \label{Algo2}
###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>;
    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}if </math>k=j</math> then
   
    \hspace{1in}break;
   
    \hspace{0.5in}if </math>k=n-1</math> and </math>j=n</math> then
   
    \hspace{1in}break;
   
    \hspace{0.5in}if </math>k=j-1</math>, then
   
    \hspace{1in}CNOT on </math>\mathcal{S}_k\otimes\mathcal{S}_{k+2}</math>;
   
    \hspace{0.5in}else
   
    \hspace{1in}CNOT on </math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
   
    \hspace{0.5in}end;
   
    \hspace{0.5in}measure state in </math>\mathcal{S}_k</math> and get outcome </math>t_j^k</math>;
   
    end;
   
    if </math>j=n</math> then  
   
    \hspace{0.5in} CNOT on </math>\mathcal{S}_{n-1}\otimes\mathcal{S}_n</math>;
   
    \hspace{0.5in}measure state in </math>\mathcal{S}_{n-1}</math> and get outcome </math>t_n^{n-1}</math>;
   
    else
   
    \hspace{0.5in}CNOT on </math>(\mathcal{S}_{n}\otimes\mathcal{S}_j)</math>;
   
    \hspace{0.5in}measure state in </math>\mathcal{S}_n</math> and get outcome </math>t_j^n</math>;
   
    end;
   
\end{algorithm}
      
      
      
      
Line 100: Line 136:
\end{figure}
\end{figure}
      
      
    \vspace{0.3in}
====State preparation for (<math>j\in O^c\setminus 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>);
\begin{algorithm}[H]
# For <math>k=1,\dots,n-1</math>
    \floatname{algorithm}{Protocol}
## CNOT on <math>\mathcal{S}_k\otimes\mathcal{S}_{k+1}</math>;
    \caption{(State preparation for </math>j\in O^c\setminus I</math>)}
## Measure state in <math>\mathcal{S}_k</math> and get outcome <math>t_j^k</math>;
    \label{Algo3}
    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 122: Line 170:
\end{figure}
\end{figure}
      
      
====Multiparty Quantum Computing Protocol====
\begin{algorithm}[!h]
* 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> .
    \caption{Multiparty Quantum Computing Protocol}
    \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}
      
      
'''Preparation phase'''
    \underline{\emph{Preparation phase}}
 
    \begin{description}
''Quantum input'': For <math>j\in I</math>  
        \item[quantum input:] For </math>j\in I</math>  
 
        \begin{enumerate}
# 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 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.
# 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 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>.
# The Server runs Protocol2 and announces outcome vector <math>\mathbf{t}_j</math>.  
            \item The Server runs Protocol \ref{Algo2} and announces outcome vector </math>\mathbf{t}_j</math>. \\
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  
        \end{enumerate}\vspace{-0.1in}
<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>
        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  
# [non-output / non-input qubits:] For <math>j\in O^c\setminus I</math>  
        \begin{equation}\label{eq:entangle1}
            \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>.
Line 172: Line 227:
\end{algorithm}
\end{algorithm}


==Further Information ==


<div style='text-align: right;'>''*contributed by Natansh Mathur''</div>
<div style='text-align: right;'>''*contributed by Natansh Mathur''</div>
Please note that all contributions to Quantum Protocol Zoo may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Quantum Protocol Zoo:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)

Template used on this page: