Maximizing average happiness privately & securely

Overview

mpc-matching

Maximizing average happiness privately & securely.

What?

Suppose there's a group of n ladies and n lads, and they want to be matched in pairs. Each person has some deeply hidden desires, represented by an integer vector. For each pair, cost of matching them together is a function of their desires (the lower it is, the better). We want to find a matching that minimizes the average cost, without revealing their secrets - each person should learn only who is their better half.

How?

Oblivious minimum cost maximum flow algorithm running under SPDZ protocol [1,2], based on ideas from [3].

What's included?

  • mpc - mini-framework for MPC computation (SPDZ online phase, fundamental circuits etc)
  • mpc_flow - implementation of oblivious minimum cost flow and matching algorithms for use in MPC
  • dealer - tool that precomputes stuff for SPDZ protocol
  • matcher - the secret matching application

Prerequisities

  1. Rust 1.58 - to compile the projects
  2. Python 3.8 - for convenience scripts
  3. OpenSSL - for generating self-signed certificates

Running

  1. Build everything: cargo build --release
  2. Create test environment (default is 16 nodes): ./prepare-test-env.py
  3. Precompute parameters for SPDZ: ./precompute-spdz.py
  4. Run all test nodes locally: ./run-all-parties.py

You can run test nodes individually using ./run-party.py; run scripts with --help for more information.

References

[1] Multiparty Computation from Somewhat Homomorphic Encryption
[2] Practical Covertly Secure MPC for Dishonest Majority – or: Breaking the SPDZ Limits
[3] Data-oblivious graph algorithms for secure computation and outsourcing
[4] Improved Primitives for Secure Multiparty Integer Computation

You might also like...
🧩Creating a blockchain wallet and integrating a couple of cryptographic algorithms to securely save the secrets.🧩

Rust Library For Cryptocurrency Wallet Folder Structure src : contains the source code of the library examples : contains some examples of the library

Owner
null
Sample and plot power consumption, average frequency and cpu die temperatures over time.

sense Sense is a small tool to gather data on cpu temperature, power usage and clock frequency and plot graphs during some load. Dependencies Sense is

Luuk van der Duim 6 Oct 31, 2022
💰 Midas is a free and open source Moving Average Trading backtest simulator.

Midas is a free and open source Moving Average Trading backtest simulator Bilibili Video: https://www.bilibili.com/video/BV11o4y1B7fL ⚠️ Warning Inves

Jerry 6 Mar 17, 2023
Securely generate API tokens for third-party access to your Tesla.

Tesla Auth Securely generate API tokens for third-party access to your Tesla. Multi-factor authentication (MFA) and Captcha are supported. Download Pr

Adrian Kumpf 136 Jan 7, 2023
Easily and securely share files from the command line. A fully featured Firefox Send client.

Notice: the default Send host is provided by @timvisee (info). Please consider to donate and help keep it running. ffsend Easily and securely share fi

Tim Visée 6.3k Dec 25, 2022
RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions

RnR is a command-line tool to securely rename multiple files and directories that supports regular expressions. Features Batch rename files and direct

Ismael González Valverde 219 Dec 31, 2022
A blazingly fast, ShareX uploader coded in Rust (using actix web) which utilizes AES-256-GCM-SIV to securely store uploaded content.

Magnesium Oxide ❔ What is this? Magnesium-Oxide (MGO) is a secure file uploader with support for ShareX. ?? Features ?? Blazingly fast uploads and enc

Nitrogen Development 26 Nov 25, 2022
Narrowlink securely connects devices and services together, even when both nodes are behind separate NAT

Narrowlink Narrowlink is a self-hosted platform that allows you to establish secure remote connections between devices within a network that may be hi

Narrowlink 355 Aug 17, 2023
Open source p2p share for devs to share anything with teammates across machines securely.

Secure share Share anything with teammates across machines via CLI. Share is a tool for secure peer-to-peer connections, enabling direct communication

Onboardbase 10 Aug 4, 2023
Tool and framework for securely reading untrusted USB mass storage devices.

usbsas is a free and open source (GPLv3) tool and framework for securely reading untrusted USB mass storage devices. Description Following the concept

CEA IT Security 250 Aug 16, 2023
A simple command-line application to securely store secrets using encryption

rust-secret-vault A simple yet robust command-line tool designed to safely encrypt and store your sensitive information. Harnessing the power of AES-2

Luis Soares 4 Nov 22, 2023