JohnLCaron / egk-ec

Electionguard kotlin on elliptic curves
MIT License
0 stars 0 forks source link

License GitHub branch checks state Coverage

ElectionGuard-Kotlin Elliptic Curve

last update 05/22/2024

EGK Elliptic Curve (egk-ec) is an experimental implementation of ElectionGuard, version 2.0, available under an MIT-style open source License.

This version adds the option to use Elliptic Curves for the cryptography. This is an experimental feature and is not part of the ElectionGuard specification. The implementation for Elliptic Curves (EC) is taken largely from the Verificatum library, including the option to use the Verificatum C library. See VCR License for the license for this part of the library.

Switching to Elliptic Curves is mostly transparent to the ElectionGuard specification, so we are calling this version EGK 2.1, which uses the ElectionGuard 2.0 specification on top of elliptic curves.

This library also can use the Electionguard Integer Group, and so can also be used for Electionguard 2.0 compliant applications.

See EGK EC mixnet for an implementation of a mixnet using this library with Elliptic Curves.

See EGK webapps for HTTP client/server applications that use this library to allow remote workflows.

Documentation

Serialization

The elliptic curve group uses base64 encoding in the JSON, with point compression that reduces the byte count per ElementModP to 33 bytes. Json serialization of 1000 encrypted ballots with 34 ciphertexts each (including all the proofs) is 44.5 Mb. Zipping all into a zip archive is 12.3 Mb.

We are using the following provisional JSON serialization specification:

Authors