A Thresholdbased Actively Secure Runtime

A thresholdbased actively secure runtime.

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

Default mix of BasicActiveRuntime and TriplesPRSSMixin.

digraph inheritance829e2e2490 {
rankdir=LR;
size="8.0, 12.0";
  "TriplesPRSSMixin" [style="setlinewidth(0.5)",URL="#viff.active.TriplesPRSSMixin",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "BasicActiveRuntime" [style="setlinewidth(0.5)",URL="#viff.active.BasicActiveRuntime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "PassiveRuntime" -> "BasicActiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "ActiveRuntime" [style="setlinewidth(0.5)",URL="#viff.active.ActiveRuntime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "TriplesPRSSMixin" -> "ActiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "BasicActiveRuntime" -> "ActiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "Runtime" [style="setlinewidth(0.5)",URL="runtime.html#viff.runtime.Runtime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "PassiveRuntime" [style="setlinewidth(0.5)",URL="passive.html#viff.passive.PassiveRuntime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "Runtime" -> "PassiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

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.

digraph inheritance3685e35c7f {
rankdir=LR;
size="8.0, 12.0";
  "PassiveRuntime" [style="setlinewidth(0.5)",URL="passive.html#viff.passive.PassiveRuntime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "Runtime" -> "PassiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "BasicActiveRuntime" [style="setlinewidth(0.5)",URL="#viff.active.BasicActiveRuntime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
  "PassiveRuntime" -> "BasicActiveRuntime" [arrowsize=0.5,style="setlinewidth(0.5)"];
  "Runtime" [style="setlinewidth(0.5)",URL="runtime.html#viff.runtime.Runtime",fontname=Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans,height=0.25,shape=box,fontsize=10];
}

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