Una blockchain per elezione, fatta per essere riconteggiata.
Ogni elezione pubblica la propria blockchain sul proprio registro pubblico: blocchi JSON concatenati per hash, firmati dalla piattaforma e marcati temporalmente nella blockchain Bitcoin. Il protocollo di base basta a verificare un'elezione; la blockchain si aggiunge sopra e permette a chiunque di controllare l'integrità e l'immutabilità del registro, senza dipendere da noi.
Perché pubblicare una blockchain?
In un seggio elettorale, la fiducia viene dalla sala: l'urna è sotto gli occhi di tutti. Online, la sostituiamo con qualcosa di più esigente: pubblicare l'urna stessa, in una forma che nessuno, nemmeno noi, può riscrivere discretamente.
Un registro per elezione
Ogni elezione produce la propria catena, pubblicata sul proprio registro pubblico: la configurazione dello scrutinio, le chiavi autorizzate a votare, le schede, poi la chiusura. Nient'altro vi entra, e il risultato non vi figura: si ricalcola a partire dalle schede pubblicate.
Qualsiasi riscrittura è rilevabile
Ogni blocco contiene l'impronta crittografica del precedente. Modificare una scheda vecchia rompe tutte le impronte successive: chiunque abbia conservato una copia del registro può dimostrarlo.
Firmata, e datata fuori dalle nostre mura
Ogni blocco è firmato dalla piattaforma, poi marcato temporalmente nella blockchain Bitcoin tramite OpenTimestamps: la sua esistenza a una data determinata si dimostra senza doverci fidare.
Ciò che non è
Né criptovaluta, né mining, né consenso decentralizzato: un registro ad aggiunta soltanto, che chiunque può copiare. L'immutabilità viene dalle copie indipendenti e dall'ancoraggio Bitcoin, non da una rete di miner.
La vita di una catena, dall'apertura alla chiusura.
Quattro tipi di blocchi, un ciclo fisso, un'aggiunta strettamente sequenziale. La catena viene pubblicata fin dall'apertura dello scrutinio e resta consultabile dopo l'elezione.
Configurazione: la genesi
All'apertura, il primo blocco congela ciò che non cambierà più: titolo, candidati, tipo di scrutinio, regole della scheda, opzioni di anonimato e ponderazione, e la dimensione della lista elettorale all'apertura (gli elettori possono ancora essere aggiunti durante il voto; la lista del blocco di chiusura mostra la dimensione finale, quindi il numero di aggiunte è pubblico). Il suo previous_hash è nullo: è l'origine della catena.
Anelli: le chiavi autorizzate
Il blocco di anelli pubblica le chiavi pubbliche ammesse a votare, raggruppate in anelli di firma. Una sostituzione d'emergenza durante lo scrutinio aggiunge un nuovo blocco di anelli in coda alla catena. Nulla viene mai inserito né riscritto.
Voti: le schede, a lotti
Le schede firmate vengono pubblicate a lotti durante lo scrutinio (mai una per una, per non marcare temporalmente i singoli voti) e ordinate per key image all'interno di ciascun blocco. Alla chiusura, il residuo viene pubblicato qualunque sia la sua dimensione.
Chiusura: totali e registro di partecipazione
Un unico blocco di chiusura sigilla la catena: i totali (blocchi, schede, partecipazione, pesi) e il registro di partecipazione, pseudonimo per impostazione predefinita. Nulla può essere aggiunto dopo di esso.
Ancoraggio in Bitcoin
Non appena pubblicato, ogni blocco viene sottoposto ai calendari OpenTimestamps. La sua prova .ots viene completata una volta confermata la transazione nella blockchain Bitcoin; si verifica poi con gli strumenti standard, senza doverci dare fiducia.
Verifichi, senza chiedere il permesso.
Tutto è scaricabile in chiaro, senza account né API. Il formato esatto di ogni blocco, le chiavi che li firmano e la procedura di verifica, controllo per controllo, sono pubblicati nella documentazione tecnica.
- Blockchain Il sovra-protocollo che sigilla il registro: busta, quattro tipi di blocco, serializzazione, concatenamento, firma, marcatura temporale.
- Procedura di verifica Verificare un'elezione da cima a fondo: dal solo registro, oppure con la blockchain.
- Chiavi della piattaforma I certificati OpenPGP v6 che firmano i blocchi, la loro rotazione e il loro punto di accesso per le macchine.
Ciò che questa blockchain non pretende di essere.
La parola «blockchain» a volte promette più di quanto dica. Ecco precisamente dove si fermano le nostre garanzie, e da dove provengono realmente.
Nessun consenso decentralizzato
La piattaforma è l'unica scrivente del registro: né miner, né validatori. La struttura garantisce che nessuna riscrittura possa passare inosservata, non che sia fisicamente impossibile.
La firma dimostra l'autenticità
Siamo noi a detenere la chiave di firma. Essa stabilisce che un blocco proviene realmente dalla piattaforma e non è stato falsificato da un terzo. Non rende il blocco immutabile.
L'immutabilità viene dalle copie
Essa poggia sulle copie indipendenti del registro (la Sua, quella di un contestatore) e sull'ancoraggio Bitcoin, che rendono dimostrabile a posteriori qualsiasi riscrittura.
Un registro che si verifica, non che si crede.
Il resto del protocollo (anonimato, firme ad anello, anti-duplicazione) è spiegato nella pagina Sicurezza; il libro bianco ne offre la versione di riferimento.