secret-sharing: Information-theoretic secure secret sharing
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
- secret-sharing-1.0.0.3.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
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
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 | 4545 total (1 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] |