Sfondo
In cerca di creare un sistema di voto anonimo. Il sistema deve monitorare se un utente ha votato o meno su un oggetto (informazioni pubbliche), ma solo a quell'utente è consentito sapere se ha votato a favore o contro un oggetto (informazioni private).
Gli utenti devono accedere con un identificativo univoco e una password.
Problema
Tutti i dati e tutti i software sono aperti al pubblico per l'ispezione.
Domanda
Come impedirebbe alle persone di estrarre il database pubblico per scoprire come hanno votato i componenti, e tuttavia consentire agli elettori di vedere come hanno votato?
Idea n. 1
Encrypt:
- Voto crittografico lato client (su / giù) utilizzando AES ( JSAES ) contro la password con hash.
- Il client invia il voto (per il conteggio) e il voto crittografato con AES al server.
- Il server registra il conteggio (pubblico) e il voto crittografato con AES (per / contro) separatamente.
Decrypt:
- Il cliente richiede il record di voto.
- Il server trasferisce il voto crittografato con AES.
- Il client decodifica il voto crittografato con AES utilizzando la password con hash.
Immagino due istanze di password con hash: una per la password crittografata con AES applicata ai voti e una per la password effettiva dell'utente.
Ai fini dell'autenticazione, il client potrebbe inviare un hash della password ripetuta due volte da utilizzare per l'hash della password effettiva. Non so se ciò aggiungerebbe qualsiasi informazione che gli aggressori potrebbero utilizzare per scegliere il voto crittografato con AES.
Vincoli
Il sistema ha i seguenti vincoli:
- Tutti i dati vengono trasferiti su un protocollo sicuro (ad es. HTTPS).
- Le persone usano il sistema in privato (cioè senza sbirciare alle schermate).
- Sistema basato sul Web (nessuna informazione può essere archiviata in modo permanente sui computer degli utenti).
Attenuazione dei buy off
Il sistema comporta il voto per le politiche. Le politiche sono inviate in forma anonima, soggette a moderazione e richiedono una reputazione sufficiente (come StackExchanges) prima di passare alla modalità "live". Puoi cambiare il tuo voto in qualsiasi momento, quindi anche se ti è stato (in qualche modo) assegnato un pagamento, il pagatore non ha alcuna garanzia che tu non cambi il voto dopo il pagamento. Dopo l'approvazione della norma, non puoi più vedere come hai votato.
Collegamenti correlati
Related: