diff --git a/content/DQKD/_index.md b/content/DQKD/_index.md new file mode 100644 index 0000000..e9231df --- /dev/null +++ b/content/DQKD/_index.md @@ -0,0 +1,61 @@ ++++ +menuTitle = "DQKD" +title = "Digital Quantum Key Distribution (DQKD) " +date = 2021-12-14T11:01:08-04:00 +weight = 2 +disableToc = "true" ++++ + +## What is DQKD? + +Alice is at one location (Site A), and Bob is at a different location (Site B). Each location has its own Key Management Entity (KME) that stores keys and makes them available for use by local clients. + +Alice wants to generate a symmetric encryption key and store it in the KME at Site A. She also wants to share that key with Bob and store it in the KME at Site B. It should then be possible to retrieve the key from either site, using the same key id. + +Traditional QKD systems use isolated fiber-optic or satellite based networks to send the key material between the sites. + +Qrypt's DQKD solution uses Qrypt's [BLAST](https://www.qrypt.com/wp-content/uploads/2022/03/Whitepaper-EverlastingSecurity.pdf#page=9) protocol instead. The advantage of this protocol is that it makes it possible to exchange keys between sites securely over the public internet, without having to establish an isolated fiber-optic or satellite network. +## How it works: +A DQKD cluster consists of multiple sites, each of which has a KME that is identified by a unique KME ID. + +Each site has a server exposes the same API, which is an instance of the [ETSI GS QKD 014](https://www.etsi.org/deliver/etsi_gs/QKD/001_099/014/01.01.01_60/gs_qkd014v010101p.pdf) specification. + +The cluster is secured using a single certificate trust chain. All endpoints on the cluster enforce mutual TLS, so all clients will need a client cert that is part of the same trust chain to call the endpoints on the respective sites. + +### Generating a key - example data flow +- Alice calls the enc_keys endpoint on Site A to generate a key that she wants to share with Bob: +``` + curl --cert My_Certs.p12 \ + "https://dqkd-eastus-1.qrypt.net/api/v1/keys/(Bob's KME ID)/enc_keys" +``` +- The DQKD server uses the BLAST protocol to generate a key and a new random key ID, and stores the key in the local KME + +- The key ID and metadata required to re-genrate that key is sent to site B. + +- The DQKD server at site B receives the metadata and uses it to re-generate the key. + +- The key is then stored and associated with the key ID in site B's KME. + +- Alice receives the key material along with the key ID in the response to her original request: + +``` +{"keys": [{"key": "KEY_MATERIAL","key_ID": "SOME_KEY_ID"}]} +``` + +- Alice sends Bob the key ID. + +- Bob calls the dec_keys endpoint on the DQKD server at site B to get a copy of the key: +``` + curl --cert My_Cert.p12 \ + "https://dqkd-westus-1.qrypt.net/api/v1/keys/(Alice's KME ID)/dec_keys" \ + -H "Content-Type: application/json" \ + -d '{"key_IDs": [{"key_ID": "SOME_KEY_ID"}]}' +``` +- Bob receives the key material in the response: +``` +{"keys": [{"key": "KEY_MATERIAL", "key_ID": "SOME_KEY_ID"}]} +``` + + +### Data flow - Illustrated +![FullPage](images/dqkddiagram.svg) diff --git a/content/DQKD/images/dqkddiagram.svg b/content/DQKD/images/dqkddiagram.svg new file mode 100644 index 0000000..fa6f955 --- /dev/null +++ b/content/DQKD/images/dqkddiagram.svg @@ -0,0 +1,11 @@ + + + + + + + + Alice's KMEBob's KMEAliceBobBLAST serversMetadata to reproduce key sent"Generate 1 key andsend a copy of the metadata to Bob'sKME"KEY: XFAJYJHVXKEY ID: "Key 1"Step 1Step 2Step 4Send key ID through any channel"Key ID is 1"Step 5"I want 'Key 1' thatwas generated on Alice's KME"KEY: XFAJYJHVXKEY ID: "Key 1"Step 6Step 3 (Server side)SITE BSITE AOver the public internet...server: "BLST:3kqxqsdsd..." \ No newline at end of file diff --git a/docs/404.html b/docs/404.html index 872e91f..9d8c3cd 100644 --- a/docs/404.html +++ b/docs/404.html @@ -9,15 +9,15 @@ 404 Page not found - - - - - - - + + + + + + + - + + + + Alice's KMEBob's KMEAliceBobBLAST serversMetadata to reproduce key sent"Generate 1 key andsend a copy of the metadata to Bob'sKME"KEY: XFAJYJHVXKEY ID: "Key 1"Step 1Step 2Step 4Send key ID through any channel"Key ID is 1"Step 5"I want 'Key 1' thatwas generated on Alice's KME"KEY: XFAJYJHVXKEY ID: "Key 1"Step 6Step 3 (Server side)SITE BSITE AOver the public internet...server: "BLST:3kqxqsdsd..." \ No newline at end of file diff --git a/docs/dqkd/index.html b/docs/dqkd/index.html new file mode 100644 index 0000000..ff2917a --- /dev/null +++ b/docs/dqkd/index.html @@ -0,0 +1,1032 @@ + + + + + + + + + + + + Digital Quantum Key Distribution (DQKD) :: Qrypt + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+ + + + + + + +
+ +

+ + Digital Quantum Key Distribution (DQKD) +

+ + + + + + +

What is DQKD?

+

Alice is at one location (Site A), and Bob is at a different location (Site B). Each location has its own Key Management Entity (KME) that stores keys and makes them available for use by local clients.

+

Alice wants to generate a symmetric encryption key and store it in the KME at Site A. She also wants to share that key with Bob and store it in the KME at Site B. It should then be possible to retrieve the key from either site, using the same key id.

+

Traditional QKD systems use isolated fiber-optic or satellite based networks to send the key material between the sites.

+

Qrypt’s DQKD solution uses Qrypt’s BLAST protocol instead. The advantage of this protocol is that it makes it possible to exchange keys between sites securely over the public internet, without having to establish an isolated fiber-optic or satellite network.

+

How it works:

+

A DQKD cluster consists of multiple sites, each of which has a KME that is identified by a unique KME ID.

+

Each site has a server exposes the same API, which is an instance of the ETSI GS QKD 014 specification.

+

The cluster is secured using a single certificate trust chain. All endpoints on the cluster enforce mutual TLS, so all clients will need a client cert that is part of the same trust chain to call the endpoints on the respective sites.

+

Generating a key - example data flow

+
    +
  • Alice calls the enc_keys endpoint on Site A to generate a key that she wants to share with Bob:
  • +
+
 curl --cert My_Certs.p12 \
+    "https://dqkd-eastus-1.qrypt.net/api/v1/keys/(Bob's KME ID)/enc_keys"
+
    +
  • +

    The DQKD server uses the BLAST protocol to generate a key and a new random key ID, and stores the key in the local KME

    +
  • +
  • +

    The key ID and metadata required to re-genrate that key is sent to site B.

    +
  • +
  • +

    The DQKD server at site B receives the metadata and uses it to re-generate the key.

    +
  • +
  • +

    The key is then stored and associated with the key ID in site B’s KME.

    +
  • +
  • +

    Alice receives the key material along with the key ID in the response to her original request:

    +
  • +
+
{"keys": [{"key": "KEY_MATERIAL","key_ID": "SOME_KEY_ID"}]}
+
    +
  • +

    Alice sends Bob the key ID.

    +
  • +
  • +

    Bob calls the dec_keys endpoint on the DQKD server at site B to get a copy of the key:

    +
  • +
+
 curl --cert My_Cert.p12 \
+    "https://dqkd-westus-1.qrypt.net/api/v1/keys/(Alice's KME ID)/dec_keys" \
+    -H "Content-Type: application/json" \
+    -d '{"key_IDs": [{"key_ID": "SOME_KEY_ID"}]}'
+
    +
  • Bob receives the key material in the response:
  • +
+
{"keys": [{"key": "KEY_MATERIAL", "key_ID": "SOME_KEY_ID"}]} 
+

Data flow - Illustrated

+

FullPage

+ + + + + +
+ +
+ + +
+ + +
+ + + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + diff --git a/docs/dqkd/index.xml b/docs/dqkd/index.xml new file mode 100644 index 0000000..1f11203 --- /dev/null +++ b/docs/dqkd/index.xml @@ -0,0 +1,12 @@ + + + + Digital Quantum Key Distribution (DQKD) on Qrypt + https://QryptInc.github.io/dqkd/ + Recent content in Digital Quantum Key Distribution (DQKD) on Qrypt + Hugo + en-us + + + + diff --git a/docs/eaas/appliance/index.html b/docs/eaas/appliance/index.html index 65c784b..f3ea705 100644 --- a/docs/eaas/appliance/index.html +++ b/docs/eaas/appliance/index.html @@ -3,7 +3,7 @@ - + @@ -12,22 +12,22 @@ :: Qrypt - - - - - - - - - - + + + + + + + + + + - + - + @@ -147,6 +147,21 @@ +
  • + + DQKD + + +
  • +
  • Performance - - + + - - + + - - + +
    256 bit keys per requestRequests per second256 bit keys per requestRequests per second
    512~7,200512~7,200
    1~12,0001~12,000
    @@ -555,13 +570,13 @@

    Appliance Administration UI

    - - + + - - + - - + - - +
    StateExplanationStateExplanation
    Appliance Administration UI Active The card is healthy and streaming entropy.The card is healthy and streaming entropy.
    Appliance Administration UI Pending The card is in a temporary calibration state; this will resolve into either Active or Error.The card is in a temporary calibration state; this will resolve into either Active or Error.
    Appliance Administration UI Error The card is reporting an error; the error message can be found in details section.The card is reporting an error; the error message can be found in details section.
    @@ -815,7 +830,7 @@

    Server Specs

    - + @@ -1068,6 +1083,22 @@

    Server Specs

    + + + + + + + + + + + + + + + + @@ -1337,19 +1368,19 @@

    Server Specs

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Curl + + + + + + + + + + + + + + + + @@ -1156,19 +1187,19 @@

    Curl

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • JSON Response Fields + + + + + + + + + + + + + + + + @@ -1299,19 +1330,19 @@
    JSON Response Fields
    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • References + + + + + + + + + + + + + + + + @@ -958,19 +989,19 @@

    References

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Service Usage + + + + + + + + + + + + + + + + @@ -1016,19 +1047,19 @@

    Service Usage

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • + + + + + + + + + + + + + + + + @@ -963,19 +994,19 @@

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@

  • +
  • + + DQKD + + +
  • +
  • Explore Qrypt’s Services + + + + + + + + + + + + + + + + @@ -946,19 +977,19 @@

    Explore Qrypt’s Services

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Portable OpenSSH + + + + + + + + + + + + + + + + @@ -930,19 +961,19 @@

    Portable OpenSSH
    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@

  • +
  • + + DQKD + + +
  • +
  • Instructions to build from sourceInstructions to build from source
    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Setup + + + + + + + + + + + + + + + + @@ -937,19 +968,19 @@

    Setup

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Demo + + + + + + + + + + + + + + + + @@ -949,19 +980,19 @@

    Demo

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • + + + + + + + + + + + + + + + + @@ -935,19 +966,19 @@

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@

  • +
  • + + DQKD + + +
  • +
  • Qrypt SDK + + + + + + + + + + + + + + + + @@ -932,19 +963,19 @@

    Qrypt SDK

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • SDK v0.6.4 + + + + + + + + + + + + + + + + @@ -1028,19 +1059,19 @@

    SDK v0.6.4

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Nvidia Quantum Se + + + + + + + + + + + + + + + + @@ -939,19 +970,19 @@

    Nvidia Quantum Se
    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@

  • +
  • + + DQKD + + +
  • +
  • Create a directory to clone + + + + + + + + + + + + + + + + @@ -1366,19 +1397,19 @@

    Create a directory to clone
    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@

  • +
  • + + DQKD + + +
  • +
  • Library Compatibility - - - - + + + + - - - - + + + +
    PlatformVersionCompilerCPUPlatformVersionCompilerCPU
    Ubuntu22.04gcc 11.4.0x64Ubuntu22.04gcc 11.4.0x64
    @@ -677,6 +692,22 @@

    Library Compatibility

    + + + + + + + + + + + + + + + + @@ -956,19 +987,19 @@

    Library Compatibility

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Library Compatibility - - - - + + + + - - - - + + + +
    PlatformVersionCompilerCPUPlatformVersionCompilerCPU
    Ubuntu22.04gcc 11.4.0x64Ubuntu22.04gcc 11.4.0x64
    @@ -537,7 +552,7 @@

    Prerequisites

    A Qrypt Account. Create an account for free.


    Quickstarts

    -

    Distributed key generation

    +

    Distributed key generation

    Generate One-Time Pads
    @@ -686,6 +701,22 @@

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • Qrpyt SDK Quickstarts + + + + + + + + + + + + + + + + @@ -933,19 +964,19 @@

    Qrpyt SDK Quickstarts

    - - - - - - + + + + + + - - - + + + - + + @@ -147,6 +147,21 @@
  • +
  • + + DQKD + + +
  • +
  • + + + + + + + + + + + + + + + + @@ -926,19 +957,19 @@

    - - - - - - + + + + + + - - - + + + - +