| CARVIEW |
secret-sharing: Information-theoretic secure secret sharing
Please see the README on GitHub at https://github.com/pwrobinson/secret-sharing#readme
[Skip to Readme]
Downloads
- secret-sharing-1.0.1.2.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
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 |
|---|---|
| Change log | ChangeLog.md |
| Dependencies | base (>=4.6 && <5), binary (>=0.5.1.1), bytestring (>=0.10.0.2), dice-entropy-conduit (>=1.0.0.0), finite-field (>=0.8.0), vector (>=0.10.11.0) [details] |
| License | LGPL-2.1-only |
| Copyright | 2014-2020 Peter Robinson |
| Author | Peter Robinson |
| Maintainer | peter@lowerbound.io |
| Uploaded | by PeterRobinson at 2020-05-10T04:09:01Z |
| Category | Data, Cryptography |
| Home page | https://github.com/pwrobinson/secret-sharing#readme |
| Bug tracker | https://github.com/pwrobinson/secret-sharing/issues |
| Source repo | head: git clone https://github.com/pwrobinson/secret-sharing |
| Distributions | Debian:1.0.1.2 |
| Reverse Dependencies | 2 direct, 0 indirect [details] |
| Downloads | 4639 total (33 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2020-05-10 [all 1 reports] |
Readme for secret-sharing-1.0.1.2
[back to package description]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.