name: secret-sharing version: 1.0.0.3 x-revision: 1 synopsis: Information-theoretic secure secret sharing 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. license: LGPL-2.1 license-file: LICENSE author: Peter Robinson maintainer: peter.robinson@monoid.at copyright: Peter Robinson 2014 category: Cryptography build-type: Simple cabal-version: >=1.8 homepage: http://monoid.at/code stability: experimental library hs-source-dirs: src exposed-modules: Crypto.SecretSharing Crypto.SecretSharing.Internal build-depends: base >=4.6 && < 5, bytestring ==0.10.*, dice-entropy-conduit == 1.0.*, binary >=0.5.1.1 && < 0.10, vector >=0.10.11.0 && < 0.13, finite-field ==0.8.*, polynomial >= 0.7.1 && < 0.8 ghc-options: -Wall test-suite Main type: exitcode-stdio-1.0 x-uses-tf: true build-depends: base >= 4 && < 5, QuickCheck >= 2.4, test-framework >= 0.4.1, test-framework-quickcheck2 hs-source-dirs: src, tests main-is: Tests.hs