Giter Site home page Giter Site logo

tasty's Introduction

Summary

TASTY is a Tool for Automating (i.e., describing, generating, executing, benchmarking, and comparing) efficient Secure Two-partY computation protocols using combinations of garbled circuits and homomorphic encryption techniques.

The source code of TASTY is available at https://github.com/tastyproject/tasty.

The documentation on how to install and use TASTY can be found at [https://github.com/encryptogroup/tasty/blob/master/wiki/Doc_Binary.wiki]

Publications

The following publication contains a detailed description of TASTY:

The underlying protocols are described in the following two publications:

Contact

Thomas Schneider

tasty's People

Contributors

dd23 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tasty's Issues

signed garbled computations broken

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 [email protected] on 2 May 2011 at 2:42

Conversion to GarbledVec is broken

Try to run:
Protocol:
    # input of client
    client.v = UnsignedVec(bitlen=8, dim=2)
    client.v.input(desc="enter values for v")
    # convert unsigned to garbled vector
    client.gv = GarbledVec(val=client.v)

You'll get:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/bin/tasty", line 8, in <module>
    load_entry_point('Tasty==Binary', 'console_scripts', 'tasty')()
  File "tasty/scripts/main.py", line 36, in start
  File "tasty/protocol_mode.py", line 137, in process_server_mode
  File "tasty/tastyc/tastyc.py", line 249, in compiler_start
  File "tasty/tastyc/analyze_costs.py", line 217, in analyze_costs
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 243, in visit
    return visitor(node)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 251, in generic_visit
    self.visit(item)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 243, in visit
    return visitor(node)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 251, in generic_visit
    self.visit(item)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 243, in visit
    return visitor(node)
  File "tasty/tastyc/analyze_costs.py", line 138, in visit_Assign
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 243, in visit
    return visitor(node)
  File "tasty/tastyc/analyze_costs.py", line 185, in visit_Call
  File "tasty/tastyc/analyze_costs.py", line 146, in visit_constructor
  File "tasty/tastyc/analyze_costs.py", line 210, in check_costs
  File "tasty/types/__init__.py", line 2197, in calc_costs

NotImplementedError: calc_costs() not implemented for 
GarbledVec.GarbledVec([<class 'tasty.types.UnsignedVec'>])


Same with SignedVec and ModularVec to GarbledVec.
I'm running Tasty 0.1.3 on MacOSX 10.6.8 with Python 2.7.1

P.S. All but one testcases in tasty/tests/functional/conversion_tests.py are 
commented out.

Original issue reported on code.google.com by [email protected] on 5 Jul 2011 at 12:40

Circuit Conversion Tool

Reported by project member thomaschneider, Today (moments ago)
Requested feature:
TASTY could provide a tool that allows to read in circuits in one format, 
potentially apply different optimizations and output the circuit in a different 
format.

See also: run_SPFOptimizer of FairplaySPF
  * http://www.trust.rub.de/FairplaySPF
  * http://www.trust.rub.de/media/trust/projects/fairplayspf/ReadmeSPF.txt

Why does the feature make TASTY better?
This feature would allow offline optimization of circuits and conversion 
between different formats.

Original issue reported on code.google.com by [email protected] on 1 Jul 2011 at 10:17

Question for Set Intersection Example

Hi,
I got this error for the set intersection protocol: AttributeError: 'Compare' object has no attribute 'i'
It may be related to this part of the code.
# compute intersection of c.X and c.barY
for e in c.X:
if e in c.barY:
c.output(e, desc="in output set")

Do you have any clue how to fix it? Thanks very much!

tasty_init issue

What steps will reproduce the problem?
1. $ tasty_init tasty_example

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

Traceback (most recent call last):
  File "/usr/bin/tasty_init", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 16, in <module>
    import sys, os, zipimport, time, re, imp, types
  File "/usr/lib/python2.7/os.py", line 398, in <module>
    import UserDict
  File "/usr/lib/python2.7/UserDict.py", line 84, in <module>
    _abcoll.MutableMapping.register(IterableUserDict)
  File "/usr/lib/python2.7/abc.py", line 109, in register
    if issubclass(subclass, cls):
  File "/usr/lib/python2.7/abc.py", line 151, in __subclasscheck__
    if subclass in cls._abc_cache:
  File "/usr/lib/python2.7/_weakrefset.py", line 69, in __contains__
    return ref(item) in self.data
TypeError: cannot create weak reference to 'classobj' object

Both Python 2.6 and Python 2.7 are installed and I tried installing the 
versions of TASTY for each of these versions of Python, but I get the same 
error message.

Please use labels and text to provide additional information.


Original issue reported on code.google.com by [email protected] on 25 May 2011 at 9:53

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.