Risposta breve alla tua domanda, così com'è attualmente: No.
Il motivo:
Each IP would allow a single vote
A causa della traduzione NAT, un singolo indirizzo IP può rappresentare molto più di un singolo utente (un IP pubblico potrebbe puntare a un'intera rete aziendale, per esempio). Inoltre, l'utilizzo di un indirizzo IP per identificare qualcuno non è assolutamente possibile; può essere facilmente modificato, spoofato, ecc., per non parlare del fatto ovvio che diverse persone che vivono allo stesso indirizzo e che magari condividono lo stesso computer ovviamente hanno anche lo stesso indirizzo IP.
Non riesco davvero a vedere come potresti ottenere qualcosa di simile senza includere alcuna forma di registrazione utente / votante, e il problema è ovviamente l'anonimato: come puoi garantire che una persona voti una sola volta, senza memorizzare almeno una minima quantità di informazioni personali?
Nel migliore dei casi, posso immaginare una sorta di soluzione split system, in cui un voto è anonimo, ma in cui è supportato da qualche altro servizio che può garantire l'unicità di ciascun elettore (almeno con un certo grado di fiducia) .
Come idea di base, considera quanto segue:
Creare un sistema di votazione in cui gli utenti anonimi possono accedere utilizzando un token di accesso e registrare un voto che è stato firmato digitalmente utilizzando la crittografia asimmetrica. Tale firma digitale verrebbe eseguita utilizzando una chiave privata che avrebbe una corrispondente chiave pubblica che era esplicitamente collegata al token di accesso degli utenti. Il token stesso sarebbe fornito da un servizio distinto, in modo tale che il sistema di voto stesso sarebbe nettamente separato da qualsiasi cosa contenesse dati personali sugli elettori.
Da questo, un revisore dei conti sarebbe in grado di controllare quanto segue per ciascun voto semplicemente guardando i voti e i token:
- Il voto è stato eseguito da un utente che trasporta il token di accesso X.
- Nessun altro voto è stato espresso da un utente che porta quel token specifico.
Ora dovrai eseguire il backup con un servizio di token-provider che può garantire che ciascun token sia stato concesso solo a un singolo individuo (che è idoneo a votare) e che a nessun individuo è stato concesso più di un token singolo (Un auditor vorrebbe probabilmente valutare anche questa parte della soluzione, ma potrebbe farlo pur limitando l'accesso alle informazioni personali sugli elettori).
Quindi, come hai potuto farlo mantenendo al minimo la quantità di dati personali? L'opzione migliore che posso pensare sarebbe un sistema che memorizza un hash (una "impronta digitale" crittografica irreversibile) di qualche identificatore personale, come un numero di previdenza sociale. Questo potrebbe essere usato per verificare che nessun identificatore singolo sia mai usato più di una volta, e tuttavia impedire a qualcuno che ha accesso al database di produrre un elenco completo di tutti coloro che hanno votato (poiché l'elenco conterrà solo valori hash, che sono natura irreversibile).
Ciò che tuttavia non impedisce, è l'enumerazione degli account; verificare se sono registrati individui specifici, purché si disponga già del proprio identificativo (se fossero registrati, quindi provare a registrarsi di nuovo con le proprie credenziali dovrebbe causare un errore o un avvertimento, che confermerebbe l'esistenza del proprio account).
Una soluzione possibile per questo potrebbe essere semplicemente registrare tutti potenziali elettori dall'inizio. In questo modo, la ricerca di un account appartenente a qualcuno che ha votato restituirebbe lo stesso tipo di risultato che cerca qualcuno che non l'ha fatto e la logica basata su token dovrebbe funzionare. Il punto principale è dividere l'identificazione e il voto effettivo in due parti separate e utilizzare la crittografia per garantire il voto, mantenendo al contempo le informazioni personali il più possibile.
Questo è piuttosto concettuale, e ovviamente c'è ancora molto da considerare, ma spero che ti dia qualche idea su cui riflettere nel contesto della tua domanda.