shamir.shamir_secret_sharing_integers module
Utility for Shamir secret sharing over the integers.
Bases:
object
Class that keeps track of the shares for a certain value that is secret shared over the integers.
Add the shares belonging to the two given IntegerShares values together.
- Parameters:
other (
IntegerShares
) – Shares to be added to these shares.- Raises:
ValueError – In case a different secret sharing scheme was used.
- Return type:
- Returns:
New IntegerShares object where the shares have been added together.
Multiply the shares belonging to the two given IntegerShares values together. Only possible when both schemes are the same.
- Parameters:
other (
IntegerShares
) – Shares to be multiplied with these shares.- Return type:
- Returns:
New IntegerShares object where the shares have been multiplied together.
Multiply the shares belonging to this value with a given scalar integer or ShamirShares object.
- Parameters:
other (
Any
) – ShamirShares or scalar to be multiplied with these shares.- Return type:
Any
- Returns:
New IntegerShares object where the shares have been multiplied together.
Function that uses the shares from other parties to reconstruct the secret
- Parameters:
modulus (
int
) – the modulus to use- Raises:
ValueError – In case not enough shares are present to reconstruct the secret.
- Return type:
int
- Returns:
original secret
Serialization function
- Return type:
Dict
[str
,Union
[int
,Dict
[int
,int
],Dict
[str
,int
],Dict
[str
,Dict
[str
,int
]]]]- Returns:
json object containing the necessary information to deserialize
- class shamir.shamir_secret_sharing_integers.ShamirSecretSharingIntegers(kappa=40, max_int=5, number_of_parties=10, polynomial_degree=4)[source]
Bases:
object
Class with Shamir Secret sharing functionality over the integers
- __eq__(other)[source]
Compare equality between this ShamirSecretSharingIntegers and the other object.
- Parameters:
other (
object
) – Object to compare with.- Return type:
bool
- Returns:
Boolean stating (in)equality
- __init__(kappa=40, max_int=5, number_of_parties=10, polynomial_degree=4)[source]
Initialize a secret sharing over the integers
- Parameters:
kappa (
int
) – statistical security parametermax_int (
int
) – Value that together with kappa and number_of_parties determines the interval from which polynomial coefficients are randomly sampled. In general, the Paillier modulus is used for max.number_of_parties (
int
) – number of shares that need to be created for each sharingpolynomial_degree (
int
) – degree of polynomials used to share secrets
- serialize()[source]
Serialization function
- Return type:
Dict
[str
,int
]- Returns:
json object containing the necessary information to deserialize
Function that creates shares of a value for each party
- Parameters:
secret (
int
) – secret to be shared- Return type:
- Returns:
sharing of the secret
- property van_der_monde: List[List[int]]
Vandermonde matrix for evaluation of polynomials at points [1,..,n]. This essentialy creates a matrix that precomputes i**j for all possible i**j that are needed for the evaluation of sharing polynomials. We now have that i**j = Vm[i][j]. To evaluate a polynomial p(x) = a0 + a1 * x + … + ad * x**d we can simply compute a0 * Vm[x][0] + a1 * Vm[x][1] + … + ad * Vm[x][d].
- Returns:
A VanDerMonde matrix of dimpensions self.polynomial_degree + 1 x self.number_of_parties