frosix

Multiparty signature service (experimental)
Log | Files | Refs | README | LICENSE

README (2449B)


      1 ======
      2 FROSIX
      3 ======
      4 
      5 This package includes the Frosix core logic.  The code is released
      6 under the GNU Affero General Public License (v3 or later).  See
      7 COPYING for details.
      8 
      9 
     10 Description
     11 ===========
     12 
     13 At this early stage, Frosix is an implementation of the FROST
     14 threshold signature scheme published at the end of 2020 by Chelsea
     15 Komlo and Ian Goldberg (see https://eprint.iacr.org/2020/852.pdf).
     16 Therefore Frosix is rather just the library libfrost at the moment.
     17 
     18 Frosix aims to provide a safe and secure EdDSA compatible threshold
     19 signature service, based on the previously mentioned FROST protocol.
     20 In the end, Frosix should include an implementation to run small web
     21 servers - the providers - which a software, running on a client, can
     22 access via a simple REST API.  The software on the client side will be
     23 a simple CLI as a first step.
     24 
     25 The providers are designed to only store the data necessary for its
     26 service, either encrypted without knowing the key, or just in form of
     27 a salted hash.  The drawback of this complete zero knowledge driven
     28 strategy is that the information which is needed to let a provider
     29 participate in a signing process, has again to be stored securly by
     30 the user.  Obviously this means that the attacking vector of such a
     31 provider is really small. But what happens if the secret data is
     32 stolen?
     33 
     34 For this reason there will be a further security mechanism in Frosix.
     35 Just as with GNU Anastasis (see
     36 https://git.taler.net/anastasis.git/tree/doc/sphinx/rest.rst), Frosix
     37 providers are required to challenge, respectively authenticate their
     38 users.  This ensures that, depending on the challenge selected, only
     39 the legitimate user can have a valid signature generated.
     40 
     41 
     42 Dependencies
     43 ============
     44 
     45 libsodium : ISC License
     46 libgnunet : GPLv3+
     47 
     48 
     49 Directory structure
     50 ===================
     51 
     52 src/include/
     53   -- installed headers for public APIs
     54 
     55 src/libfrostdistkeygen/
     56   -- contains the logic to perform a distributed key generation process
     57 
     58 src/libfrosthigh/
     59   -- contains the main logic to compute a signature share
     60 
     61 src/libfrostlow/
     62   -- wrapper for the crypto function of libsodium
     63 
     64 src/libfrosttrusteddealer/
     65   -- contains a function to generate a key pair, for testing purposes only
     66 
     67 src/libfrostverify/
     68   -- contains a function to verify a given signature over a specific message
     69 
     70 src/testing
     71   -- contains an integration test
     72 
     73 contrib/
     74   -- contains resource files
     75 
     76 doc/
     77   -- contains the documentation files of this project