Prepare and Measure Quantum Digital Signature: Difference between revisions

Line 94: Line 94:


<u>'''Stage 1'''</u> Distribution
<u>'''Stage 1'''</u> Distribution
*'''Input''' L
'''function''' key distribution(n,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>
  '''For''' k = 0 to 2^n
**'''Key Distribution:'''
  '''function''' key generation (L)
#For k = 0,1
    '''For l=1 to L
## 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>
    \beta_k^l=Seller.choose_R(\{0,1,+,-\})
## She sends Buyer (k,<math>|\psi^k\rangle</math>)
    |\psi\rangle=\bigotimes
## She sends Verifier (k,<math>|\psi^k\rangle</math>)
    P_k=
    s_k=
    '''return''' (P_k,s_k)
  '''end function'' key generation
  Seller.send(Buyer, (k,P_k)
  Seller.send(Verifier (k,P_k)
  '''end for'''</br>
'''end function''' key distribution
 
**'''State Elimination:'''  
**'''State Elimination:'''  
#For k = 0,1
#For k = 0,1
Line 112: Line 120:
**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>
**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'''
'''function''' Symmetrisation
##For k = 0,1
  Buyer chooses I<math>\subset_R\{1,2,...,L\}, |I|=[L/2]</math>
### 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>  
### <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>
### Verifier chooses J<math>\subset_R\{1,2,...,L\}, |J|=[L/2]</math>
Line 120: Line 127:
### <math>\forall j\epsilon J</math> Buyer replaces <math>B^k_l=V^k_l</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>
### <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>
'''function'''
*'''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


==Discussion==
==Discussion==
Write, autoreview, editor, reviewer
3,129

edits