Clone repos:
$ git clone git@github.com:januspaper/deco12mte-reimplementation.git
$ git checkout handshake
Create a Docker image. You only have to do this once.
$ docker build -t deco .
Spin up a Docker container from the image.
$ docker run -it deco
Please note that any changes you make in the container are not persistent.
Execute the same docker container in another two seperate consoles.
$ docker exec -it CONTAINERID /bin/bash
Change directory to app folder.
$ cd ~/deco-oracle/app
Change to the corresponding directory
$ cd ~/deco-oracle/app/server
Always run server(verifier) first
$ go run ./server.go
Then run verifier(server)
$ go run ./verifier.go
Run client at last
$ go run ./client.go
We need to implement the following components in MPC:
- ADD Gate
- PRF SHA-256 Gate for (i) master secret (ii) key derivation
- Two XOR Gates
Tricky part: How to design the SHA-256 Gate without extensive effort?
- Bristol Fashion MPC circuit for SHA256 can be found here.
- The circuit was created in VHDL as specified in SCALE MAMBA here
- SCALE MAMBA has an extremely good documentation, see here
- Another implementation is described in this paper, however I did not yet find the circuit file for their implementation.
- It probably makes the most sense to base the MPC imlementation on the EMP toolkit, as it provides an extensive framework. However, their documentation is a bit sparse.
- The ABY toolkit is very neat, however we would not be able to use the SHA256 circuit, as they use a circuit description that is slightly different to the Bristol fashion. The documentation is very good to get a general understanding, I recommend taking a look here.
Malicious MPC:
- With semi-honest MPC we run into a problem - the party who constructs the garbled circuit could just cheat. In order to prevent such behavior, we have the party construct many copies of the circuit and then ask it to open half of them
- Not very efficient BUT much more secure than semi-honest.
- DECO protocol is based on this paper.