hMPC: Multiparty Computation in Haskell

[ bsd3, cryptography, library, program ] [ Propose Tags ] [ Report a vulnerability ]
This version is deprecated.

hMPC is a Haskell package for secure multiparty computation (MPC).

hMPC provides a runtime for performing computations on secret-shared values, where parties interact by exchanging messages via peer-to-peer connections. The hMPC protocols are based on Shamir's threshold secret sharing scheme and withstand passive adversaries controlling less than half of the parties.

Secure integer arithmetic is supported for parameterized number ranges, including support for comparison operations. Secure finite field arithmetic is supported.

The above operations are all available via Haskell's operator overloading.

Secure drop-in replacements for lots of Haskell built-in functions, such as all, sum, min, max are provided, mimicking the Haskell APIs as much as possible. Further operations for container datatypes holding secret-shared data items are provided as well (e.g., matrix-vector operations like secure dot products).


[Skip to Readme]

Modules

[Last Documentation]

  • Asyncoro
  • FinFields
  • Hgmp
  • Parser
  • Runtime
  • SecTypes
  • Shamir
  • Types

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2 (info)
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), binary (>=0.8.8 && <0.9), bytestring (>=0.10.12 && <0.11), cereal (>=0.5.8 && <0.6), containers (>=0.6.4 && <0.7), hashable (>=1.3.5.0 && <1.5), hgmp (>=0.1.2 && <0.2), hMPC, hslogger (>=1.3.1 && <1.4), lens (>=5.0.1 && <5.3), mtl (>=2.2.2 && <2.3), network (>=3.1.2.7 && <3.2), optparse-applicative (>=0.16.1.0 && <0.19), process (>=1.6.13 && <1.7), random (>=1.2.1 && <1.3), split (>=0.2.3.4 && <0.3), stm (>=2.5.0 && <2.6), time (>=1.9.3 && <1.10), vector (>=0.12.3.1 && <0.14) [details]
License BSD-3-Clause
Copyright 2024 Nick van Gils
Author Nick van Gils
Maintainer nick.vangils@hotmail.com
Revised Revision 2 made by nickvgils at 2024-07-17T14:05:26Z
Category Cryptography
Home page https://github.com/nickvgils/hMPC#readme
Bug tracker https://github.com/nickvgils/hMPC/issues
Source repo head: git clone https://github.com/nickvgils/hMPC
Uploaded by nickvgils at 2024-07-17T11:56:06Z
Distributions NixOS:0.1.0.2
Executables id3gini
Downloads 81 total (12 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2024-07-17 [all 2 reports]

Readme for hMPC-0.1.0.0

[back to package description]

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.

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.

Copyright © 2024 Nick van Gils