Articulo de referencia

Compartir secretos homomórficos

En criptografía , el intercambio homomórfico de secretos es un tipo de algoritmo de intercambio de secretos en el que el secreto se cifra mediante cifrado homomórfico . Un homom...

En criptografía , el intercambio homomórfico de secretos es un tipo de algoritmo de intercambio de secretos en el que el secreto se cifra mediante cifrado homomórfico . Un homomorfismo es una transformación de una estructura algebraica en otra del mismo tipo, de manera que se conserva la estructura original. Es importante destacar que esto significa que para cada tipo de manipulación de los datos originales, existe una manipulación correspondiente de los datos transformados. [ 1 ]

Técnica

El intercambio homomórfico de secretos se utiliza para transmitir un secreto a varios destinatarios de la siguiente manera:

  1. Transforma el "secreto" mediante un homomorfismo. Esto suele dar como resultado un formato fácil de manipular o almacenar. En particular, puede existir una forma natural de "dividir" el nuevo formato, tal como se requiere en el paso (2).
  2. Divide el secreto transformado en varias partes, una para cada destinatario. El secreto debe dividirse de tal manera que solo pueda recuperarse cuando se combinen todas o la mayoría de las partes. (Véase Compartir secretos ).
  3. Distribuye las partes del secreto a cada uno de los destinatarios.
  4. Combina las partes de cada uno de los destinatarios para recuperar el secreto transformado, tal vez en un momento específico.
  5. Invierte el homomorfismo para recuperar el secreto original.

Ejemplos

Supongamos que una comunidad desea realizar elecciones mediante un protocolo de votación descentralizado, pero quiere asegurarse de que los encargados del recuento de votos no mientan sobre los resultados. Mediante un tipo de compartición secreta homomórfica conocida como compartición secreta de Shamir , cada miembro de la comunidad puede añadir su voto a un formulario dividido en partes, cada una de las cuales se envía a un encargado del recuento diferente. Las partes están diseñadas de tal manera que los encargados del recuento no pueden predecir cómo afectarán las modificaciones realizadas a cada una al resultado final, lo que les disuade de manipular sus partes. Una vez recibidos todos los votos, los encargados del recuento los combinan, lo que les permite obtener el resultado global de la elección.

En detalle, supongamos que tenemos una elección con:

  • Dos posibles resultados: o no . Representaremos esos resultados numéricamente con +1 y −1, respectivamente.
  • Varias autoridades, k , que contarán los votos.
  • Un número de votantes, n , que emitirán sus votos.
  1. De antemano, cada autoridad genera una clave numérica disponible públicamente, x k .
  2. Cada votante codifica su voto en un polinomio p n de acuerdo con las siguientes reglas: El polinomio debe tener grado k − 1 , su término constante debe ser +1 o −1 (correspondiente a votar "sí" o votar "no"), y sus otros coeficientes deben generarse aleatoriamente.
  3. Cada votante calcula el valor de su polinomio p n en la clave pública x k de cada autoridad .
    • Esto produce k puntos, uno por cada autoridad.
    • Estos k puntos son las "piezas" del voto: si se conocen todos los puntos, se puede calcular el polinomio p n (y, por lo tanto, se puede determinar cómo votó el elector). Sin embargo, si solo se conocen algunos de los puntos, no se puede calcular el polinomio. (Esto se debe a que se necesitan n puntos para determinar un polinomio de grado ( n − 1) . Dos puntos determinan una línea recta, tres puntos determinan una parábola, etc.)
  4. El votante envía a cada autoridad el valor que se produjo utilizando la clave de dicha autoridad.
  5. Cada autoridad recopila los valores que recibe. Dado que cada autoridad solo obtiene un valor de cada votante, no puede determinar el polinomio de ningún votante en particular. Además, no puede predecir cómo afectará la modificación de las propuestas al resultado de la votación.
  6. Una vez que los votantes han emitido sus votos, cada autoridad k calcula y anuncia la suma A k de todos los valores que ha recibido.
  7. Hay k sumas, A k ; cuando se combinan, determinan un polinomio único P ( x ) – específicamente, la suma de todos los polinomios de los votantes: P ( x ) = p 1 ( x ) + p 2 ( x ) + ... + p n ( x ).
    • El término constante de P ( x ) es de hecho la suma de todos los votos, porque el término constante de P ( x ) es la suma de los términos constantes de los p n individuales .
    • Así, el término constante de P ( x ) proporciona el resultado agregado de la elección: si es positivo, más personas votaron por +1 que por −1; si es negativo, más personas votaron por −1 que por +1.
Una tabla que ilustra el protocolo de votación.
Ilustración del protocolo de votación. Cada columna representa los votos de un votante en particular. Cada fila representa los votos recibidos por una autoridad en particular.

Características

Este protocolo funciona siempre y cuando no todas las k autoridades sean corruptas; si lo fueran, podrían colaborar para reconstruir P ​​( x ) para cada votante y, posteriormente, alterar los votos.

El protocolo requiere que se completen t + 1 autoridades, por lo tanto, en caso de que haya N > t + 1 autoridades, Nt − 1 autoridades pueden ser corrompidas, lo que le da al protocolo un cierto grado de robustez.

El protocolo gestiona los documentos de identidad de los votantes (los documentos de identidad se presentaron junto con las papeletas) y, por lo tanto, puede verificar que solo hayan votado votantes legítimos.

Bajo las suposiciones sobre t :

  1. No es posible rastrear una papeleta de voto hasta el documento de identidad, por lo que se preserva la privacidad de los votantes.
  2. Un votante no puede demostrar cómo votó.
  3. Es imposible verificar un voto.

El protocolo impide implícitamente la manipulación de las papeletas. Esto se debe a que las autoridades no tienen ningún incentivo para alterar la papeleta, ya que cada una posee solo una parte y desconoce cómo afectará el resultado el cambio de dicha parte.

Vulnerabilidades

  • El votante no puede estar seguro de que su voto haya sido registrado correctamente.
  • Las autoridades no pueden estar seguras de que los votos fueron legales e iguales, por ejemplo, el votante puede elegir un valor que no sea una opción válida (es decir, que no esté en {−1, 1} ) como −20, 50, lo que inclinará los resultados a su favor.

Véase también

Referencias

  1. Schoenmakers, Berry (1999). "Un esquema simple de compartición de secretos verificable públicamente y su aplicación al voto electrónico". Avances en criptología — CRYPTO' 99. Notas de clase en ciencias de la computación. Vol.  1666. págs. 148–164 . CiteSeerX 10.1.1.102.9375 . doi : 10.1007/3-540-48405-1_10 . ISBN   978-3-540-66347-8.