This is an automated email from the ASF dual-hosted git repository.

gstein pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/steve.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 0867b40  more clarity on storage/transmission
0867b40 is described below

commit 0867b404801a632351ebf8537ad8de17ca6c4138
Author: Greg Stein <[email protected]>
AuthorDate: Fri May 27 04:30:25 2022 -0400

    more clarity on storage/transmission
---
 v3/README.md | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/v3/README.md b/v3/README.md
index fd1f068..ac736e6 100644
--- a/v3/README.md
+++ b/v3/README.md
@@ -118,19 +118,31 @@ be implemented using the `Fernet` system[^fernet] in the 
`cryptography` Python
 package. Note that Argon2 produces 32 byte hash values, which matches
 the 32 bytes needed for a Fernet key.
 
-**IMPORTANT**: the `IssueToken` and `VoteKey` should never be stored.
+### Storage and Transmission
+
+**IMPORTANT**: the `VoterToken` and `IssueToken` should never be
+stored in a way that ties them to the VoterID and IssueID.  The
+`VoteKey` should never be stored. Instead, the `Salt(xx)` values
+are stored, and the tokens/key are computed when needed.
+
 In general, the expense of the `Hash()` function should not be short-circuited
 by storing the result. Any attacker must perform the work. During normal
 operation of the voting system, each call of the `Hash()` function should be
 within human-reasonable time limits (but unreasonable to perform in bulk).
 
-Note that `VoteToken` is stored as part of each vote, but is only emailed
-as the shared secret. It is not stored outside of votes, and is not
-obviously tied in any way to `VoterID`.
+Note that `VoterToken` and `IssueToken` are stored as part of each `Vote`,
+but those tokens provide no easy mapping back to a voter or issue.
+
+The `VoterToken` is normally emailed to the Participant. If it is not
+emailed, then LDAP authentication would be used, and the server will
+compute it from the authenticated credentials.
+
+Since `VoterToken` *may* be used by the Participant, via URL, to perform
+their voting, it must be "URL safe". If LDAP authn mode is used, then
+the `VoterToken` will never be encoded for humans.
 
-If `VoteToken` is not emailed, but (instead) LDAP authentication is used,
-then it is possible to omit storage of `VoteToken` and to simply compute it
-from the authenticated credentials.
+The `ElectionID` is also visible to Participants, and will be encoded
+as eight (8) hex digits, just like STeVe v2.
 
 ### (Re)Tally Process
 
@@ -144,4 +156,8 @@ from the authenticated credentials.
 Notes: be wary of repeats; collect STV votestrings, for passing in-bulk
 to the STV algorithm.
 
+Note that the tally process does not require unmasking the Participant.
+
+
+
 [^fernet]: https://cryptography.io/en/latest/fernet/

Reply via email to