Skip to content

Latest commit

 

History

History
149 lines (115 loc) · 3.54 KB

README.md

File metadata and controls

149 lines (115 loc) · 3.54 KB

Instructions

How to set up the server and run the client with a default configuration

Server

Installing

  • Create a conda environment (optional but recommended)
$ conda create -n Quantumacy python=3.8.10
$ conda activate Quantumacy
  • Install requirements
$ pip install QKDSimkit
  • Download, install and run Redis
$ wget https://download.redis.io/releases/redis-6.2.6.tar.gz
$ tar xzf redis-6.2.6.tar.gz
$ cd redis-6.2.6
$ make
$ src/redis-server

Redis is a requirement for the QKDSimkit server and QKDSimkit p2p

Executing

  • Run the server and the channel on the same machine, it will start both the server and the channel, the default addresses are 127.0.0.1:5002 for the server and 127.0.0.1:5000 for the channel
$ QKDSimkit server local
  • It is possible to run the channel with custom settings adding noise (-n) and simulating an eavesdropper (-e)
$ QKDSimkit server local -n 0.5 -e True
  • In case you want to share an already existing channel with other servers or with a peer to peer infrastructure you can use this command to connect the server to an external channel:
$ QKDSimkit server -a [host:port] external -ca [host:port]

Additional commands

  • Add a user: specify a token, it can be useful for multiple clients
$ QKDSimkit server add_user <token>
  • Retrieve keys from the server it is possible to specify a token (-t) to retrieve a specific set of keys
$ QKDSimkit server retrieve 

Help

For more options please check

$ QKDSimkit server -h
$ QKDSimkit server local -h
$ QKDSimkit server external -h
$ QKDSimkit server add_user -h
$ QKDSimkit server retrieve -h

Client

Installation

  • Create a conda environment (optional but recommended)
$ conda create -n Quantumacy python=3.8
$ conda activate Quantumacy
  • Install requirements
$ pip install QKDSimkit

Executing

  • Run client
$ QKDSimkit client [server_host:port] [channel_host:port]
  • It is possible to specify the number of keys (-n) and their size (-s):
$ QKDSimkit client [server_host:port] [channel_host:port] -n [num_keys] -s [size]
  • To handle multiple clients it is possible to run the client with a pre shared token
$ QKDSimkit client -t [token] [server_host:port] [channel_host:port] 
  • If you are using a token remember to add the same token to the server running on the server machine:
$ QKDSimkit server add_user [token]

Help

For more options please check

$ python client -h

P2P

The peer to peer mode provides two servers (Alice and Bob) to simulate a synchronous exchange, there are three components: the channel, Alice and Bob

  • Use the following command to run the channel, you can use this channel also in the Server-Client architecture and similarly it is possible to use custom settings like noise (-n) and eavesdropper (-e)
$ QKDSimkit channel -a [hostname:port]
  • Run Alice
$ QKDSimkit p2p alice -c [channel_address] -a [hostname:port]
  • Run Bob
$ QKDSimkit p2p bob -c [channel_address] -a [hostname:port]
  • You can use HTTP requests to Alice and Bob to start the exchange and retrieve keys.
    Check http://[address]/docs to access FastAPI documentation and to know more about HTTP request parameters

Authors

Contributor names and contact info:

Alberto Di Meglio

Gabriele Morello [email]

License

This project is licensed under the MIT License - see the LICENSE file for details

Version History

  • 0.0.6
  • 0.0.5
  • 0.0.2
  • 0.0.1
    • Initial Release

Acknowledgments