Gottesman and Chuang Quantum Digital Signature: Difference between revisions

Line 44: Line 44:


==Pseudocode==
==Pseudocode==
==Pseudocode==
<u>'''Stage 1'''</u> Distribution
*'''Input''' L
*'''Output''' Seller: <math>\{k_0^i, k_1^i\}</math>, <math>1\le i\ge M</math>, <math>\{f_{k_0^i}, f_{k_1^i}\}</math>
**'''Key Distribution:'''
#For k = 0,1
##For i=0,M
##Seller
**'''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


==Further Information==
==Further Information==
Write, autoreview, editor, reviewer
3,129

edits