QSECKEY: Quantum Secure Key generation library for classical KMS integration
Project description
QSecKey
An application for securely distributing cryptographic keys from a QKD system to applications across a distributed network.
Objective
The design will adhere to the ETSI GS QKD 014 standard, ensuring seamless integration of the Key Management System (KMS) with a QKD simulator to efficiently generate, manage, and distribute cryptographic keys across the network. This proposed interface is capable of storing QKD keys and can be sent to the application entities upon request.
Components
- Secure Application Entities(SAEs): These entities can request for keys from KME based on the requirement.
- Key Management Entities(KMEs): These entities are Point of contact for SAEs to request keys which are generated by the QKDEs.
- Quantum Key distribution Entities(QKDEs): These entities will be running the bb84/Key generation algorithm on Quantum simulator to generate and share the keys in a distributed network.
Architecture and Algorithm Walkthrough
https://docs.google.com/document/d/14FPwCqk0Pru6AEgg1vNN2Zz7vKAVvZKS_mIe-GKriFs/edit?usp=sharing
Entities:
- Connection DB: Stores details such as application_id, QoS data, Master SAE ID, Slave SAE ID, Master KME ID, Slave KME ID, available keys, key size, and other relevant information. The KMS server will periodically check this db and request the QKD application server to generate the keys in the background.
- Key Storage: Contains application_id, key_id, and key_data for storing generated keys.
- QKD Application Server: Acts as an interface between the KMS server and the Quantum Device/Simulator, handling processing and logical operations related to key generation and storage.
- Quantum Simulator and Link: Connects to a quantum simulator, processes qubit information, and shares the results with the QKD application server or another quantum device via a quantum link.
usage
- Application server running in docker environment
- python module
Application server running in docker environment
Prerequisites
- Docker
- Docker Compose
Build using Docker Compose
Run the following command to build the application:
docker-compose up --build
RUN:
Register Entity and Start Key Generation
curl --location 'http://localhost:8000/register_connection' \
--header 'Content-Type: application/json' \
--data '{
"source_KME_ID": "sender_app",
"target_KME_ID": "receiver_app",
"master_SAE_ID": "ghi",
"slave_SAE_ID": "jk3"
}'
Optional: key_size : The size of keys generated by QKD (This can be specified later during Get Key method where if the specified key_size is greater than default the KME will merge smaller keys to generate larger) max_keys_count : The count of keys required on the server storage
Request key From Master SAE
curl --location 'http://127.0.0.1:8000/get_key?slave_host=jkl&key_size=128' \
--data ''
Optional: key_size
Request Key From Slave SAE
curl --location 'http://127.0.0.1:8001/get_key?key_id=9cf3af44-5f17-4d9b-afd6-b8e8cb055db1' \
--data ''
Python Module
Usage
from qseckey import initialize, register_connection, get_key
initialize({"MAX_KEYS_COUNT": 100})
register_connection({...})
get_key(key_id="abc123")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file qseckey-0.1.2.tar.gz.
File metadata
- Download URL: qseckey-0.1.2.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffbd159fc13f68689917e0e7e85fa2ef8c4425a249f2055f98b3d23f493664ca
|
|
| MD5 |
9a013b1778ced7c57126bf4225ded5f5
|
|
| BLAKE2b-256 |
8ec2602cc1a81794f35ec06513e3b07cb25db9e5cbdb6605acd7932d73d6dd64
|