1 - Software Requirements
1.1 - Voting (Firmware)
Functional Requirements
- [x] FR1101 - The ballot system must authenticate voters using biometric identification to ensure that only previously registered voters can cast a vote.
- [x] FR1102 - The ballot system must provide an user interface with the picture of the candidate the user selected, the numbers he is typing and basic instructions.
- [x] FR1103 - The ballot system must show a review of voting information and ask for confirmation before finalizing the voting process for each office.
- [x] FR1104 - The system must print a receipt for the voter, containing part of the seed for the vote hash, allowing them to later verify their vote in an authorized session.
- [x] FR1105 - The system must register each vote associating it with its vote key.
- [x] FR1106 - The system must have all keys associated with biometric data (Prerecorded Key) preloaded in the firmware.
- [x] FR1107 - The system must have a key associated with the ballot (Ballot Key) preloaded in the firmware.
- [x] FR1108 - The system must generate a pseudo-random key to be kept by the voter (Voter Key).
- [x] FR1109 - The system must generate a pseudo-random key to be kept by the government (TSE Key).
- [x] FR1110 - The system must create a vote hash using the Voter Key and TSE Key along with the Prerecorded Key to associate with a vote.
- [x] FR1111 - The system must generate a block compiling all the votes with their keys, the voters signature by Prerecorded Key and ballot signature by Ballot Key.
- [ ] FR1112 (OPTIONAL) - The system must provide audio feedback and instructions to help blind people.
- [ ] FR1113 (OPTIONAL) - The system must replace all sensitive data and the security keys with pseudo-random data in case of structure violation detection.
- [x] FR1114 - The ballot system must allow casting a null vote (referred by any invalid candidate number)
- [x] FR1115 - The system must generate a block with scrambled vote data to avoid vote identification by order.