summaryrefslogtreecommitdiffhomepage
path: root/Crypto/SecretSharing.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Crypto/SecretSharing.hs')
-rw-r--r--Crypto/SecretSharing.hs36
1 files changed, 36 insertions, 0 deletions
diff --git a/Crypto/SecretSharing.hs b/Crypto/SecretSharing.hs
new file mode 100644
index 0000000..a2a4f07
--- /dev/null
+++ b/Crypto/SecretSharing.hs
@@ -0,0 +1,36 @@
+-----------------------------------------------------------------------------
+-- |
+-- Module : Crypto.SecretSharing
+-- Copyright : Peter Robinson 2014
+-- License : LGPL
+--
+-- Maintainer : Peter Robinson <peter.robinson@monoid.at>
+-- Stability : experimental
+-- Portability : portable
+--
+-- 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 perfect secrecy in the sense that the knowledge of up
+-- to @m-1@ shares does not reveal any information about the secret @b@.
+--
+-- Typically, there are @n@ parties and we would like to give the @i@-th party
+-- the @i@-share of each byte.
+-- For example, to encode a bytestring @secret@ as @10@ shares, any @5@ of which
+-- are sufficient for reconstruction we could write:
+--
+-- > shares <- encode 5 10 secret
+--
+-- Note that each byte is encoded separately using a fresh set of random
+-- coefficients.
+--
+-- The mathematics behind the secret sharing scheme is described in:
+-- \"How to share a secret.\" by Shamir, Adi.
+-- In Communications of the ACM 22 (11): 612–613, 1979.
+--
+--
+-----------------------------------------------------------------------------
+
+module Crypto.SecretSharing( encode, decode, Share )
+where
+import Crypto.SecretSharing.Internal