Prepare and Measure Quantum Digital Signature: Difference between revisions

Line 93: Line 93:
==Pseudo Code 2==
==Pseudo Code 2==
  '''function''' key_distribution(n,L)  
  '''function''' key_distribution(n,L)  
   '''For''' k = 0 to 2^n
   '''For''' k = 0 '''to''' <math>2^n</math>
   '''function''' key_generation (L)
   '''function''' key_generation (L)
     '''For l=1 to L
     '''For l=1 '''to''' L
     <math>\beta_k^l=</math>choose<math>_R(\{0,1,+,-\})</math> //random classical bits
     <math>\beta_k^l=</math>choose<math>_R(\{0,1,+,-\})</math> //random classical bits
     '''qubit''' |\beta_k^l\rangle= create(\beta_k^l) //a quantum state generation with classical input
     '''qubit''' |\beta_k^l\rangle= create(\beta_k^l) //a quantum state generation with classical input
Line 106: Line 106:
   <math>|\psi_{Vk}\rangle=|\psi_k\rangle</math>
   <math>|\psi_{Vk}\rangle=|\psi_k\rangle</math>
   Seller<math>\xrightarrow[]{(k,|\psi_{Bk}\rangle)}</math>Buyer
   Seller<math>\xrightarrow[]{(k,|\psi_{Bk}\rangle)}</math>Buyer
   Seller<math>\xrightarrow[]{(k,<math>|\psi_{Vk}\rangle)}</math>Verifier
   Seller<math>\xrightarrow[]{(k,|\psi_{Vk}\rangle)}</math>Verifier
   '''end for''' k
   '''end for''' k
  '''end function''' key_distribution</br>
  '''end function''' key_distribution</br>
  '''function''' state_elimination(A,(<math>|\psi_k\rangle</math>,L))  
  '''function''' state_elimination(<math>|\psi_k\rangle</math>,L)
   '''For''' l = 1,2,...,L
   '''For''' l = 1 '''to''' L
   <math>b_k^l=</math>Choose<math>_R(\{X,Z\})</math> //randomly chosen measurement basis
   <math>b_k^l=</math>Choose<math>_R(\{X,Z\})</math> //randomly chosen measurement basis
   '''if''' <math>b_k^l=</math>Z '''then'''  
   '''if''' <math>b_k^l=</math>Z '''then'''  
Line 125: Line 125:
   '''end for''' l
   '''end for''' l
   '''return''' esign<math>_k</math>
   '''return''' esign<math>_k</math>
  '''end function''' state_elimination
  '''end function''' state_elimination</br>
  //Buyer's elimnated signatures
  '''for''' k=0 to <math>2^n</math>
esign<math>_{B0}</math>= Buyer.state_elimination(<math>|\psi_{B0}\rangle</math>,L)
  esign<math>_{Bk}</math>= Buyer.'''state_elimination'''(<math>|\psi_{Bk}\rangle</math>,L)  
esign<math>_{B1}</math>= Buyer.state_elimination(<math>|\psi_{B1}\rangle</math>,L)  
  '''end for'''
  //Verifier's elimnated signatures
  '''for''' k=0 to <math>2^n</math>
  esign<math>_{V0}</math>= Verifier.state_elimination(Verifier,(<math>|\psi_{V0}\rangle</math>,L))
  esign<math>_{Vk}</math>= Verifier.'''state_elimination'''(<math>|\psi_{Vk}\rangle</math>,L)  
esign<math>_{V1}</math>= Verifier.state_elimination(Verifier,(<math>|\psi_{V1}\rangle</math>,L))  
'''end for'''
 
  '''function''' symmetrization(k,Sender,esign_Sk,Receiver,esign_Rk)
 
   Sender.choose I<math>\subset_R\{1,2,...,L\}, |I|=[L/2]</math>
  '''function''' Symmetrisation
  <math>'''\forall''' i\epsilon I</math>, Sender<math>\xrightarrow[]{(k,i,b^k_i,B^k_i)}</math>Receiver
   Buyer chooses I<math>\subset_R\{1,2,...,L\}, |I|=[L/2]</math>
  '''For''' h=1,<math>\ceil{L/2}</math>
### <math>\forall i\epsilon I</math>, Buyer sends Verifier <math>(k,i,b^k_i,B^k_i)</math>  
  Sender.receive(j,esign_Rk^j)
### Verifier chooses J<math>\subset_R\{1,2,...,L\}, |J|=[L/2]</math>
  Sender.replace(esign_Sk^j,esign_Rk^j)
### <math>\forall j\epsilon J</math>, Verifier sends Buyer <math>(k,j,v^k_j,V^k_j)</math>
  '''end for''' h
### <math>\forall j\epsilon J</math> Buyer replaces <math>B^k_l=V^k_l</math>
'''end function''' SYM
### <math>\forall i\epsilon I</math> Verifier replaces <math>V^k_l=B^k_l</math>
'''for''' k=0 '''to''' <math>2^n</math>
   
  '''Call''' SYM(k,Buyer,esign_Bk,Verifier,esign_Vk)||SYM(0,Verifier,esign_Vk,Buyer,esign_Bk)
  '''function'''
  '''end function''' symmetrisation
// '||' implies that the functions are processed in parallel


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

edits