secret-sharing: Information-theoretic secure secret sharing
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Warnings:
- Exposed modules use unallocated top-level names: Crypto
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 data" > shares <- encode 3 5 secret > mapM_ (Prelude.putStrLn . show) shares (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.
Properties
Versions | 1.0.0.0, 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 | None available |
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-03T16:08:59Z |
Modules
- Crypto
- Crypto.SecretSharing
- Crypto.SecretSharing.FiniteField
- Crypto.SecretSharing.Internal
- Crypto.SecretSharing.Prime
- Crypto.SecretSharing
Downloads
- secret-sharing-1.0.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees