Klérotèrion · Sécurité et limites

Ce qui est garanti, sous quelles hypothèses, et ce qui ne l'est pas

Une garantie sans son hypothèse est un mensonge. Cette page donne les trois ensemble, et dit où en est le logiciel aujourd'hui. Le mot « garantit » n'y est employé que pour des propriétés qui reposent sur des briques publiées et, pour le vote, prouvées.

Où en est Klérotèrion : trois statuts

Statut 1

Démonstration locale

Un fichier qu'on ouvre chez soi : les écrans, la règle, le tirage, le cahier, avec une cellule fictive. Rien ne sort de l'appareil.

Statut 2 · aujourd'hui

Prototype expérimental non décisionnel

Le portail d'essai en ligne. Les votes n'y sont pas chiffrés et rien ne s'y décide pour de vrai. Il sert à comprendre, à jouer le test d'adoption à dix, et à dire ce qui manque.

Statut 3 · à venir

Version auditée pour des décisions réelles

Vote chiffré et vérifiable (Belenios), journal à témoins, image installable, test d'intrusion externe publié. Tant qu'elle n'existe pas, aucune décision réelle ne doit être prise avec Klérotèrion.

La feuille de route dit comment on passe du statut 2 au statut 3, et à quelles conditions.

Ce qui sera garanti au statut 3, et par quoi

PropriétéMécanismeHypothèse sous laquelle ça tient
Secret du voteBelenios : bulletin chiffré dans le navigateur, urne publique, seul le total est déchiffréMoins de 4 détenteurs sur 7 ne s'entendent pas ; le navigateur du votant n'est pas compromis
VérifiabilitéPreuves à divulgation nulle, urne publique, protocole vérifié formellementAucune : la vérification ne suppose la confiance en personne
Aucun bulletin ajoutéAutorité d'identifiants distincte du serveur, nombre d'identifiants publié et vérifiéL'autorité d'identifiants et l'administrateur ne s'entendent pas (rôles disjoints, tirés au sort)
Absence de reçuPropriété de Belenios ; revote autorisé, le dernier compteLe votant a accès à un moment seul, ou au terminal de la cellule
Tirage au sort non manipulableEngagement publié avant révélation, recalcul possible par tousUne fois l'engagement publié, aucune
Journal inaltérableChaînage d'empreintes (RFC 6962), six témoins, quatre cosignatures, protocole tlog-witness existantAu plus un témoin complice
Pas de double histoireÉpoques : un journal, une politique ; genèse cosignée ; registre papier qui trancheLe registre est tenu en assemblée par deux gardiens, deux exemplaires
Aucun compte non humainFIDO2 seul, clé matérielle remise en main propre, attestation vérifiéeLa cellule connaît ses membres (vrai sous 150)
Volume bornéTrois jetons anonymes par mois, pour tousLe service d'identité n'émet pas hors quota (vérifiable au journal)
Rien ne quitte la celluleNœud sur le réseau local, aucun service tiers, aucune télémétrieLa configuration livrée n'est pas modifiée
Ce qui tourne est ce qui a été reluBuilds reproductibles, empreintes publiées, releases cosignéesAu moins une cellule rebuild et compare
La règle appliquée est la règle votéeEmpreinte de la règle cosignée au journal ; refus de démarrer sinonLe journal (ci-dessus)
Pas de mot de passe à volerIl n'en existe pasAucune

Ce qui n'est pas garanti, et ce qu'on fait à la place

  • Le terminal du votant. Un navigateur ou un téléphone compromis peut montrer un bulletin et en envoyer un autre. Aucun vote à distance ne règle ça. Parades : terminal partagé de la cellule, revote, papier pour les décisions à fort enjeu.
  • La coercition physique. Quelqu'un qui regarde par-dessus l'épaule. Parades : revote jusqu'à la clôture, terminal partagé, vote jamais plus court que 96 heures.
  • Deux complices parmi les témoins. La garantie du journal est à un complice. À deux, une double histoire devient possible : le journal s'arrête, l'assemblée tranche, le papier prend.
  • Quatre détenteurs sur sept qui s'entendent. Ils lèveraient le secret. Sept personnes tirées au sort à chaque scrutin, jamais l'administrateur ni l'autorité : improbable, pas impossible.
  • Un membre qui automatise sa propre clé. Le système bloque les faux comptes, pas une personne qui fait tourner un script avec sa clé légitime. Seuls les trois jetons par mois bornent les dégâts.
  • Les modes de scrutin à bulletins visibles. Jugement majoritaire, Condorcet et STV se dépouillent après mélange : les bulletins sont visibles, non reliés aux personnes. Dans une petite cellule, un classement singulier peut se reconnaître. Ces modes sont réservés aux cellules d'au moins quarante membres pour les décisions à fort enjeu ; l'ostracisme se vote toujours en oui / non.
  • La sagesse de la décision. Un vote secret vérifiable peut voter une bêtise. Contradicteur tiré au sort, page pour/contre, réexamen à un an, papier : ce sont des chances, pas des garanties.

Hypothèses de confiance déclarées

Ce sont les tiers dont le système dépend sans pouvoir les vérifier lui-même. Ils sont nommés pour qu'on sache où regarder.

  • Le fabricant de la clé matérielle de chaque membre.
  • La FIDO Alliance, dont les métadonnées disent quelles clés protègent leur secret dans du matériel (instantané figé et épinglé, jamais interrogé en ligne).
  • Apple, sur iPhone : un veto sur tout binaire natif, jusqu'au plancher de l'application web.
  • La liste des éligibles d'un cycle de tirage est publique par nécessité de vérification ; toute agrégation entre cycles est interdite au service et à l'interface. C'est une règle, pas une propriété prouvée.
  • Le coffre de la cellule est copiable une fois ouvert ; un jeton d'initiative peut être donné à quelqu'un d'autre.
  • Sur la voie « conteneurs sur votre propre Linux », la sécurité de l'hôte est la vôtre ; une vérification bloquante au premier lancement la contrôle, elle ne la remplace pas.

Ce qui rend ces garanties crédibles plutôt que déclarées

Aucune cryptographie maison. Le vote est Belenios (Inria/CNRS, protocole vérifié formellement), le journal un réseau de témoins existant (C2SP tlog-witness), la voix Linphone (ZRTP). On les assemble, on ne les modifie pas. Ce qu'une brique ne sait pas faire, on ne le fait pas non plus : le journal s'arrête, l'assemblée tranche, le papier prend le relais.

Une clause, un test. Chaque règle de la spécification a un identifiant, et la construction refuse qu'une règle perde son test ou soit reformulée en silence. Les vecteurs de test du tirage sont publiés : une implémentation qui ne les reproduit pas est fausse.

Avant toute décision réelle : intégration effective de Belenios, test d'intrusion par un tiers avec rapport public, audit de la chaîne de compilation et des dépendances, cérémonie des clés formalisée, restauration après panne éprouvée. Tant que ce n'est pas fait, le statut reste 2.

Ce que le logiciel demande, en une phrase : il ne demande de faire confiance à aucune machine ; il demande de faire confiance à ce que dix personnes peuvent vérifier ensemble, et il dit précisément où cette vérification s'arrête.

Code : AGPL-3.0. Documentation : CC BY-SA 4.0. Dépôt : git.floating-coconuts.com/SuperTarAnTa/kleroterion. Signaler une faille : contact@floating-coconuts.com ; les rapports sont publiés une fois corrigés.