Aller au contenu
Condorcet.vote Alpha
← Documentation technique

Clés de la plateforme

Les certificats publics qui permettent de vérifier, sans nous faire confiance, les signatures de la plateforme.

Chaque bloc de la chaîne d'une élection est signé par Condorcet.Vote au format OpenPGP v6 (RFC 9580, Ed25519). Ces certificats publics permettent à quiconque de vérifier ces signatures de façon indépendante. Ils sont le pendant humain de notre endpoint machine .well-known.

Protocole v1

Le trousseau

Les certificats de signature.

Une seule clé est active : elle signe les nouveaux blocs. Lors d'une rotation, la clé précédente est retirée mais reste publiée : son certificat porte une expiration OpenPGP à l'instant du retrait, et les blocs qu'elle a signés demeurent vérifiables pour toujours.

Clé …823E8A664BD39588

Active
En service Signe les nouveaux blocs
Empreinte OpenPGP v6 (SHA-256)
84A2 5BF8 B110 2694 742F E190 55B1 1476 9188 4ABB 3FD5 6FE7 823E 8A66 4BD3 9588
Certificat public (armored) Afficher
-----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-----
Accès programmatique

Le même trousseau, en OpenPGP.

Pour automatiser la vérification, les certificats armored sont servis concaténés à une URL stable, en première partie (first-party, même domaine). C'est le pendant machine de cette page.

Endpoint · application/pgp-keys
https://admin.stg.condorcet.vote/.well-known/blockchain-signing-key
URL stable. Servie sur le domaine principal, sans redirection tierce.
Comment vérifier

Une commande, avec des outils standard.

La signature d'un bloc est une signature détachée OpenPGP v6 (Ed25519) portant sur les octets exacts du fichier publié ; le chaînage repose sur son empreinte SHA3-512. La vérification utilise Sequoia (sq) ou toute implémentation RFC 9580, car GnuPG ne lit pas encore le format v6.

1
Récupérez le bloc, ses sidecars et le trousseau Le bloc {n}.json, sa signature {n}.json.sig et sa preuve d'horodatage {n}.json.ots depuis le registre public de l'élection ; les certificats depuis l'endpoint .well-known.
2
Vérifiez la signature OpenPGP sq verify : les règles de validité standard rejettent une signature datée hors de la fenêtre de sa clé.
3
Vérifiez le chaînage SHA3-512 L'empreinte du bloc précédent (openssl dgst -sha3-512) doit égaler le previous_hash du bloc suivant.
4
Vérifiez l'ancrage Bitcoin (OpenTimestamps) ots verify : la preuve .ots démontre l'existence du bloc à sa date de publication, indépendamment de la plateforme.
Vérification · shell
# 1 · le bloc, ses sidecars et le trousseau publié
BLOC=3.json ; SIG=3.json.sig ; OTS=3.json.ots
curl -s https://condorcet.vote/.well-known/blockchain-signing-key > cles.pgp

# 2 · vérifier la signature OpenPGP v6 (Sequoia, car GnuPG ne lit pas le v6)
sq verify --signer-file cles.pgp --signature-file "$SIG" "$BLOC"

# 3 · le chaînage : l'empreinte du bloc doit égaler le previous_hash du suivant
openssl dgst -sha3-512 "$BLOC"

# 4 · l'ancrage Bitcoin : la preuve OpenTimestamps du bloc
ots verify -f "$BLOC" "$OTS"