# DSKE Poc ## Introduction This is a proof of concept of the DSKE system, the main goal is to demonstrate the algorithm in the DSKE. There are a few assumptions are limitations in this proof-of-concept project. 1. This is not a working protocol, this project is just to prove the algorithm concept. 2. This project is demonstrating a simple DSKE protocol, which means n = k. It is a (n, n) secret sharing scheme. 3. The code assumes that the final key sender (Alice) chooses all her security hubs and all her security hubs include the receiver (Bob) as another client. 4. The code assumes that all the random bits transfer successfully. Bob won't abort the protocol in the key construction phase. 5. The code assumes every security hub and client won't run out of random bits. ## DSKE Main Phases 1. PSKM generation and distribution the `SecurityHub.register_client` method will generate random bits, store it and return the clone of the random bits. `Client.register_securityhub` method will store the random bits clone so that the security hub and the client will have their copy of the random bits. 2. Peer identity establishment For this proof-of-concept project, the code assumes that the sender (Alice) and the receiver (Bob) are registered in the same security hubs. 3. Key agreement 1. Share generation The proof-of-concept project will use (n, n) secret sharing scheme in a simple DSKE protocol, using all the security hubs the user registered. The final key S can be checked by the method `Client.generate_final_key`. 2. Share distribution Each security hub will use the method `SecurityHub.generate_key_instruction` to generate a key instruction A (Alice's random bits) XOR B (Bob's random bits). 3. Key Reconstruction Bob can use the method `Client.retrieve_key` to calculate A ^ B ^ B to retrieve A in each share. Bob can reconstruct the final key S by executing XOR in every share in the simple DSKE protocol (n, n) secret sharing scheme. 4. Key validation The proof-of-concept project assumes all the share's key instructions are delivered correctly, the simple DSKE protocol with (n, n) secret sharing scheme won't be abort in this proof-of-concept project. ## Getting Started ```bash cargo run ```