BB84 Quantum Key Distribution: Difference between revisions

Line 55: Line 55:
(see [[Quantum Key Distribution]] for the precise security definition).
(see [[Quantum Key Distribution]] for the precise security definition).


==Pseudo Code==
==Pseudocode==
*'''Input:'''<math>n, \gamma, \epsilon_{\rm PA},\epsilon_{\rm PE},\epsilon_{\rm EC},\epsilon'_{\rm EC},Q_Z</math>
*'''Input:'''<math>n, \gamma, \epsilon_{\rm PA},\epsilon_{\rm PE},\epsilon_{\rm EC},\epsilon'_{\rm EC},Q_Z</math>
*'''Output:'''<math>K_A, K_B</math>
*'''Output:'''<math>K_A, K_B</math>
<u>'''Stage 1'''</u> Distribution and measurement
'''1.''' Distribution and measurement
#For i=1,2,...,n
#For <math>i=1,...,n</math>
##  Alice chooses random bits <math>X_i\epsilon\{0,1\}</math> and <math>A_i\epsilon_R\{0,1\}</math> such that <math>P(X_i=1)=\gamma</math>
##  Alice chooses random bits <math>X_i\in\{0,1\}</math> and <math>A_i\in_R\{0,1\}</math> such that <math>P(X_i=1)=\gamma</math>
##  Alice prepares <math>H^{X_i}|A_i\rangle</math> and sends it to Bob
##  Alice prepares <math>H^{X_i}|A_i\rangle</math> and sends it to Bob
##  Bob announces receiving a state
##  Bob announces receiving a state
Line 67: Line 67:
    
    
*At this stage Alice holds strings <math>X_1^n, A_1^n</math> and Bob <math>Y_1^n, B_1^n</math>, all of length <math>n</math>
*At this stage Alice holds strings <math>X_1^n, A_1^n</math> and Bob <math>Y_1^n, B_1^n</math>, all of length <math>n</math>
<u>'''Stage 2'''</u> Sifting   
'''2.''' Sifting   
#Alice and Bob publicly announce <math>X_1^n, Y_1^n</math>
#Alice and Bob publicly announce <math>X_1^n, Y_1^n</math>
#For i=1,2,....,n
#For <math>i=1,...,n</math>
## If <math>X_i=Y_i</math>
## If <math>X_i=Y_i</math>
### <math>A_1^{n'} = A_1^{n'}.</math>append</math>(A_i)</math>
### <math>A_1^{n'} = A_1^{n'}.</math>append<math>(A_i)</math>
### <math>B_1^{n'} = B_1^{n'}.</math>append<math>(B_i)</math>
### <math>B_1^{n'} = B_1^{n'}.</math>append<math>(B_i)</math>
### <math>X_1^{n'} = X_1^{n'}.</math>append<math>(X_i)</math>
### <math>X_1^{n'} = X_1^{n'}.</math>append<math>(X_i)</math>
### <math>Y_1^{n'} = Y_1^{n'}.</math>append<math>(Y_i)</math>
### <math>Y_1^{n'} = Y_1^{n'}.</math>append<math>(Y_i)</math>
*Now Alice holds strings <math>X_1^{n'}, A_1^{n'}</math> and Bob <math>Y_1^{n'}, B_1^{n'}</math>, all of length <math>n'\leq n</math>
*Now Alice holds strings <math>X_1^{n'}, A_1^{n'}</math> and Bob <math>Y_1^{n'}, B_1^{n'}</math>, all of length <math>n'\leq n</math>
<u>'''Stage 3'''</u> Parameter estimation
'''3.''' Parameter estimation
#For <math>i=1,...,n</math>
#For <math>i=1,...,n'</math>
## size<math>Q</math> = 0
## size<math>Q</math> = 0
## If{<math>X_i = Y_i = 1</math>
## If <math>X_i = Y_i = 1</math>
### Alice and Bob publicly announce <math>A_i, B_i</math>
### Alice and Bob publicly announce <math>A_i, B_i</math>
### Alice and Bob compute <math>Q_i = 1 - \delta_{A_iB_i}</math>, where <math>\delta_{A_iB_i}</math> is the Kronecker delta
### Alice and Bob compute <math>Q_i = 1 - \delta_{A_iB_i}</math>, where <math>\delta_{A_iB_i}</math> is the Kronecker delta
## size<math>Q</math> += 1\;
## size<math>Q</math> += 1;


*Both Alice and Bob, each, compute <math>Q_X = \frac{1}{\text{size}Q} \sum_{i=1}^{n'}Q_i</math></br>
*Both Alice and Bob, each, compute <math>Q_X = \frac{1}{\text{size}Q} \sum_{i=1}^{n'}Q_i</math></br>
<u>'''Stage 4'''</u> Error correction
'''4.''' Error correction
*''<math>C(\cdot,\cdot)</math> is an error correction subroutine determined by the previously estimated value of <math>Q_Z</math> and with error parameters  <math>\epsilon'_{\rm EC}</math> and <math>\epsilon_{\rm EC}</math>
*''<math>C(\cdot,\cdot)</math> is an error correction subroutine determined by the previously estimated value of <math>Q_Z</math> and with error parameters  <math>\epsilon'_{\rm EC}</math> and <math>\epsilon_{\rm EC}</math>
#Both Alice and Bob run <math>C(A_1^{n'},B_1^{n'})</math>''.  
#Both Alice and Bob run <math>C(A_1^{n'},B_1^{n'})</math>''.  
#Bob obtains <math>\tilde{B}_1^{n'}</math>
#Bob obtains <math>\tilde{B}_1^{n'}</math>
<u>'''Stage 5'''</u> Privacy amplification
'''5.''' Privacy amplification
*''<math>PA(\cdot,\cdot)</math> is a privacy amplification subroutine determined by the size <math>\ell</math>, computed from equation for key length <math>\ell</math> (see [[Quantum Key Distribution#Properties|Properties]]), and  with secrecy parameter <math>\epsilon_{\rm PA}</math>''
*''<math>PA(\cdot,\cdot)</math> is a privacy amplification subroutine determined by the size <math>\ell</math>, computed from equation for key length <math>\ell</math> (see [[Quantum Key Distribution#Properties|Properties]]), and  with secrecy parameter <math>\epsilon_{\rm PA}</math>''
#Alice and Bob run <math>PA(A_1^{n'},\tilde{B}_1^{n'})</math> and obtain secret keys <math>K_A, K_B</math>\;
#Alice and Bob run <math>PA(A_1^{n'},\tilde{B}_1^{n'})</math> and obtain secret keys <math>K_A, K_B</math>;


==Further Information==
==Further Information==
Write
262

edits