Verifica tu stesso il segreto del voto | METIS Italia Vai al contenuto

Sicurezza del voto

Verifica tu stesso

Non chiediamo di fidarti di noi. Qui trovi cosa puoi controllare da solo, o far controllare a un tecnico, per essere sicuro che il sistema non sa e non può sapere cosa hai votato.

Il nucleo del voto

Il segreto del voto dipende da 5 file soltanto. Le loro impronte (SHA-256) sono calcolate adesso, sui file che il server sta usando. Se anche un solo carattere cambia, l'impronta cambia completamente.

Versione 1.1 del 09/11/2026 Perizia indipendente in corso: la versione è pubblicata ma non ancora verificata da un esterno. Nome e cognome dell'elettore cifrati con la chiave della votazione: il riquadro "Su di te" li decifra prima di mostrarli. Firma cieca, urna e ricevuta invariate.
FileImpronta SHA-256
js/AN05_blind.js8ecfe8d8b1d51c1aaba7b1021baa9a360bda79e4c8df58161d82e648318dab26
js/AN05_voto.jsbe40074f8abe90e0fe86334a5a5a77fd0dbd4b0527f8bc45f9d52cd65016b370
AN05_voto_firma.php7ff0bd7c0bba21594360530605e40906b8c0cc3f633e8b675f449ffd30ae2650
AN05_voto_urna.phpa4e98db625c2aa44c78b3f8dae273ec08e96ecaa635a419fe78c3ddedc876531
includes/AN05_blind.phpf8350ed80e3e1f10017c7f027235dabb79681ff14f02d4c7893c54c10dc04679
Impronta del nucleo2c002f34578595611a3fa2339eed4dc61fe71b369307630917c5bd8f7b077c51

Si ottiene con il comando: sha256sum js/AN05_blind.js js/AN05_voto.js AN05_voto_firma.php AN05_voto_urna.php includes/AN05_blind.php | sha256sum

Registro pubblico delle versioni (fuori dal nostro sito)

Un sito può mentire sulle proprie impronte: per questo lo stesso elenco è pubblicato anche in un archivio esterno e nella perizia. Confronta le impronte qui sopra con quelle del registro.

https://github.com/marcoterzolo/metisitalia-nucleo-voto

Il file nel tuo browser

Il lavoro che protegge il segreto (mettere la "maschera" al tuo voto) lo fa il tuo browser, con due file che puoi scaricare e controllare.

  1. Apri questi due indirizzi e salva i file (tasto destro, "Salva con nome"): https://www.metisitalia.it/js/AN05_blind.js e https://www.metisitalia.it/js/AN05_voto.js.
  2. Calcola l'impronta di ciascun file. Windows: apri il Prompt dei comandi e scrivi certutil -hashfile AN05_blind.js SHA256 . Mac: Terminale, shasum -a 256 AN05_blind.js . Linux: sha256sum AN05_blind.js .
  3. Confronta il risultato con l'impronta della stessa riga qui sopra e con quella del registro pubblico. Devono essere identiche.
  4. Durante il voto puoi rifarlo dalla scheda: strumenti per sviluppatori (F12), scheda "Sorgenti" o "Rete", gli stessi due file.

Cosa parte dal browser

Apri la scheda di voto, premi F12, scegli la scheda "Rete" (Network) e vota. Vedrai due richieste al server, a qualche secondo di distanza.

1. AN05_voto_firma.php

Contiene il tuo link personale e un lungo numero illeggibile (la busta chiusa). Le tue scelte NON ci sono. Il server firma il numero senza poterlo leggere.

2. AN05_voto_urna.php

Contiene le scelte, il gettone e la firma. NON contiene il tuo link, né cookie (controlla l'intestazione "Cookie": è assente). Parte dopo un'attesa casuale di 5-20 secondi, per non poterla affiancare alla prima.

Tra le due richieste non c'è niente in comune che il server possa collegare: il numero della prima è "mascherato" con un valore che resta solo nel tuo browser.

Com'è fatta l'urna

Queste sono le colonne vere delle due tabelle dove finiscono le schede, lette adesso dal database (solo la struttura, nessun dato). Non c'è nessuna colonna con il nome, l'email, il link, l'ora o l'indirizzo IP.

op11_schede
ColonnaTipoA cosa serve
op11_idchar(32)chiave casuale della scheda (non un numero progressivo: l'ordine non rivela niente)
op11_an05_idbigintvotazione
op11_ricevuta_hashchar(64)impronta del codice ricevuta (per la verifica)
op11_sceltevarchar(500)le scelte
op11_datadatesolo il giorno, senza ora
op12_gettoni_spesi
ColonnaTipoA cosa serve
op12_hashchar(64)impronta del gettone già usato (impedisce di votare due volte)
op12_an05_idintvotazione

La stessa chiave per tutti

Un trucco possibile sarebbe dare a ogni elettore una chiave diversa, per riconoscerlo dalla firma. Per escluderlo, con la ricevuta il tuo browser calcola l'impronta della chiave che ha usato davvero. La stessa impronta è stampata nella pagina dei risultati e nel verbale: se tutti vedono la stessa, nessuno ha ricevuto una chiave "personale".

Cosa non possiamo dimostrare

  • Il server web (Aruba) registra per ogni richiesta l'indirizzo IP e l'ora, come tutti i siti. L'attesa casuale e la richiesta anonima rendono molto difficile collegare le due richieste, ma con pochissimi votanti e accesso a quei registri non è impossibile in teoria.
  • Le impronte dei file PHP le può controllare solo chi ha accesso al server: per questo servono il registro esterno e la perizia indipendente.
  • Le votazioni create prima della firma cieca usano ancora il vecchio sistema di voto: questa pagina vale per quelle con la firma cieca (tutte quelle nuove).

Spiegazione completa della firma cieca

Per i periti

Se devi certificare il sistema per un cliente, possiamo darti: il codice del nucleo (anche nel registro pubblico), la descrizione del protocollo, l'elenco delle prove già fatte e come rifarle, un ambiente di prova e la struttura completa del database (senza dati). Scrivici dalla pagina Contatti.

Contattaci