encryptogroup / tasty

Tool for Automating efficient Secure Two-partY computation protocols
9 stars 5 forks source link

signed garbled computations broken #1

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Doing some arithmetic calculations with negative signed Garbled type, using 
following protocol:

{{{
def protocol(client, server):
    # input of client
    client.a = Signed(bitlen=32, val=-2)
    client.a2 = Signed(bitlen=32, val=-2)
    client.b = Signed(bitlen=32, val=2)
    client.c = Signed(bitlen=32, val=0)

    # compute minimum value
    client.ga = Garbled(val=client.a)
    client.ga2 = Garbled(val=client.a2)
    client.gb = Garbled(val=client.b)
    client.gc = Garbled(val=client.c)

    client.gaa = client.ga + client.ga
    client.gaa2 = client.ga + client.ga2
    client.gab = client.ga + client.gb
    client.gbb = client.gb + client.gb
    client.gac = client.ga + client.gc
    client.gbc = client.gb + client.gc
    client.gcc = client.gc + client.gc

    client.aa = Signed(val=client.gaa)
    client.aa2 = Signed(val=client.gaa2)
    client.ab = Signed(val=client.gab)
    client.bb = Signed(val=client.gbb)
    client.ac = Signed(val=client.gac)
    client.bc = Signed(val=client.gbc)
    client.cc = Signed(val=client.gcc)

    client.aa.output(desc="aa: -2 + -2 = -4")
    client.aa2.output(desc="aa2: -2 + -2 = -4")
    client.ab.output(desc="ab: -2 +  2 =  0")
    client.bb.output(desc="bb:  2 +  2 =  4")
    client.ac.output(desc="ac: -2 +  0 = -2")
    client.bc.output(desc="bc:  2 +  0 =  2")
    client.cc.output(desc="cc:  0 +  0 =  0")
}}}

What is the expected output? What do you see instead?

client: aa: -2 + -2 = -4: 4294967292
client: aa2: -2 + -2 = -4: 4294967292
client: ab: -2 +  2 =  0: -4294967296
client: bb:  2 +  2 =  4: 4
client: ac: -2 +  0 = -2: 4294967294
client: bc:  2 +  0 =  2: 2
client: cc:  0 +  0 =  0: 0

Original issue reported on code.google.com by stefan.k...@rub.de on 2 May 2011 at 2:42