Skip to main content

Quantum communication key-rate modules

Project description

TNO-Quantum: QKD key-rate

TNO Quantum provides generic software components aimed at facilitating the development of quantum applications.

The tno.quantum.communication.qkd_key_rate package provides python code to compute optimal protocol parameters for different quantum key distribution (QKD) protocols.

The codebase is based on the following papers:

The following quantum protocols are supported:

  • BB84 protocol,
  • BB84 protocol using a single photon source,
  • BBM92 protocol.

The following classical error-correction protocols are supported:

  • Cascade,
  • Winnow.

The presented code can be used to

  • determine optimal parameter settings needed to obtain the maximum key rate,
  • correct errors in exchanged sifted keys for the different QKD protocols,
  • apply privacy amplification by calculating secure key using hash function.

Limitations in (end-)use: the content of this software package may solely be used for applications that comply with international export control laws.

Documentation

Documentation of the tno.quantum.communication.qkd_key_rate package can be found here

Install

Easily install the tno.quantum.communication.qkd_key_rate package using pip:

$ python -m pip install tno.quantum.communication.qkd_key_rate

If you wish to run the tests you can use:

$ python -m pip install tno.quantum.communication.qkd_key_rate[tests]

Usage

Compute secure key-rate. The following code demonstrates how the BB84 protocol can be used to calculate optimal key-rate for a specific detector.
from tno.quantum.communication.qkd_key_rate.protocols.quantum.bb84 import (
   BB84FullyAsymptoticKeyRateEstimate,
)
from tno.quantum.communication.qkd_key_rate.test.conftest import standard_detector

detector = standard_detector.customise(
    dark_count_rate=6e-7,
    polarization_drift=0.0707,
    error_detector=5e-3,
    efficiency_detector=0.1,
)

fully_asymptotic_key_rate = BB84FullyAsymptoticKeyRateEstimate(detector=detector)
mu, rate = fully_asymptotic_key_rate.optimize_rate(attenuation=0.2)
Correct errors. The following example demonstrates usage of the Winnow error correction protocol.
import numpy as np

from tno.quantum.communication.qkd_key_rate.base import Message, Permutations, Schedule
from tno.quantum.communication.qkd_key_rate.protocols.classical.winnow import (
   WinnowCorrector,
   WinnowReceiver,
   WinnowSender,
)

error_rate = 0.05
message_length = 10000
input_message = Message.random_message(message_length=message_length)
error_message = Message(
   [x if np.random.rand() > error_rate else 1 - x for x in input_message]
)
schedule = Schedule.schedule_from_error_rate(error_rate=error_rate)
number_of_passes = np.sum(schedule.schedule)
permutations = Permutations.random_permutation(
   number_of_passes=number_of_passes, message_size=message_length
)

alice = WinnowSender(
   message=input_message, permutations=permutations, schedule=schedule
)
bob = WinnowReceiver(
   message=error_message, permutations=permutations, schedule=schedule
)
corrector = WinnowCorrector(alice=alice, bob=bob)
summary = corrector.correct_errors()

Examples

The examples repository contain more elaborate examples that demonstrate possible usage

  • How to compute the secure key-rate for various protocols as function of the loss. BB84 protocols

  • How to compute secure key-rate using the finite key-rate protocol for different number of pulses. Example image

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

File details

Details for the file tno.quantum.communication.qkd_key_rate-1.0.0.tar.gz.

File metadata

File hashes

Hashes for tno.quantum.communication.qkd_key_rate-1.0.0.tar.gz
Algorithm Hash digest
SHA256 834815b1cb57e4b188ced3c0b20f98955986012814737765a23b30a5038d6ad5
MD5 8a2090dbde1003826a24b211cdb9747d
BLAKE2b-256 71dbad6e01a7f2feec53642bac8784b24025a9ad1faea62e516c06eaeffacd86

See more details on using hashes here.

File details

Details for the file tno.quantum.communication.qkd_key_rate-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tno.quantum.communication.qkd_key_rate-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aaace6274f291d424711b6e1dba275c53b572fe43e0492cc70f0b2e024ea2484
MD5 9ec2bcd4b97c68bc683233d816d18992
BLAKE2b-256 7a2ee593b7577ba695f4d9b19f6cd0a5d4e6e421713e31f993ccb22d64ece5f0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page