snwagh / falcon-public

Implementation of protocols in Falcon
91 stars 46 forks source link

Using Randomness function of AESObject #38

Open chenshuyuhhh opened 2 years ago

chenshuyuhhh commented 2 years ago

Hey, snwagh. I have been reading your paper Falcon. I am interested in how to use randomness functions of AESObject in Falcon.

e.g. let partyA and partyB have r1, partyB and partyC have r2, and partyC and partyA have r3.

  1. Maybe, randomness can get from api PrecomputeObject.getTriplets, but all randomness in Precompute is 0, since the following code:
    std::make_pair(0,0);
  2. So can using std::make_pair(getxxBits(), getxxBits()) to replace std::make_pair(0,0) achieve RSS of randomness?
    # AESObject 
    myType get64Bits();
    smallType get8Bits();
snwagh commented 2 years ago

Two aspects to this: first yes, you can use the AES calls to get common randomness across parties. However, to get beaver triples, a lot more has to happen -- if a * b = c is the triple and each value is secret shared as a_1, a_2, a_3 etc, then computing a, b can be randomly chosen using the AES calls but then c is constraint to specific values (and thus there is a constraint among c_1, c_2, c_3).

Consequently, you need secure computation protocols to securely generate such triples. However, if you are looking to simply randomize the triples instead of make_pair(0,0), then you can achieve this using some combination of the AES function calls (you will use some global randomness, i.e., values known to all 3 parties, in this process)

chenshuyuhhh commented 2 years ago

Your explanation is very clear! ! ! Thank you so much! ! !