emp-toolkit / emp-ag2pc

Authenticated Garbling and Efficient Maliciously Secure Two-Party Computation
Other
23 stars 19 forks source link

Overview of this repository #38

Open evilpoke opened 11 months ago

evilpoke commented 11 months ago

Disclaimer ! ! I couldn't find a documenation for the toolkit library EMP-tool and the emp-ag2pc only has a paper (which I am currently still reading). Because of a lack of docs and me not really having a very deep understanding of cpp I thus also have trouble understanding the code examples. If you think that both questions below I can answer easily after I have read the paper and listened to Wangs talk, you can also just tell me that. If you otherwise do not think that, then I would really appreciate an answer :) I really would just like to know into what I would like to invest my time into to be able to answer the below questions:


Question 1: (closely related to Q2 below)

How do i get the sample code of an SoK paper referenced here (which computes the dot product of two vectors) run in a malicious setting (so emp-ag2pc) with arbitrary input?

What i already tried:

  1. I compiled this file https://github.com/MPC-SoK/frameworks/blob/master/emp/sh_test/test/innerprod.cpp with non-zero hardcoded input: Executed was actually just this part:
  2. Generated a circuit (with innerprod -m)
  3. Used the boilerplate code from https://github.com/MPC-SoK/frameworks/blob/master/emp/ag_test/test/agmult3.cpp subsituting the circuit text
  4. Compiled, executed, got this:
[1] 1128
connected
./innerprod.circuit.txt
connected
./innerprod.circuit.txt
160 160 16 2602
160 160 16 2602
one time:   1   29461
one time:   2   30879
ABIT    3681
check   1509
permute 476
inde:   1   6023
inde:   2   4668
dep:    2   1279
input size: max 160 160
input for 2: 0
dep:    1   1367
input size: max 160 160
input for 1: 0
online: 1   12
0 no match GT!
1 no match GT!
2 no match GT!
[...]
2589 no match GT!
2600 no match GT!
2601 no match GT!
online: 2   2677
[1]+  Done                    ./bin/customluncher 1 12345
  1. Among this stuff, i don't see my expected result printed.

I get a similar output when I just execute the build from https://github.com/MPC-SoK/frameworks/blob/master/emp/ag_test/test/agmult3.cpp as is.

Question 2 (related to Q1)

Now looking at this sample file:

What (on a high level) is twopc.function_independent(); and twopc.function_dependent(); and twopc.online(in, out); doing.

wangxiao1254 commented 11 months ago

Q1: Please see if you can run examples in this repo. If that also report error, please paste them. If the error only appears using the circuit from their repo, it could be a different problem.

Q2: I think reading the first 2-3 pages of our paper would help more than I pasting them here!