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