Lxs 400: Chile Delibera

diagrama diagrama

“Lxs 400: Chile Delibera”, es un proyecto de participación ciudadana que busca contribuir a la modernización de la democracia, la despolarización y el entendimiento social a partir de un ejercicio colectivo en el cual la ciudadanía expresa su opinión respecto de asuntos públicos de relevancia. En este proyecto se convocarán a 400 ciudadanas y ciudadanos de todo el país para reunirse, dialogar y debatir sobre los sistemas de pensiones y salud. Ambos tópicos fueron los dos temas de mayor importancia para las chilenas y chilenos en el plebiscito ciudadano realizado por la Asociación Chilena de Municipalidades en diciembre del 2019. “Lxs 400: Chile Delibera” es un proyecto organizado por la Fundación Tribu, con el apoyo del Senado, la Universidad de Chile y la Asociación Chilena de Municipalidades.

El proyecto tiene tres fases: selección y convocatoria, discusión, y conclusión. En la selección y convocatoria se seleccionan al azar los ciudadanos que participarán en el proceso deliberativo. El proceso mismo de intercambio de ideas sobre los temas a discutir ocurre en la segunda fase, y finalmente en la fase de conclusión se comparten los resultados en forma pública.

La Universidad de Chile está a cargo de la fase selección y convocatoria. El CLCERT, el Laboratorio de Criptografía Aplicada y Ciberseguridad de la Facultad de Ciencias Físicas y Matemáticas, junto al Centro de Microdatos de la Facultad de Economía y Negocios, colaboran para llevar a cabo este proceso. En simple, es responsabilidad del CLCERT “tirar los dados” y demostrar que no fueron dados “cargados”. En la práctica, el rol del CLCERT incluye ejecutar los algoritmos necesarios para seleccionar de manera transparente y verificable a los ciudadanos, en un proceso coordinado con el Centro de Microdatos. Es precisamente esta última entidad quien se encarga de convocar individualmente a los ciudadanos para concretar su participación en el proceso de discusión.

El principal sistema (sofware) utilizado para la selección es el Faro de Aleatoriedad, desarrollado por el proyecto Random UChile dentro del CLCERT. A continuación se presentan los procesos y pasos a seguir asociados a la fase de selección y convocatoria.

🏠 Selección Aleatoria de Viviendas

‣ Objetivo

diagrama

‣ Pasos a Seguir

• Paso 1: Definición de Fechas y Valor Secreto Aleatorio
Se definen las fechas (día y hora) en que se realizarán los pasos 2 y 3 que se definen más abajo. Estas fechas se utilizarán para extraer el pulso aleatorio desde el Faro de Aleatoriedad, los cuáles serán utilizados como semilla aleatoria a la hora de realizar las selecciones respectivas. Fechas establecidas (hora local Santiago UTC-3):

Además de especificar dichas fechas, es necesario (para el Paso 3), establecer un valor aleatorio secreto auditable, el cual será utilizado para la selección de las viviendas específicas. Dicho valor NO será publicado para mantener confidenciales las direcciones específicas de los participantes. Más bien, un valor “encriptado” será publicado de manera de asegurar que dicho valor pueda ser auditable en el futuro en caso de ser necesario.

• Si bien el valor aleatorio secreto \(s\) no puede ser revelado, si será publicado en forma "encriptada", utilizando un esquema de compromiso o commitment, una "caja fuerte" digital que permite una potencial verificación posterior. Si algún organismo público relevante del proyecto (por ejemplo, el Senado) desea auditar la correcta ejecución del algoritmo puede solicitar "abrir" el commitment y obtener \(s\). El commitment publicado será el valor \(c = \mathrm{comm}(s)\).
• En un esquema de (esquema de commitment), el algoritmo \(\mathrm{comm}()\) permite ocultar el valor secreto \(s\), pero a la vez, lo obliga a uno a comprometerse ("hacerse responsable") a dicho valor, esto es, a tener que revelar el valor \(c\) posteriormente. En un futuro, si a uno le piden que publique el valor \(s\), no hay manera en que se pueda publicar un valor \(s'\) distinto tal que pueda cumplir que \(c = \mathrm{comm}(s')\). En esta oportunidad, como el valor comprometido es aleatorio, utilizaremos el algoritmo de hash SHA3-512 como algoritmo de commitment.
Actualización: Valor del commitment del valor \(s\) a utilizar es:
\(\mathrm{comm}(s) = \mathtt{b5211dbed3637ceec4ba7ea41683ada1aa9e863e0deb2d4e8cf0b04d02a1456a}\)
          \(\mathtt{ef9fd964ca7ff40dd8fc9f104e6f0c16d3e6b124dfd81bea16e36da907cd99e7}\)

• Paso 2: Selección de Manzanas Censales
Tomando en cuenta los datos recopilados por el Censo 2017, se seleccionarán 30.000 manzanas censales de manera aleatoria. Esta selección tomará en cuenta el número de viviendas que existen en cada manzana censal, es decir, entre más viviendas tenga una manzana, mayor será su probabilidad de ser escogida (y viceversa).
En la fecha establecida en el Paso 1, se extraerá, desde el Faro de Aleatoriedad, el pulso aleatorio emitido en dicho minuto específico, el cual se utilizará como semilla aleatoria para el proceso de selección. Dado el álto número de manzanas a seleccionar, dentro de las 30.000 manzanas censales escogidas puede haber manzanas repetidas, por lo que es necesario registrar, no solamente cuáles manzanas fueron escogidas, sino también el número de veces que fue escogida cada manzana.
Este paso es totalmente público, verificable y replicable por cualquier persona que quiera confirmar su correcta ejecución, para lo cual hay que seguir los pasos descritos más abajo. Estos resultados estarán disponibles públicamente luego de la fecha de la selección de manzanas censales.

• El Faro de Aleatoriedad es un servicio de Random UChile que publica periódicamente, cada un minuto, un pulso aleatorio o número aleatorio de \(512\) bits, siguiendo un algoritmo público y verificable. Para más información visitar este sitio web.
• El número o valor aleatorio \(\mathrm{sem_1}\) obtenido desde el Faro de Aleatoriedad, se utilizará como semilla para alimentar un PRNG (Generador Pseudo-Aleatorio). Se utilizará un PRNG basado en el algoritmo ChaCha20, cuya implementación se puede encontrar aquí.

• Paso 3: Selección de Índices de Viviendas
Luego de haberse escogido 30.000 manzanas censales, es necesario seleccionar, tomando en cuenta las veces que fue seleccionada cada manzana, las viviendas específicas que serán invitadas. Para ello, se seleccionarán al azar índices de viviendas en cada una de las manzanas, de manera que cada una de las viviendas de la manzana tenga la misma probabilidad de ser escogida. Por ejemplo, si una manzana censal fue escogida 3 veces, y en ella existen 50 viviendas en total, se elegirán 3 índices (números) entre 1 y 50.
En el día y hora establecidos en el Paso 1, se extraerá, desde el Faro de Aleatoriedad, el pulso aleatorio emitido en dicho minuto, el cuál se combinará con el valor aleatorio secreto auditable almacenado en el Paso 1, con el fin de derivar una semilla aleatoria para el proceso de selección de índices de viviendas. Al utilizar un valor aleatorio secreto, no es posible realizar este paso de manera pública. Esto se debe a la necesidad de proteger la confidencialidad de las direcciones de las personas que serán invitadas a participar de esta iniciativa. Sin embargo, el valor aleatorio secreto es auditable por una entidad autorizada: al almacenarlo en forma “encripta” podemos revelarlo en caso de ser requeridos (por ej. en forma exclusiva al Senado) para que puedan verificar que el proceso fue hecho correctamente.

• Para derivar la semilla \(\mathrm{sem_2}\) se utilizará el mecanismo HMAC con el algoritmo de hash SHA3-512. Se utilizará el valor aleatorio secreto \(s\) definido en el Paso 1 como llave de HMAC, y el mensaje \(msg\) será el pulso extraído desde el Faro de Aleatoriedad. Esta semilla alimentará al mismo PRNG utilizado en el paso anterior.

• Paso 4: Mapeo de Índice ➔ Dirección
Una vez teniendo los índices de las viviendas escogidas en cada una de las manzanas censales, es responsabilidad del Centro de Microdatos (CMD) de la Universidad de Chile, siguiendo un proceso canónico, mapear dichos índices a direcciones de viviendas específicas que serán llamadas a participar del proceso, mediante el envío de cartas de invitación. Similarmente al paso anterior, para mantener la privacidad de las personas invitadas, este paso no será realizado de manera pública.

‣ Verificación Selección de Manzanas

Debido a la necesidad de mantener la privacidad de los participantes, el Paso 2 es la única instancia que puede ser replicada y verificada por cualquier persona.
Para ello, el código fuente (programa) que se utiliza para la selección aleatoria de las manzanas censales estará disponible públicamente. El detalle técnico - tanto el código fuente como las instrucciones necesarias para poder replicar el proceso - se puede encontrar en este repositorio de Github.
Recordar que solamente se puede verificar la Selección de Manzanas (seleccion_manzanas.py), la cual hay que ejecutar con los siguientes argumentos (correspondiendo a la fecha establecida en el Paso 1):

$ python seleccion_manzanas.py -f 1607517600000 -v 30000

‣ Actualización 18/1/2021: Incremento de 30.000 a 45.000 viviendas seleccionadas

El proceso de selección de viviendas implementado por el Centro de Microdatos de la Universidad de Chile depende de identificar la vivienda seleccionada en base a la información geolocalizada del INE (Censo 2017). Lamentablemente, debido al alto número de manzanas censales seleccionadas sin información geolocalizada (o con información deficiente) de viviendas, se necesitó expandir la selección con 15.000 viviendas adicionales a las 30.000 seleccionadas originalmente. A fin de no alterar la selección publicitada inicialmente, se utilizó el mismo pulso (“semilla”) de la ceremonia original (9/12/2020 a las 9:40:00) para ejecutar el algoritmo de selección pero ahora con el requerimiento de producir 45.000 viviendas. Este cambio garantizó que las 30.000 viviendas seleccionadas originalmente no fueran cambiadas. La lista final consistió entonces en las 30.000 viviendas originales más 15.000 nuevas viviendas, haciendo un total de 45.000 viviendas seleccionadas.

Para lograr el mismo efecto en el proceso de selección de índice de viviendas (esto es, preservar los índices seleccionados originalmente mientras se agregan nuevos índices para las viviendas adicionales), el código fuente del programa (seleccion_indices_viviendas.py) utilizado debió ser modificado ligeramente. Tanto el programa original como el nuevo programa están disponibles en este repositorio de Github.

‣ Actualización 23/2/2021: No se utiliza la información de las 15.000 viviendas adicionales

Debido al retraso en el despacho de las primeras 25.000 invitaciones (del lote de las 30.000 iniciales), no fue posible mandar invitaciones a las 15.000 viviendas incluidas en forma adicional el día 18/1/2021. Esto es, las proceso de selección finalmente sólo incluyó las 30.000 viviendas seleccionadas originalmente el día 9/1/2020. De hecho, de estas 30.000 viviendas, sólo fue posible asociar información geolocalizada confiable (requerida para enviar las invitaciones) a 25.000 de ellas.

🙋 Selección Aleatoria de Personas

‣ Objetivo

Este paso es ejecutado por el Centro de Microdatos de la Facultad de Economía y Negocios de la Universidad de Chile, quienes explicitarán este proceso. En todas las instancias donde este proceso requiere el uso de aleatoriedad (por ejemplo, para seleccionar a los invitados si hay demasiadas personas que han aceptado), se utilizará el Faro de Aleatoriedad de Random UChile.