@@ -409,3 +409,59 @@ When a client GETs a key share from a hub, the share is in the GET response:
409409 * The client allocates the encryption key from the remote PSRD pool for that hub.
410410
411411 * The client decrypts the share data.
412+
413+ ## Future enhancements
414+
415+ In this section we list some potential future enhancements to the DSKE protocol.
416+
417+ ### Clients register with a subset of the hubs
418+
419+ In our current implementation and also in the IETF draft, it is required that the client registers
420+ itself with _ all_ of the hubs in the network when the client is onboarded.
421+ As the network grows and the number of hubs becomes very large and dynamic, this may become a
422+ problem.
423+ In the future, it would be useful to enhance the protocol so that a client can register itself with
424+ only a subset of the hubs.
425+ This, however, introduces another challenge:
426+ when two clients want to establish a key, they have to agree on a set of hubs that they have in
427+ common that can act as relays.
428+ Or, alternatively, a mechanism could be introduced to do multi-hop relaying of key shares across
429+ a series of multiple hubs.
430+
431+ ### Add support for key multicast
432+
433+ The current implementation only allows a master SAE (encryptor) to establish a key with a single
434+ slave SAE (encryptor).
435+ [ ETSI GS QKD 014 V1.1.1 (2019-02)] ( https://www.etsi.org/deliver/etsi_gs/QKD/001_099/014/01.01.01_60/gs_qkd014v010101p.pdf )
436+ allows a master SAE to establish a key with more than one slave SAE;
437+ this is referred to as key multicast.
438+
439+ ### Full implementation of ETSI GS QKD 014 API
440+
441+ The repository contains a subset implementation of
442+ [ ETSI GS QKD 014 V1.1.1 (2019-02)] ( https://www.etsi.org/deliver/etsi_gs/QKD/001_099/014/01.01.01_60/gs_qkd014v010101p.pdf )
443+ for the purpose of delivering keys to encryptors.
444+ Since the purpose of this repository is to provide proof-of-concept for the DSKE protocol and
445+ not to have a full standards-compliant implementation of ETSI GS QKD 014, many simplifications have
446+ been made including:
447+
448+ * The ETSI GS QKD 014 API uses HTTP and not HTTPS; it is neither encrypted nor authenticated.
449+
450+ * Each KMS (client node) can only have one local SAE (encryptor) and it is assumed that the
451+ SAE ID is equal to the client node name.
452+
453+ * The ` GET ` method for the ` Get key ` interface does not support the query parameter ` number ` .
454+ Only one key can be retrieved per API call.
455+
456+ * The ` POST ` method for the ` Get key ` interface is not supported.
457+
458+ * The ` POST ` method for the ` Get key with key IDs ` interface is not supported.
459+
460+ * Error handling is not as robust as it should be.
461+
462+ ### Unregistration
463+
464+ When a client starts, it registers itself with all hubs, using the PUT registration API.
465+ Currently, client never unregister.
466+ We can add an unregistration mechanism by adding a DELETE registration API and calling it
467+ when a client shuts down orderly.
0 commit comments