secret-sharing: Information-theoretic secure secret sharing

[ cryptography, data, lgpl, library ] [ Propose Tags ]

Implementation of an (m,n)-threshold secret sharing scheme. A given ByteString b (the secret) is split into n shares, and any m shares are sufficient to reconstruct b. The scheme preserves information-theoretic perfect secrecy in the sense that the knowledge of up to m-1 shares does not reveal any information about the secret b.

Example in GHCi: Suppose that you want to split the string "my secret data" into n=5 shares such that at least m=3 shares are necessary to reconstruct the secret.

> :m + Data.ByteString.Lazy.Char8 Crypto.SecretSharing
> let secret = pack "my secret message!"
> shares <- encode 3 5 secret
> mapM_ (Prelude.putStrLn . show) shares -- each share should be deposited at a different site.
 (1,"\134\168\154\SUBV\248\CAN:\250y<\GS\EOT*\t\222_\140")
 (2,"\225\206\241\136\SUBse\199r\169\162\131D4\179P\210x")
 (3,"~\238%\192\174\206\\\f\214\173\162\148\&3\139_\183\193\235")
 (4,"Z\b0\188\DC2\f\247\f,\136\&6S\209\&5\n\FS,\223")
 (5,"x\EM\CAN\DELI*<\193q7d\192!/\183v\DC3T")
> let shares' = Prelude.drop 2 shares
> decode shares'
 "my secret message!"

The mathematics behind the secret sharing scheme is described in: "How to share a secret." by Adi Shamir. In Communications of the ACM 22 (11): 612–613, 1979.

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

Versions [RSS] 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.0.3, 1.0.1.0, 1.0.1.1, 1.0.1.2
Dependencies base (>=4.6 && <5), binary (>=0.5.1.1 && <0.10), bytestring (>=0.10 && <0.11), dice-entropy-conduit (>=1.0 && <1.1), finite-field (>=0.8 && <0.9), polynomial (>=0.7.1 && <0.8), vector (>=0.10.11.0 && <0.13) [details]
License LGPL-2.1-only
Copyright Peter Robinson 2014
Author Peter Robinson <peter.robinson@monoid.at>
Maintainer peter.robinson@monoid.at
Revised Revision 1 made by HerbertValerioRiedel at 2017-03-23T16:07:02Z
Category Cryptography
Home page http://monoid.at/code
Uploaded by PeterRobinson at 2014-10-05T17:23:42Z
Distributions Debian:1.0.1.2, NixOS:1.0.1.2
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 4338 total (27 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]