Perché il voto elettronico è ancora un problema?

9

Il voto elettronico è stato considerato tecnico non attuabile da molto tempo. E di recente ho guardato un video dal canale Computerphile su YouTube dove hanno sollevato tutti i problemi che accompagnano -voting.

Ma con i registri distribuiti e la crittografia omomorfica nella mia mente ho potuto trovare qualsiasi problema che non può essere risolto. Per essere onesti questo video ha uno e mezzo anno, ma si può ancora intuire che questo ragazzo abbia sentito parlare di queste tecniche.

Non sono un esperto di sicurezza ma posso immaginare un sistema che garantisca sia l'anonimità che la fiducia nel risultato:

  1. Imposta una catena di blocchi in cui ogni nodo concorda sull'algoritmo di voto. (Non è affatto difficile e questo già risolve il problema di fidarsi del software)
  2. Genera la chiave di crittografia privata e pubblica. Dare la chiave pubblica a chiunque sia autorizzato a partecipare al voto. Spargi la chiave privata tra le autorità di cui ti fidi per non colludere.
  3. Ogni partecipante ha un account sulla catena di blocchi con una chiave privata che firma la "transazione" di voto. Ogni account ha un voto, garantito dal software di voto su cui ogni nodo della catena di blocco è stato concordato.
  4. Poiché tutte le transazioni sono su una catena di blocchi, ogni elettore può tracciare il proprio voto e verificare che sia stato aggiunto al risultato complessivo. (Che risolve un altro problema importante: assicurati che ogni voto venga aggiunto al risultato complessivo.)
  5. Un algoritmo di voto primitivo potrebbe assomigliare a questo: per ogni parte che un partecipante può votare cripta uno zero o uno insieme con un po 'di sale (quindi non può essere eseguita alcuna ricerca) con la chiave pubblica delle elezioni. Quindi firma la sua transazione o vota con la sua chiave pubblica della catena di blocco e il suo voto viene elaborato: Gli zeri e quelli vengono aggiunti a ciascuno dei contatori di partito. Per ogni voto la somma del voto viene calcolata e decrittografata. In questo modo puoi dire con certezza che ne viene aggiunto uno solo a uno dei contatori di partito (la somma deve essere uno), ma non puoi dire a quale parte il partecipante ha votato.
  6. Decifra il risultato finale.

Ovviamente per qualsiasi decrittazione le autorità che detengono una parte della chiave privata devono concordare tale decrittazione.

Quindi quale è il problema che non può essere superato con il voto elettronico?

    
posta flxh 14.09.2016 - 10:12
fonte

2 risposte

7

Tecnicamente, la tua soluzione è molto simile a CGS97 (nota la data) che è la base di Helios e dei suoi discendenti. Come approccio generale è molto ragionevole, ma manca completamente di evitare la vendita di voti e le tangenti / minacce (Ricezione di Freeness e resistenza alla coercizione in letteratura):

Mancanza di esempio RF: Supponiamo che prometto di darti $ 100 se voti per il mio candidato e mostrami la casualità che hai usato (ad esempio una ricevuta ) per crittografare il tuo voto come prova . Questo è un problema noto con il libro di testo Helios (menzionato nel documento originale), che è fissato in vari gradi nei lavori successivi.

Il tuo suggerimento di usare una blockchain per implementare la bacheca è ragionevole, ma direi che le persone attive nell'area sono a conoscenza.

Ci sono altri problemi con la tua soluzione:

  • È banale copiare i voti di altre persone. Questo è considerato negativo per la privacy. Attacchi di malleabilità pure.
  • Richiedere che il voto di una persona riassuma uno è non adeguato. Supponiamo di dare -100 voti al candidato X e +101 voti al candidato Y.
  • Combinando quanto sopra, prendi tutti i voti inviati alla lavagna e aggiungili. Diciamo che ci sono n di loro. Invertire la somma. Ciò produrrà una scheda elettorale che riassume fino a -n . Aggiungi voti n + 1 al tuo candidato. Adesso hai una votazione che annulla tutti i voti precedenti e sposta tutti i voti al candidato.
  • La maggior parte di quanto sopra è stato risolto con i protocolli Zero Knowledge che dimostrano che le singole parti del ballottaggio sono 0/1 oltre a sommare fino a 1, più alcuni requisiti di non malleabilità.
  • Avere le autorità decrittografare una mini-somma per ogni elettore può essere inefficiente. Inoltre, come verificate che si sono comportati correttamente? Se la tua risposta è ZK, perché non trasferirla all'elettore?
  • Quando parli di sali e crittografia, penso che tu intenda IND-CPA. Probabilmente hai bisogno di NM-CPA (guarda anche IND-CCA, ma non è strettamente necessario).

Tornando al film di grandi dimensioni, vogliamo anche prendere in considerazione la possibilità di votare da PC compromessi, avere un processo di verifica che le persone possono seguire e seguiranno, il fatto che le elezioni attirino avversari sponsorizzati dallo stato, e il fatto che una sconfitta in caso di fallimento sarebbe estremamente costoso (in termini di fiducia pubblica e $$$).

TL; DR: C'è una vasta letteratura nell'area (sia in-booth che su internet), ma è anche un problema molto difficile.

    
risposta data 19.09.2016 - 18:20
fonte
2

Questo algoritmo che hai proposto è sicuramente un buon metodo. Ma forse manca il concetto di privacy. Questo forse è il motivo, perché l'e-polling è evitato nel complesso.

La privacy qui si riferisce all'insieme di risposte / testo normale che un utente potrebbe inviare. {0,1}. Questo si riferisce al "noto attacco di testo normale". Un avversario, che pone un uomo in attacco centrale, potrebbe intercettare il codice cifrato. Ora, conoscendo il testo semplice, la chiave pubblica e il testo cifrato, può usare molti strumenti sofisticati, o forse con un semplice attacco di forza bruta per decifrare il sale e la chiave usata per la crittografia! (Naturalmente, il tempo impiegato per crearsi dipenderebbe sicuramente dalla lunghezza della chiave e del sale).

    
risposta data 18.09.2016 - 08:35
fonte