Prepare and Measure Quantum Digital Signature: Difference between revisions

Line 48: Line 48:


==Pseudo Code==
==Pseudo Code==
<u>'''Stage 1'''</u> Distribution
*'''Input''' L
*'''Output''' Seller: <math>\{\beta^0_1,...,\beta^0_L\},\{\beta^1_1,...,\beta^1_L\}</math>; Buyer: <math>B^0,B^1</math>; Verifier: <math>V^0,V^1</math>
**'''Key Distribution:'''
#For k = 0,1
## Seller prepares quantum public key <math>|\psi^k\rangle=\bigotimes^L_{l=1}|\beta^k_l\rangle</math>, where <math>\beta^k_l\in_R \{0,1,+,-\}</math>
## She sends Buyer (k,<math>|\psi^k\rangle</math>)
## She sends Verifier (k,<math>|\psi^k\rangle</math>)
**'''State Elimination:'''
#For k = 0,1
##For l = 1,2,...,L
### Buyer chooses <math>b^k_l \epsilon_R {0,1}</math>
###If <math>b^k_l=0</math>, Buyer measures his qubit in X basis <math>\{|+\rangle,|-\rangle\}</math>
###If <math>b^k_l=0</math>, Buyer measures his qubit in Z basis <math>\{|0\rangle,|1\rangle\}</math>
###'''return''' <math>m_{b^k_l}</math>
###<math>B^k_l=1-m_{b^k_l}</math>
**Verifier repeats steps 2(a)-2(b) with randomly chosen basis <math>v^k_l</math> to get his eliminated signature elements <math>V^k_l</math>
**'''Symmetrisation'''
##For k = 0,1
### Buyer chooses I<math>\subset_R\{1,2,...,L\}, |I|=[L/2]</math>
### <math>\forall i\epsilon I</math>, Buyer sends Verifier <math>(k,i,b^k_i,B^k_i)</math>
### Verifier chooses J<math>\subset_R\{1,2,...,L\}, |J|=[L/2]</math>
### <math>\forall j\epsilon J</math>, Verifier sends Buyer <math>(k,j,v^k_j,V^k_j)</math>
### <math>\forall j\epsilon J</math> Buyer replaces <math>B^k_l=V^k_l</math>
### <math>\forall i\epsilon I</math> Verifier replaces <math>V^k_l=B^k_l</math>
<u>'''Stage 2'''</u> Messaging
*'''Input''' Seller: Message m, Private Key for m: <math>\{\beta^m_1,...,\beta^m_L\}</math>
*'''Output''' Buyer: accept or abort, Verifier: accept or abort
**'''Signing:''' ’mismatch’ is when Buyer finds an eliminated signature element in Seller’s private key
# Seller sends Buyer (m,<math>\{\beta^m_1,...,\beta^m_L\}</math>)
# For l = 1,2,..,L
##Buyer counts the number of mismatches (<math>B^m_l=V^m_l</math>) and returns <math>S_b</math>
# If <math>S_b < s_aL/2</math>, Buyer accepts m else he aborts
**'''Transfer'''
# Buyer sends Verifier (m,<math>\{\beta^m_1,...,\beta^m_L\}</math>)
# For l = 1,2,....,L
##Verifier counts the number of mismatches (<math>V^m_l=B^m_l</math>) and returns <math>S_v</math>
# If <math>S_v < s_vL/2</math>, Verifier accepts m else he aborts
==Pseudo Code 2==


<u>'''Stage 1'''</u> Distribution
<u>'''Stage 1'''</u> Distribution
Write, autoreview, editor, reviewer
3,125

edits