This is the primary repository for Free & Fair’s work on the Tusk Philanthropies/Free Democracy Foundation Mobile Voting Project, which is being carried out using the Rigorous Digital Engineering methodology. The goal of this work is to develop the cryptographic core of an end-to-end verifiable Internet voting (E2E-VIV) system.
- The project's license, code of conduct, responsible disclosure guidelines, and contribution guidelines are available in separate documents.
- The frequently asked questions (FAQ) document, available in our GitHub releases, contains answers to many questions we have been asked about the project.
- The team documentation contains information for the project team (some of which is also applicable to other contributors) about how development is carried out in this and related project repositories, team communication standards, etc.
- The continuous integration/deployment/verification documentation contains information about what artifacts are checked/created/verified in the repository (and related repositories) via continuous integration, deployment, and verification.
- In order to understand the modeling we are focused on at a high level, a white paper called "Refinements between High-Level Models" is available in our GitHub releases. Its target audience is computer scientists/mathematicians who have a basic understanding of rigorous modeling.
- Our concept of operations (CONOPS) provides a high-level description of an E2E-VIV system that uses the cryptographic core library being developed here; note that Free & Fair is not developing such a system, but only the cryptographic core library.
- The static version of our threat model is available in our GitHub releases.
The repository is broken into several parts, and each part has its own README (or other) files that explain its contents:
- docs contains documents related to the project, including protocol documentation.
- models contains all the RDE models, including the domain model, feature model, threat model, formal protocol model, and SysML system model.
- implementations/rust contains the VoteSecure protocol library implementation.
- assurance contains the AdvoCATE assurance case and its associated files; this is currently an assurance case skeleton, and has not been filled in with assurance evidence from the implementation.
- docker contains files required to build the various Docker images.
- examples/needham-schroeder contains a partial example of a small cryptographic protocol implemented using the RDE process.