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 | 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. | |||
This protocol is a direct extension of '''Universal Blind Quantum Computation (to be linked)''' in the multiparty setting. | |||
==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 | * '''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. | ||
==Properties== | ==Properties== | ||
Line 63: | Line 59: | ||
\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 136: | ||
\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 170: | ||
\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 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> |