QuCrypt's Support for Quantum Protocols

Protocols in QuCrypt can be easily added by specializing the existing ones.  For the time being, only quantum key distribution protocols are provided. Two kinds of quantum key distribution (QKD) protocols are implemented in QuCrypt.  They are: In addition, some itermediary versions of both QKD protocols are provided for future extension of the protocol library. Each protocol being built by specializing subprotocols, we get the following specialization chain: Each of these intermediary versions are reusable inside different protocols or different implementations of the currently supported schemes.  To see how to build your own quantum protocol, look at how the implementation of the full BB84 QKD protocol uses the implementation of reconciled BB84 in the protocols package.

The goal would be to develop a large library of subprotocols in order to make quantum protocols easy to implement by putting together the reusable components that are the most adapted to a specific task. JAVA being an object oriented programming language makes it a good choice for achieving this goal.

Raw Quantum Transmission

The Raw BB84 and Raw B92 are subprotocols allowing to generate the raw key from which public discussion between Alice and Bob should produce the final secret key.  The raw key is simply the raw material produced by the quantum transmission using the BB84 coding scheme and the B92 coding scheme respectively.  The raw part of QKD protocols is a kind of general primitives that can be used as the quantum part for more general quantum protocols.  If one wants to provide a different quantum protocol using either Raw BB84 or Raw B92 for the quantum transmission part then one just writes the specification of the classical part of the protocol taking place after the  raw key generation.  The raw key can also be stored (only in the next QuCrypt's release though) for future processing involving maybe only classical channels.
 

Reconciled Quantum Transmission

The reconciled quantum transmission is the string Alice and Bob get after having corrected the transmission errors in the Raw key.  For the time being only one reconciliation scheme is included in QuCrypt.  After Alice and Bob have applied reconciliation, they make sure that no error is left by executing another classical subprotocol called confirmation.  Both reconciliation and confirmation can be redefined by providing new protocol specifications.  For an example of how to provide your own reconciliation or confirmation protocol, look at how Cascade has been included in RecBB84 and RecB92.
 

Full QKD

The final secret key is obtained by applying privacy amplification to the reconciled key. Different methods can be added to the one available in QuCrypt.  The current privacy amplification protocol is implemented in the PA class and are used in BB84 and B92 the obvious way.