A Thresholdbased Actively Secure Runtime

A thresholdbased actively secure runtime.

class viff.active.ActiveRuntime(player, threshold, options=None)

Default mix of BasicActiveRuntime and TriplesPRSSMixin.

Inheritance diagram of ActiveRuntime

class viff.active.BasicActiveRuntime(player, threshold, options=None)

Basic runtime secure against active adversaries.

This class depends on either TriplesHyperinvertibleMatricesMixin or TriplesPRSSMixin to provide a get_triple() method.

Instead of using this class directly, one should probably use ActiveRuntime instead.

Inheritance diagram of BasicActiveRuntime

mul(share_x, share_y)

Multiplication of shares.

Preprocessing: 1 multiplication triple. Communication: 2 openings.

class viff.active.BrachaBroadcastMixin

Bracha broadcast mixin class. This mixin class adds a broadcast() method which can be used for a reliable broadcast.

broadcast(senders, message=None)

Perform one or more Bracha broadcast(s).

The list of senders given will determine the subset of players who wish to broadcast a message. If this player wishes to broadcast, its ID must be in the list of senders and the optional message parameter must be used.

If the list of senders consists only of a single sender, the result will be a single element, otherwise it will be a list.

A Bracha broadcast is reliable against an active adversary corrupting up to t < n/3 of the players. For more details, see the paper “An asynchronous [(n-1)/3]-resilient consensus protocol” by G. Bracha in Proc. 3rd ACM Symposium on Principles of Distributed Computing, 1984, pages 154-162.

class viff.active.TriplesHyperinvertibleMatricesMixin

Mixin class which generates multiplication triples using hyperinvertible matrices.

double_share_random(T, d1, d2, field)

Double-share a random secret using two polynomials.

The guarantee is that a number of shares are made and out of those, the T that are returned by this method will be correct double-sharings of a random number using d1 and d2 as the polynomial degrees.

generate_triples(field, quantity=None, gather=True)

Generate multiplication triples.

These are random numbers a, b, and c such that c = ab. This function can be used in pre-processing.

Returns a tuple with the number of triples generated and a Deferred which will yield a list of 3-tuples.

single_share_random(T, degree, field)

Share a random secret.

The guarantee is that a number of shares are made and out of those, the T that are returned by this method will be correct sharings of a random number using degree as the polynomial degree.

class viff.active.TriplesPRSSMixin

Mixin class for generating multiplication triples using PRSS.

generate_triples(field, quantity=1, gather=True)

Generate quantity multiplication triples using PRSS.

These are random numbers a, b, and c such that c = ab. This function can be used in pre-processing.

Returns a tuple with the number of triples generated and a Deferred which will yield a singleton-list with a 3-tuple.

Previous topic

Passive Secure Protocols

Next topic

Paillier Crypto System

This Page