Editing Polynomial Code based Quantum Authentication

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:
The paper [https://arxiv.org/pdf/quant-ph/0205128.pdf Authentication of Quantum Messages by Barnum et al.] provides a non-interactive scheme with classical keys for the sender to encrypt as well as [[Authentication of Quantum Messages|authenticate quantum messages]]. It was the first protocol designed to achieve the task of authentication for quantum states, i.e. it gives the guarantee that the message sent by a party (suppliant) over a communication line is received by a party on the other end (authenticator) without having been tampered with or modified by the dishonest party (eavesdropper).
The [https://arxiv.org/pdf/quant-ph/0205128.pdf example protocol] provides a non-interactive scheme for the sender to encrypt as well as [[Authentication of Quantum Messages|authenticate quantum messages]]. It was the first protocol designed to achieve the task of authentication for quantum states, i.e. it gives the guarantee that the message sent by a party (suppliant) over a communication line is received by a party on the other end (authenticator) as it is and, has not been tampered with or modified by the dishonest party (eavesdropper).


'''Tags:''' [[:Category:Two Party Protocols|Two Party Protocol]][[Category:Two Party Protocols]], [[:Category:Quantum Functionality|Quantum Functionality]][[Category:Quantum Functionality]], [[:Category:Specific Task|Specific Task]][[Category:Specific Task]], [[:Category:Building Blocks|Building Block]][[Category:Building Blocks]]
'''Tags:''' [[:Category:Two Party Protocols|Two Party Protocol]][[Category:Two Party Protocols]], [[:Category:Quantum Functionality|Quantum Functionality]][[Category:Quantum Functionality]], [[:Category:Specific Task|Specific Task]][[Category:Specific Task]], [[:Category:Building Blocks|Building Block]][[Category:Building Blocks]]


==Assumptions==
*The sender and the receiver share a private (known to only the two of them), classical random key drawn from a probability distribution.
==Outline==
==Outline==
The polynomial code consists of three steps: preprocessing, encryption and encoding, and decoding and decryption. Within the preprocessing, sender and receiver agree on a [[Stabilizer Purity Testing Code | stabilizer purity testing code]] and three private, random binary keys. Within the encryption and encoding step, the sender uses one of these keys to encrypt the original message. Consequently, a second key is used to choose a specific quantum error correction code out of the [[Stabilizer Purity Testing Code | stabilizer purity testing code]]. The chosen quantum error correction code is then used, together with the last key, to encode the encrypted quantum message. Within the last step, the decoding and decryption step, the respective keys are used by the receiver to decide whether to abort or not, and if not, to decode and decrypt the received quantum message.
==Assumptions==
*The sender and the receiver share a private, classical random key drawn from a probability distribution


==Notations==
==Notations==
*<math>\mathcal{S}</math>: suppliant (sender)
*<math>s</math>: security parameter
*<math>\mathcal{A}</math>: authenticator (prover)
*<math>m</math>: number of qubits in the message.
*<math>\rho</math>: quantum message to be sent
==Properties==
*<math>m</math>: number of qubits in the message <math>\rho</math>
*For an <math>m</math> qubit message, the protocol requires <math>m+s</math> qubits encoded state, and a private key of <math>2m+O(s)</math>.
*<math>\{Q_k\}</math>: [[Stabilizer Purity Testing Code | stabilizer purity testing code]], each stabilizer code is identified by index <math>k</math>
==Pseudo Code==
*<math>n</math>: number of qubits used to encode the message with <math>\{Q_k\}</math>
*<math>x</math>: random binary <math>2m</math>-bit key
*<math>y</math>: random syndrome for a specific <math>Q_k</math>
 
==Protocol Description==
'''Input:''' <math>\rho</math> owned by <math>\mathcal{S}</math>; <math>k</math>, <math>x</math>, <math>y</math> shared among <math>\mathcal{S}</math> and <math>\mathcal{A}</math></br></br>
'''Output:''' Receiver accepts or aborts the quantum state <math>\rho^\prime</math>
*'''''Encryption and encoding:'''''
#<math>\mathcal{S}</math> q-encrypts the <math>m</math>-qubit original message <math>\rho</math> as <math>\tau</math> using the classical key <math>x</math> and a [[Quantum One-Time Pad | quantum one-time pad]]. This encryption is given by <math>\tau = \sigma_x^{\vec{t}_1}\sigma_z^{\vec{t}_2}\rho\sigma_z^{\vec{1}_1}\sigma_x^{\vec{t}_1}</math>, where <math>\vec{t}_1</math> and <math>\vec{t}_2</math> are <math>m</math>-bit vectors and given by the random binary key <math>x</math>.
#<math>\mathcal{S}</math> then encodes <math>\tau</math> according to <math>Q_k</math> with syndrome <math>y</math>, which results in the <math>n</math>-qubit state <math>\sigma</math>. This means <math>\mathcal{S}</math> encodes <math>\rho</math> in <math>n</math> qubits using <math>Q_k</math>, and then "applies" errors according to the random syndrome.
#<math>\mathcal{S}</math> sends <math>\sigma</math> to <math>\mathcal{A}</math>.
*'''''Decoding and decryption:'''''
#<math>\mathcal{A}</math> receives the <math>n</math> qubits, whose state is denoted by <math>\sigma^\prime</math>.
#<math>\mathcal{A}</math> measures the syndrome <math>y^\prime</math> of the code <math>Q_k</math> on his <math>n</math> qubits in state <math>\sigma^\prime</math>.
#<math>\mathcal{A}</math> compares the syndromes <math>y</math> and <math>y^\prime</math> and aborts the process if they are different.
#<math>\mathcal{A}</math> decodes his <math>n</math>-qubit word according to <math>Q_k</math> obtaining <math>\tau^\prime</math>.
#<math>\mathcal{A}</math> q-decrypts <math>\tau^\prime</math> using the random binary strings <math>x</math> obtaining <math>\rho^\prime</math>.
 
==Further Information==
==Further Information==
#[https://ieeexplore.ieee.org/abstract/document/4031361?casa_token=j0BWLVeqOZkAAAAA:T19kamFiwuoLaEbL_bESvUendLVhWzsXWZpegOxPADA_PjSobjg4Wyo8ZmV92qvfVF3Pc7_v| Ben-Or et al. (2006).]
#[https://arxiv.org/pdf/0810.5375.pdf%7C| Aharonov et al. (2008).]
==References==
==References==
#[https://arxiv.org/pdf/quant-ph/0205128.pdf| Barnum et al. (2002).]
<div style='text-align: right;'>''contributed by Shraddha Singh''</div>
 
<div style='text-align: right;'>''Contributed by Isabel Nha Minh Le and Shraddha Singh''</div>
<div style='text-align: right;'>''This page was created within the [https://www.qosf.org/qc_mentorship/| QOSF Mentorship Program Cohort 4]''</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)