Editing Secure Multiparty Delegated Quantum Computation
Jump to navigation
Jump to search
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 | 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/outpts/computation. This protocol is an extension of [[Prepare-and-Send Universal Blind Quantum Computation]] in the multiparty setting. | ||
==Assumptions== | ==Assumptions== | ||
Line 14: | Line 10: | ||
The Protocol consists of 2 phases: Preparation phase and Computation phase. | The Protocol consists of 2 phases: Preparation phase and Computation phase. | ||
===Preparation phase | ===Preparation phase''' | ||
* '''Input qubits:''' For the input qubit states, each client one-time pads their qubit and uses | * '''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 22: | ||
* '''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 43: | ||
* <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. | ||
==Properties== | ==Properties== | ||
Line 63: | Line 57: | ||
\section{Pseudo Code} | |||
\begin{algorithm}[H] | |||
\floatname{algorithm}{Protocol} | |||
\caption{(Enforcing honest behavior for client </math>C_k</math>)} | |||
\label{Algo1} | |||
\begin{enumerate} | |||
\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. | |||
\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. | |||
\end{enumerate} | |||
\end{algorithm} | |||
%\vspace{0.1in} | |||
\begin{algorithm}[H] | |||
\floatname{algorithm}{Protocol} | |||
\caption{(State preparation for </math>j\in I</math>)} | |||
\label{Algo2} | |||
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 134: | ||
\end{figure} | \end{figure} | ||
\vspace{0.3in} | |||
\begin{algorithm}[H] | |||
\floatname{algorithm}{Protocol} | |||
\caption{(State preparation for </math>j\in O^c\setminus I</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 168: | ||
\end{figure} | \end{figure} | ||
\begin{algorithm}[!h] | |||
\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} | |||
\underline{\emph{Preparation phase}} | |||
\begin{description} | |||
\item[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. | |||
\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>. | |||
\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} | ||
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 | |||
\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 225: | ||
\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> |