Requisito di scrutinio segreto per un sistema di voto elettronico distribuito

1

Ci sono molte discussioni sul voto elettronico rispetto al voto su supporto cartaceo e preoccupazioni tecniche su di esso. Quindi eccone un altro.

Ci sono alcuni concetti che sono molto simili alle criptovalute come il bitcoin. Supponiamo che tale sistema di voto basato sulla crittografia sia distribuito e aperto. Una preoccupazione popolare su tale sistema è che i risultati delle votazioni saranno disponibili per tutti gli utenti in ogni momento. Invece, i risultati dovrebbero essere mantenuti in segreto fino al completamento della votazione.

È tecnicamente possibile risolvere questo problema? Come?

Ad esempio, supponi che utenti di tale sistema possano solo esprimere voti e non siano in grado di decodificare l'intero database.

Esiste anche una chiave privata che consente di decodificare il database (ma non consente di modificare il database). Questa chiave è archiviata da una persona su un dispositivo offline. Poiché la votazione è completa, questa chiave viene pubblicata in modo che tutti possano osservare i risultati.

È un approccio ingenuo? C'è uno migliore?

    
posta alopatindev 08.11.2015 - 18:01
fonte

1 risposta

1

Questo approccio non funzionerebbe, dal momento che quando viene pubblicata la chiave segreta, chiunque ha votato cosa, sarebbe ancora disponibile.

Se desideri fornire un sistema di voto semplice, è meglio che gli elettori idonei ti forniscano una chiave. Questa chiave è generata in modo tale da poter verificare che sia una chiave di voto valida e non una chiave generata da un utente non autorizzato.

Una cosa per ottenere questo risultato è che viene generata una chiave privata casuale (curva ellittica). Questa chiave generata, chiamata Kr, viene convertita in una chiave pubblica (EC), Pr. Dopo questo, il tuo MAC Pr con una chiave segreta, Ks, ad esempio MAC (Pr, Ks) = V. V è un hash, che dovrebbe contenere una stringa di convalida segreta Vs. Questa stringa (Vs) dovrebbe essere uguale per tutti i voti, ma mantenuta segreta. Se il risultato del MAC non contiene la stringa di convalida specificata, viene generata una nuova chiave privata. (ad esempio, pensate a "forzare brute" finché non appare una chiave privata con il valore di verifica valido, pensate "vanitygen" in bitcoin. Una parte dannosa non può farlo poiché non conosce la chiave MAC o quale dovrebbe essere la sottostringa del risultato. )

Ad esempio, in altre parole, Genera una chiave segreta Kr, come il MAC della corrispondente chiave pubblica combinata con una chiave MAC segreta, fornisce un risultato hash, che contiene una sottostringa segreta specifica.

Ripeti finché non vengono generate abbastanza chiavi segrete, quindi una chiave segreta per ciascun votante.

Quando è il momento di votare, dopo aver ottenuto un riconoscimento sicuro con il voto, consegnare all'elettore una delle chiavi segrete casuali. Controlla l'elettore in una lista, ad esempio in modo che non possa controllare più chiavi segrete. Questo può essere fatto online.

Il votante vota firmando il voto e pubblicandolo nel libro mastro pubblico. Poiché la chiave pubblica non può essere collegata a un elettore, non è possibile collegare i voti agli elettori.

Il primo (valido) voto è ciò che conta, e quando l'elettore ha votato, è incoraggiato a pubblicare la sua chiave, possibile anonimamente, e / o mostrarla agli amici. La ragione per fare ciò è impedire che una chiave sia collegata a un voto post votante, il che impedisce la coercizione. Ciò impedisce anche che l'elettore provi ciò che ha votato, a qualcuno, perché avrebbe potuto semplicemente prendere la chiave dell'altro per dimostrare di aver votato "giusto" (quando in realtà ha votato "sbagliato").

In realtà, l'elettore può generare la sua chiave falsa, e pubblicare un voto falso, che non verrà conteggiato, usando questa chiave falsa, e quindi usare quel falso voto per "dimostrare" che ha votato "giusto" a un coercitivo . Il coercitore non può rilevare che il voto è falso Prima che le autorità pubblichino Ks e Vs.

Tuttavia, la pubblicazione deve essere ritardata in modo che tutti i nodi abbiano registrato il voto prima di pubblicare la chiave. Ovviamente l'elettore deve verificare che un paio di nodi casuali abbiano registrato correttamente il voto. La ragione di ciò è che se il voto viene trattenuto da uno o più nodi dannosi, è possibile modificare il voto utilizzando la chiave pubblicata. Ritardando la pubblicazione della chiave fino a quando i nodi non hanno pubblicato il voto, non è possibile modificare successivamente il voto.

Quando la votazione termina, le autorità pubblicano la chiave MAC segreta (Ks) e la sottostringa di convalida segreta (Vs).

Chiunque può ora calcolare i voti usando i registri pubblici. Il primo voto valido (il voto non valido potrebbe votare "cosa?" In un si / no voto) di ciascun tasto che riesce a convalidare il MAC con Ks e Vs, è un voto valido. Qualsiasi altro voto viene ignorato, ad esempio doppio voto o chiavi "generate in casa". Nessuno può imbrogliare il sistema di voto. Se il numero di voti validi supera il numero di elettori idonei, i voti falsi sono stati inseriti da una parte malintenzionata che ha "accidentalmente" creato una chiave valida per caso o uno stato dannoso inserendo voti nel sistema.

Non si dovrebbe reagire a tali falsi voti a meno che non ci sia una chiamata ravvicinata, ad esempio c'è la possibilità che i voti falsi abbiano influito sul risultato. Un voto "sì / no" in cui il risultato è del 90% sì, tale voto non influenzerà il risultato a meno che non sia falso oltre il 40% dei voti.

    
risposta data 08.11.2015 - 19:49
fonte

Leggi altre domande sui tag