# Collaboration Without Compromise: A Guide to Secure Multiparty Computation

**Cryptography**

**advanced cryptography**

**Secure Multiparty Computation (SMC)** is a method of computing a function over private inputs, where each input is held by a different party, without revealing any unnecessary information to any other parties. It is a powerful technique that allows multiple parties to jointly perform a computation, while keeping their inputs private.

—

Difference between Multiparty Computation and Secure Multiparty Computation

Multiparty computation (MPC)is a method of computing a function over shared inputs, where each input is held by a different party, without revealing any unnecessary information to any of the other parties.

Secure Multiparty Computation (SMC)is a variant of MPC that guarantees the security of the computation, such that even if some of the parties are corrupted, the privacy of the inputs and the correctness of the output are still preserved.In simpler terms, MPC allows multiple parties to jointly compute a function on private inputs without revealing anything unnecessary to any other party, while SMC goes a step further and ensures that the computation is secure even in the presence of malicious parties.

—

One of the most important building blocks of SMC is secret sharing, which is a method for distributing a secret among a group of parties, such that only authorized parties can reconstruct the secret. Shamir Secret Sharing (SSS) is a widely used method for secret sharing, which was proposed by Adi Shamir in 1979.

The basic idea behind SSS is to divide a secret into n shares, such that any k shares can be used to reconstruct the secret, but any k-1 shares reveal no information about the secret. The secret is represented as a polynomial of degree k-1, and the shares are the values of the polynomial at different points.

For example, consider a secret s that we want to share among 5 parties. We can choose k=3, meaning that any 3 parties can reconstruct the secret, but any 2 parties cannot. To do this, we first randomly generate a polynomial of degree 2 (k-1), such as:

f(x) = s + r1_x + r2_x^2

Where s is the secret, and r1, r2 are random coefficients.

Next, we evaluate the polynomial at 3 different points, say x=1, x=2, x=3, to get the shares:

f(1) = s + r1_1 + r2_1^2

f(2) = s + r1_2 + r2_2^2

f(3) = s + r1_3 + r2_3^2

Each party receives one of the shares, and only by combining any 3 shares can the secret s be reconstructed by solving the polynomial equation.

In the context of SMC, SSS can be used to share private inputs among parties, such that the inputs can be used as part of a computation, without revealing any information to other parties. For example, using SSS, two parties can jointly compute the sum of their private inputs, without revealing their inputs to each other.

It is important to note that the security of SSS relies on the hardness of the polynomial interpolation problem, which is the problem of reconstructing a polynomial from its values at certain points. If the polynomial interpolation problem becomes efficiently solvable, then SSS would no longer be a secure method for secret sharing.

—

Libraries that provide the necessary primitivesfor perform the multiparty computation or secure multiparty computation in Rust.For MPC:

– “mpc-rs” – A library for secure multiparty computation in Rust.

– “scuttlebutt” – A library for secure distributed computation in Rust.For SMC:

– “libp2p-core” – A library for building decentralized systems in Rust.

– “bellman” – A library for implementing zk-SNARKs and other zero-knowledge proofs in Rust.

– “zkp rust” – A library for zero-knowledge proof in Rust.

—

**A list of practical applications** of Secure Multiparty Computation (SMC)

1. Secure voting systems: SMC can be used to create secure voting systems where each voter can vote privately and the results can be tallied without revealing any information about individual votes.

2. Privacy-preserving data analysis: SMC can be used to perform data analysis on sensitive data, such as medical records, without revealing any information about individual data points.

3. Privacy-preserving machine learning: SMC can be used to train machine learning models on sensitive data, such as financial transactions, without revealing any information about the data used for training.

4. Privacy-preserving financial transactions: SMC can be used to perform financial transactions, such as payments and lending, without revealing any information about the transaction to any parties other than the involved parties.

5. Privacy-preserving social networks: SMC can be used to enable social networks where users can share information with their friends without revealing any information to the social network.

6. Privacy-preserving internet of things: SMC can be used to enable secure communication between IoT devices without revealing any information about the devices or their usage.

7. Privacy-preserving cloud computing: SMC can be used to enable cloud computing without revealing any information about the data or computation to the cloud provider.

8. Privacy-preserving supply chain management: SMC can be used to enable secure communication and information sharing among suppliers, manufacturers, and retailers without revealing any information about the products or the supply chain.

SMC can be used in various domains, there are many more possible use cases. Still it’s important to note that, the use of SMC is not always necessary and it depends on the specific use case, the security requirements and the available resources (computational and financial).

__

In conclusion, Secure Multiparty Computation (SMC) is a powerful technique that allows multiple parties to jointly perform a computation, while keeping their inputs private. Shamir Secret Sharing (SSS) is one of the key building blocks of SMC, as it allows to distribute a secret among a group of parties, such that only authorized parties can reconstruct the secret, while any k-1 shares reveal no information about the secret.