Skip to content

OpenSATQKD: An End-to-End Open-Source Simulator for Planning and Evaluating Satellite QKD Missions

Notifications You must be signed in to change notification settings

fjlc-73/OpenSATQKD

Repository files navigation

🛰️ OpenSATQKD ⚛️🔑

This repository contains the source code for OpenSATQKD, a framework for modeling and evaluating satellite QKD missions. The simulator calculates all key quantities from realistic experimental parameters and open-source tools, integrating orbital propagation, free-space link losses, optical hardware characterization, noisy quantum channel simulation, post-processing, and secret key rate estimation in a single platform. It’s designed to support mission planning, performance studies, and verbose protocol demonstrations in satellite-based quantum communication.


Installation

Requirements:

  • Python 3.10 (we recommend using Conda to create a virtual environment)
  • Linux is recommended (Libradtran is only officially supported in Linux). Windows can work via WSL.
  • MATLAB (with CVX and QETLAB libraries) and the MATLAB Python API

Steps:

  1. Clone the repository:
git clone https://github.com/fjlc-73/OpenSATQKD.git
cd OpenSATQKD
git submodule update --init --recursive
  1. Create and activate a virtual environment:
conda create -n opensatqkd python=3.10.18
conda activate opensatqkd
  1. Install Python dependencies:
pip install -r requirements.txt
  1. Install libRadtran and its Python wrapper following the instructions on the GitHub page.
  2. Install openQKDsecurity for MATLAB-based computations:
    • Install MATLAB libraries CVX and QETLAB.
    • Install the MATLAB Python API by opening MATLAB and running:
cd (fullfile(matlabroot,'extern','engines','python'))
system('python -m pip install .')

Other external dependencies:

  • Cascade Python is used but not included as a submodule because minor modifications were made for compatibility with this project.

Running the Simulator

  1. Activate the virtual environment.
  2. Set the PYTHONPATH environment variable to the project root folder:
env:PYTHONPATH="C:\path\to\project_root"
  1. Navigate to the simulator folder:
cd C:\path\to\project_root\simulator
  1. Run the GUI:
python main.py

Optional: Recreate Micius experiments
To do this, click Load Preset in the GUI and select any pass from the micius_data folder (.json files).

⚠️ Note: To automatically recreate past mission passes with realistic weather, make sure to enable the optional automatic weather feature by setting up the Copernicus CDS and ADS API keys as described below.

Optional: Recreate passes from past missions using automatic weather
To use this feature, you need API access from Copernicus Climate and Atmosphere Data Stores:

  1. Create an account at Copernicus CDS, accept the terms of use for ERA5 Single Levels, and get your API key from your profile.
  2. Create an account at Copernicus ADS, accept the terms for CAMS Global Reanalysis EAC4, and get your API key.
  3. Create a .env file in the project root and add your keys as:
CDS_API_KEY=<your_cds_api_key>
ADS_API_KEY=<your_ads_api_key>

Running the Protocol Tracing Component

  1. Open two separate PowerShell windows.
  2. In both, navigate to the tracing folder:
cd C:\path\to\project_root\tracing
  1. Set the PYTHONPATH environment variable to the project root folder:
env:PYTHONPATH="C:\path\to\project_root"
  1. In the first window, run the ground station simulation:
python ground.py"
  1. In the second window, run the satellite simulation:
python satellite.py

Note: Simulation parameters can be modified in config_educ.py located inside the tracing folder before running the scripts.

Finding public TLE data

We recommend using Space-Track for both historic and new satellite TLE data. An account is required to access TLE information.

Related Publication

A manuscript related to this repository has been submitted to the
IEEE Journal on Selected Areas in Communications (JSAC).

Authors: Javier López-Cerezo, Cristina Alcaraz, and Javier López
Status: Submitted (under review)

About

OpenSATQKD: An End-to-End Open-Source Simulator for Planning and Evaluating Satellite QKD Missions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages