La herramienta belenios-tool
Introducción
belenios-tool
es una herramienta de línea de comandos que puede utilizarse para realizar tareas administrativas relacionadas con las elecciones, así como verificaciones. Si no se desea utilizar el servidor web proporcionado, se puede organizar una elección completa utilizando esta herramienta.
Esta sección documenta cómo utilizar belenios-tool
, desde el punto de vista de los diversos roles involucrados en una elección. También se puede ejecutar con la opción --help
para obtener más información.
Instalación
Para su utilización con las elecciones de la UNC, se requiere la versión 3.0 de belenios-tool
. Esta versión se puede instalar de dos formas:
- Compilando desde los fuentes, como se describe en https://gitlab.inria.fr/belenios/belenios/-/blob/master/INSTALL.md.
- Instalando el paquete correspondiente en una distribución de Linux Debian o Ubuntu que lo permita.
Instalación del paquete belenios-tool
Si bien es posible instalar belenios-tool
en distintas versiones de Ubuntu y Debian, las versiones suelen no ser las adecuadas. Por ejemplo, con Ubuntu 22.04 se distribuye la versiión 1.17, y con Ubuntu 24.04 la versión 2.2. Para obtener la versión 3.0 debemos recurrir a Ubuntu 25.04 o a Debian sid.
Sin embargo, es posible instalar el paquete distribuido con Ubuntu 25.04 en un Ubuntu 24.04, ya que todas sus dependencias están presentes. No ocurre así con versiones anteriores: no es posible instalar el paquete en Ubuntu 22.04.
Para instalar el paquete en Ubuntu 24.04, es necesario descargar de https://launchpad.net/ubuntu/plucky/+package/belenios-tool la versión correspondiente a la arquitectura utilizada. Por ejemplo, para arquitectura Intel, se puede ejecutar:
wget http://launchpadlibrarian.net/778340435/belenios-tool_3.0+dfsg-2_amd64.deb
sudo apt install ./belenios-tool_3.0+dfsg-2_amd64.deb
Guía del auditor
Nótese que cualquier persona puede ser auditor. Toda persona que desempeñe un rol específico en una elección debería comenzar por auditar los datos de la elección.
Durante una elección, se debe tener acceso a un archivo $UUID.bel
.
Nótese que el archivo es dinámico y evoluciona (solo mediante adiciones) durante la elección. Deja de evolucionar una vez que se realiza el escrutinio de la elección.
Si se coloca este archivo en un directorio /path/to/election
, el siguiente comando realizará todas las verificaciones posibles:
belenios-tool election verify --dir /path/to/election
Guía del votante
Si se coloca la credencial secreta en un archivo /path/to/credential
y las opciones seleccionadas en un archivo /path/to/choices.json
(como un array de arrays de 0/1 en formato JSON), el siguiente comando generará una boleta en bruto que puede ser enviada al administrador de la elección:
belenios-tool election generate-ballot --dir /path/to/election --privcred /path/to/credential --choice /path/to/choices.json
En el caso de que la elección sea administrada con la interfaz web, una boleta en bruto preparada con la herramienta de línea de comandos puede ser cargada directamente a través de la interfaz web.
Guía del administrador
La herramienta de línea de comandos permite ejecutar todas las operaciones criptográficas necesarias para llevar a cabo una elección completa.
Guía de la autoridad de emisión de credenciales
Generación de credenciales
Si se dispone de una lista de identidades en un archivo F
con N
líneas, una identidad por línea, se debe ejecutar:
belenios-tool setup generate-credentials --uuid XXXXXXXXXXXXXX --file F
donde XXXXXXXXXXXXXX
es el UUID de la elección proporcionado por el administrador. Se generarán dos archivos:
T.privcreds
: cada línea de este archivo contiene una identidad y una credencial privada. Se debe enviar a cada votante la credencial asociada. Se debe mantener este archivo en secreto y seguro si se desea poder reenviar una credencial más tarde (p. ej., si un votante la perdió o no la recibió).T.pubcreds
: este archivo JSON contieneN
credenciales públicas. Se debe enviar el archivo completo al administrador de la elección; será elpublic_creds.json
de la elección (y esto debe ser verificado).
Opcionalmente, se puede añadir una opción --dir
para especificar el directorio donde estos archivos serán escritos.
Guía del fedatario
Generación de claves
Para generar un par de claves, se debe ejecutar:
belenios-tool setup generate-trustee-key
Se generarán dos archivos, XXXXXXXX.public
y XXXXXXXX.private
, que contienen respectivamente la clave pública y la privada. Se debe enviar el archivo de clave pública al administrador del servidor y se debe mantener la clave privada con extremo cuidado. Cuando la elección esté abierta, se debe verificar que la clave pública correspondiente esté presente en el archivo trustees.json
publicado.
Descifrado parcial
Para calcular la participación de descifrado, se debe configurar /path/to/election
como se describe en la sección Guía del votante anterior, y se debe ejecutar:
belenios-tool election decrypt --dir /path/to/election --privkey /path/to/privkey > partial_decryption.json
y se debe enviar partial_decryption.json
al administrador de la elección.
Nota: ¡Debe asegurarse la autenticación de todos los archivos de entrada cuando se utilice la clave privada!