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:

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 contiene N credenciales públicas. Se debe enviar el archivo completo al administrador de la elección; será el public_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!