diff options
Diffstat (limited to 'Crypto/SecretSharing.hs')
-rw-r--r-- | Crypto/SecretSharing.hs | 36 |
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 |