Mecánica

El sello de la lista: probar que no cambió sin publicar a los participantes

· · Por Yuval Abudarham

Un sorteo que sus participantes recalculan ellos mismos

Semilla publicada antes del sorteo, aleatoriedad pública drand, vídeo compartible. Gratis para los participantes.

Crear una cuentaVerificar un sorteo existente

Dos exigencias se oponen en apariencia. Para que un sorteo sea demostrable hay que probar que la lista de participantes no se ha movido. Para respetar el RGPD, publicar esa lista queda descartado. El sello resuelve la contradicción, y el modo en que lo hace es la parte más elegante del dispositivo.

Por qué hay que sellar

La huella de la semilla y la ronda drand anunciada cierran dos puertas. Queda una tercera, y es la más ancha: la lista misma.

Mientras pueda cambiar, los dos primeros compromisos no garantizan nada. Añadir o retirar una entrada tras ver el resultado basta para cambiar el ganador sin contradecir ninguna huella publicada. El cálculo tiene tres entradas; congelar dos no sirve de nada si la tercera queda libre.

Qué es una raíz de Merkle

Es una huella de conjunto, construida por pisos. Cada participación se convierte en una hoja; las hojas se cifran de dos en dos, luego los resultados de dos en dos, hasta un valor único: la raíz.

De ello se derivan dos propiedades:

  • cualquier modificación cambia la raíz. Retirar una entrada, añadir otra, modificar una sola: la raíz publicada deja de corresponder, y se constata de inmediato;
  • se puede probar la pertenencia de una hoja sin mostrar las demás. Eso distingue una raíz de Merkle de una simple huella de archivo.

Qué contiene una hoja y qué no

El punto que resuelve la cuestión del RGPD está aquí: las hojas no llevan ningún dato personal. Contienen un identificador seudónimo y un peso. Ninguna dirección de correo, ningún nombre, ninguna IP.

Consecuencia directa: el sello publicado no revela nada de nadie. Es incluso publicable sin restricción, puesto que no dice ni cuántas personas se llaman cómo, ni quién participó; solo que un conjunto dado, reducido a seudónimos, no ha cambiado.

Este diseño tiene un efecto secundario valioso. Un participante que pide la supresión de sus datos tras el sorteo obtiene satisfacción sin que el sello se vuelva falso: se suprimen los datos personales asociados al identificador, y el identificador permanece en un árbol que no contenía nada más.

La prueba de inclusión

Un participante quiere asegurarse de que figuraba en el conjunto. Se le facilita una prueba de inclusión: la serie de huellas vecinas necesarias para remontar desde su hoja hasta la raíz publicada.

Si rehace ese camino y encuentra la raíz, quedan establecidas dos cosas: estaba en la lista, y la lista es la que fue sellada. Obtiene esa certeza sin que nadie le muestre a los demás participantes.

El invariante de orden

El sello se publica al cerrar las inscripciones, antes de que exista la ronda drand empleada. Se verifica con la misma comparación de enteros que antes:

`rondaDelSello < rondaDelSorteo`

El encadenamiento completo queda así: la lista ya no puede cambiar sin que la raíz deje de corresponder; el azar no era conocible cuando quedó congelada; el resultado está por tanto ya determinado en el momento del sellado, y nadie —ni siquiera quien tiene la semilla y la base de datos— puede saber cuál.

Lo que hay que recordar

Publicar la lista de participantes está descartado; publicar su huella no. La raíz de Merkle cambia ante la menor adición, retirada o modificación, y permite a un participante probar que figuraba sin ver a los demás. Las hojas solo contienen seudónimos: el sello sigue siendo válido incluso tras la supresión de los datos de un participante. Se publica al cierre, antes de que exista el azar empleado.

FAQ

¿Qué ocurre si la raíz no corresponde en la verificación?

El sorteo es inválido. Como con la huella de la semilla, el control es binario y no se discute: los valores corresponden o no corresponden.

¿Puede un participante descubrir a los demás a partir del sello?

No. La raíz es un valor único, y una prueba de inclusión solo revela huellas intermedias, de las que no se remonta a nada. Ni siquiera reuniendo varias pruebas se obtiene la lista.

¿Qué ocurre con las participaciones llegadas tras el cierre?

No están en el sello, por tanto no están en el sorteo. Ese es el sentido del cierre, y se anuncia antes de abrir las inscripciones.

¿Por qué un peso en cada hoja?

Porque un giveaway puede prever ponderaciones anunciadas por adelantado, por ejemplo posibilidades adicionales por una acción concreta. El peso forma parte de lo sellado: no puede ajustarse después.

Probar