COBRA is a fully-featured state machine replication library that guarantees the confidentiality of the data. Confidentiality is ensured by integrating a secret sharing mechanism into the modified BFT-SMaRt library, a fully-featured replication library without confidentiality guarantees.
This repository presents all the changes made to the original COBRA repository. This new version of COBRA was used in my Master's thesis "Virtual and Distributed Hardware Security Module for Secure Key Management". It was adapted to allow the configuration of any elliptic curve parameters so we could generate keys for different signature schemes that required a specific elliptic curve.
The COBRA library is primarily implemented in Java and currently uses Gradle to compile, package, and deploy compiled code for local testing. The current COBRA library was tested using Java 17.
First, clone this repository. Now inside the root folder, follow the following instructions:
- Compile and package to locally test the library: Execute
./gradlew simpleLocalDeploy
. The execution of Gradle tasksimpleLocalDeploy
will create the folderbuild/local
containing all the necessary files to start testing.
NOTE: Following commands considers the WSL/Linux operating system.
Running the keygen demo (4 replicas tolerating 1 fault):
Execute the following commands across four different server consoles from within
the folder build/local
:
build/local$ ./run.sh confidential.demo.keygen.server.Server 0
build/local$ ./run.sh confidential.demo.keygen.server.Server 1
build/local$ ./run.sh confidential.demo.keygen.server.Server 2
build/local$ ./run.sh confidential.demo.keygen.server.Server 3
Once all replicas are ready, the client can be launched by executing the following command in
the same directory build/local
:
build/local$./run.sh confidential.demo.keygen.client.Client 1
This library is a proof-of-concept implementation and not a production-ready implementation.
For more info about this library access the original repository here.