Skip to content

nickvgils/hMPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Binder

hMPC Multiparty Computation in Haskell

This hMPC library, written in the functional language Haskell, serves as a counterpart to the original MPyC library, written in the imperative language Python and developed by Berry Schoenmakers.

hMPC supports secure m-party computation tolerating a dishonest minority of up to t passively corrupt parties, where m ≥ 1 and 0 ≤ t < m/2. The underlying cryptographic protocols are based on threshold secret sharing over finite fields (using Shamir's threshold scheme and optionally pseudorandom secret sharing).

The details of the secure computation protocols are mostly transparent due to the use of sophisticated operator overloading combined with asynchronous evaluation of the associated protocols.

Documentation

See demos for Haskell programs with lots of example code. See docs/basics.rst for a basic secure computation example in Haskell. Click the "launch binder" badge above to view the entire repository and try out the Jupyter notebooks from the demos directory in the cloud, without any install.

The initial reseach is part of a master's graduation project. For further reading, refer to the complementary master's thesis: Multiparty Computation in Haskell: From MPyC to hMPC.

Original Python MPyC documentation:

Read the Docs for Sphinx-based documentation, including an overview of the demos.

The MPyC homepage has some more info and background.

Installation

You can install this package using cabal:

cabal install hMPC

, or cabal install in the root directory.

Some Tips

  • Try run-all.sh or run-all.bat in the demos directory to have a quick look at all Haskell demos.

Copyright © 2024 Nick van Gils

About

Secure Multi-Party Computation in Haskell

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published