]> Git — Sourcephile - majurity.git/blob - hjugement-protocol/hjugement-protocol.cabal
protocol: Add Arith
[majurity.git] / hjugement-protocol / hjugement-protocol.cabal
1 name: hjugement-heliosc
2 -- PVP: +-+------- breaking API changes
3 -- | | +----- non-breaking API additions
4 -- | | | +--- code changes with no API change
5 version: 0.0.0.20190415
6 category: Politic
7 synopsis: Helios-C fully distributed threshold cryptosystem for the Majority Judgment.
8 description:
9 <https://eprint.iacr.org/2013/177.pdf Helios-C> (Helios with Credentials)
10 is a variant of Helios that is:
11 .
12 * /fully correct/: the published result are proven to correspond
13 to the (sum of) intended votes of the voters,
14 while accounting for a malicious bulletin board (BB) (adding fake ballots)
15 by requiring a registration authority (RA)
16 (responsible for generating and sending voters' credentials).
17 Assuming that the BB and the RA are not simultaneously dishonest.
18 .
19 * /verifiable/: voters are able to check that:
20 their ballots did contribute to the outcome (/individual verifiability/),
21 and that the tallying authorities did their job properly (/universal verifiability/).
22 .
23 * /private/: the identities of the voters who cast a vote are not publicly revealed.
24 .
25 Credentials:
26 A voter's credentials is a private key (the signing key)
27 that has a public part (the verification key).
28 The association between the public part and the corresponding voter’s identity
29 does not need to be known, and actually should not be disclosed to satisfy
30 e.g. the French requirements regarding voting systems.
31 Using credentials prevent the submission of duplicated ballots
32 (because they are added as an additional input to the random oracle
33 in the /non-interactive zero-knowledge/ (NIZK) proofs for ciphertext well-formedness).
34 This allows a testing of duplicates which depends only on the size of the number of voters,
35 and thus enables Helios-C to scale for larger elections while attaining correctness.
36 .
37 Helios-C uses:
38 .
39 * A 256-bit multiplicative subgroup of a 2048-bit finite prime field,
40 for signing with a Schnorr-like NIZK proof,
41 and encrypting with an ElGamal-like scheme.
42 * A Pedersen's /distributed key generation/ (DKG) protocol
43 coupled with ElGamal under the Decision Diffie-Hellman (DDH) assumption,
44 to have a fully distributed semantically secure (IND-CPA) encryption.
45 * An ad-hoc Fiat-Shamir transform proving the well-formedness of ciphertexts,
46 applied to a Disjunctive Chaum-Pedersen NIZK proof
47 asserting that two given ciphertexts belonging to different voters
48 with public credentials are encryptions of 0 or 1.
49 extra-doc-files:
50 license: GPL-3
51 license-file: COPYING
52 stability: experimental
53 author: Julien Moutinho <julm+hjugement@autogeree.net>
54 maintainer: Julien Moutinho <julm+hjugement@autogeree.net>
55 bug-reports: Julien Moutinho <julm+hjugement@autogeree.net>
56 -- homepage:
57
58 build-type: Simple
59 cabal-version: 1.24
60 tested-with: GHC==8.4.4
61 extra-source-files:
62 stack.yaml
63 extra-tmp-files:
64
65 Source-Repository head
66 location: git://git.autogeree.net/hjugement
67 type: git
68
69 Library
70 exposed-modules:
71 Heliosc.Arith
72 Heliosc.Crypto
73 default-language: Haskell2010
74 default-extensions:
75 DefaultSignatures
76 FlexibleContexts
77 FlexibleInstances
78 MonoLocalBinds
79 NamedFieldPuns
80 NoImplicitPrelude
81 ScopedTypeVariables
82 ghc-options:
83 -Wall
84 -Wincomplete-uni-patterns
85 -Wincomplete-record-updates
86 -fno-warn-tabs
87 -- -fhide-source-paths
88 build-depends:
89 base >= 4.6 && < 5
90 , bytestring >= 0.10
91 , containers >= 0.5
92 , cryptonite >= 0.25
93 , hashable >= 1.2.6
94 , memory >= 0.14
95 , random >= 1.1
96 , transformers >= 0.5
97 , unordered-containers >= 0.2.8