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.

Modules

[Last Documentation]

  • Crypto
    • Crypto.SecretSharing
      • Crypto.SecretSharing.FiniteField
      • Crypto.SecretSharing.Internal
      • Crypto.SecretSharing.Prime

Downloads

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 && <4.7), binary (>=0.5.1.1), bytestring (>=0.10 && <0.11), dice-entropy-conduit (>=1.0.0.0), finite-field (>=0.8.0), polynomial (>=0.7.1), vector (>=0.10.11.0) [details]
License LGPL-2.1-only
Copyright Peter Robinson 2014
Author Peter Robinson <peter.robinson@monoid.at>
Maintainer peter.robinson@monoid.at
Category Cryptography
Home page http://monoid.at/code
Uploaded by PeterRobinson at 2014-09-06T07:36:46Z
Distributions Debian:1.0.1.2, NixOS:1.0.1.2
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 4310 total (24 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Successful builds reported [all 7 reports]