Vada al contenuto
Condorcet.vote Alpha
← Documentazione tecnica

Chiavi della piattaforma

I certificati pubblici che permettono a chiunque di verificare, senza doversi fidare di noi, le firme della piattaforma.

Ogni blocco della catena di un'elezione è firmato da Condorcet.Vote nel formato OpenPGP v6 (RFC 9580, Ed25519). Questi certificati pubblici permettono a chiunque di verificare tali firme in modo indipendente: sono il corrispettivo umano del nostro endpoint macchina .well-known.

Protocollo v1

Il portachiavi

I certificati di firma.

Una sola chiave è attiva: firma i nuovi blocchi. Durante una rotazione, la chiave precedente viene ritirata ma resta pubblicata: il suo certificato porta una scadenza OpenPGP al momento del ritiro, e i blocchi che ha firmato restano verificabili per sempre.

Chiave …823E8A664BD39588

Attiva
In servizio Firma i nuovi blocchi
Impronta OpenPGP v6 (SHA-256)
84A2 5BF8 B110 2694 742F E190 55B1 1476 9188 4ABB 3FD5 6FE7 823E 8A66 4BD3 9588
Certificato pubblico (armored) Mostra
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: 84A2 5BF8 B110 2694 742F E190 55B1 1476  9188 4ABB 3FD5 6FE7 823E 8A66 4BD3 9588
Comment: Condorcet.Vote Platform Signing Key (reset-20261023_135

xioGattnRRsAAAAgeRKItmA9/RPOG22Of7cswhdccK3QrdywiTISAKJXjdnCpgYf
GwoAAAA3BYJq22dFAwsJBwMVCggCmwECHgkiIQaEolv4sRAmlHQv4ZBVsRR2kYhK
uz/Vb+eCPopmS9OViAAAAADj1iDWdvJuqj1hheWUsD24VKrGZCtqgrp1Ienc9WRA
UR27cSRdzX0DUiQ1XZTRSUxYMcKaUFQwo3ltD4KKFnEF4OS+oPvzXsI4c6EkSLgK
q577mBQMN4OJtGaGr3pasCwRhQPNO0NvbmRvcmNldC5Wb3RlIFBsYXRmb3JtIFNp
Z25pbmcgS2V5IChyZXNldC0yMDI2MTAyM18xMzU1MTcpwqkGExsKAAAAOgWCattn
RQMLCQcDFQoIApkBApsBAh4JIiEGhKJb+LEQJpR0L+GQVbEUdpGISrs/1W/ngj6K
ZkvTlYgAAAAAMJQgKeuJkMjm8rvnONu29FdFySeXX7ACDi4Hbo1AWsq5341xu6oI
HcJ4519+WCowBqn/wKa3aWXIcZYjIR8uJ1Gq2SFdBDvC7nqJYTLb6nDP/0fsp4+I
2PAtPJ7DAJV9w9UPzioGattnRRsAAAAgca8Yp4SALipp7Ddzj5+8UD/ftVOLiT65
DQdggjKV9xzCwHUGGBsKAAAAxgWCattnRQKbApmgBhkbCgAAACkFgmrbZ0UiIQYg
SPe22rqmhaBXGovf4gmLgPcU6xpOht8soi5GKvRQkQAAAAC+PSBWnJJ8rjDXPNzv
ZHse409bzCcg19UBjjgufAp3DTl5kcCmXxSSfrtkc55wR7PxuoUjwMPSs3MWBep0
Nu9QN8GIe87tveNH5Q5F1FYpnVnYd49N8OgCPv2Wf9bdpFcGOgkiIQaEolv4sRAm
lHQv4ZBVsRR2kYhKuz/Vb+eCPopmS9OViAAAAAAFbyBZhIm+Sohn6LuYnpwQkI48
fWRZVc/pp439JaX9sLwXB03QPd07KMXdBj3rl8vu56vkxbZb06mW1fub+MZgKCuz
l10YjvE5I+/TIzO9PxrZpvYzdz20n/L5bLkAddG9awE=
-----END PGP PUBLIC KEY BLOCK-----
Accesso programmatico

Lo stesso portachiavi, in OpenPGP.

Per automatizzare la verifica, i certificati armored vengono serviti concatenati a un URL stabile, in prima parte (first-party, stesso dominio). È il corrispettivo macchina di questa pagina.

Endpoint · application/pgp-keys
https://admin.stg.condorcet.vote/.well-known/blockchain-signing-key
URL stabile. Servito sul dominio principale, senza reindirizzamento di terze parti.
Come verificare

Un comando, con strumenti standard.

La firma di un blocco è una firma distaccata OpenPGP v6 (Ed25519) sui byte esatti del file pubblicato; il concatenamento poggia sulla sua impronta SHA3-512. La verifica utilizza Sequoia (sq) o qualsiasi implementazione RFC 9580 (GnuPG non legge ancora il formato v6).

1
Recuperi il blocco, i suoi sidecar e il portachiavi Il blocco {n}.json, la sua firma {n}.json.sig e la sua prova di marca temporale {n}.json.ots dal registro pubblico dell'elezione; i certificati dall'endpoint .well-known.
2
Verifichi la firma OpenPGP sq verify: le regole di validità standard rifiutano una firma datata al di fuori della finestra della propria chiave.
3
Verifichi il concatenamento SHA3-512 L'impronta del blocco precedente (openssl dgst -sha3-512) deve essere uguale al previous_hash del blocco successivo.
4
Verifichi l'ancoraggio Bitcoin (OpenTimestamps) ots verify: la prova .ots dimostra l'esistenza del blocco alla sua data di pubblicazione, indipendentemente dalla piattaforma.
Verifica · shell
# 1 · il blocco, i suoi sidecar e il portachiavi pubblicato
BLOCCO=3.json ; SIG=3.json.sig ; OTS=3.json.ots
curl -s https://condorcet.vote/.well-known/blockchain-signing-key > chiavi.pgp

# 2 · verificare la firma OpenPGP v6 (Sequoia: GnuPG non legge il v6)
sq verify --signer-file chiavi.pgp --signature-file "$SIG" "$BLOCCO"

# 3 · il concatenamento: l'impronta del blocco deve essere uguale al previous_hash del successivo
openssl dgst -sha3-512 "$BLOCCO"

# 4 · l'ancoraggio Bitcoin: la prova OpenTimestamps del blocco
ots verify -f "$BLOCCO" "$OTS"