El intercambio de secretos verificables ( VSS ) es un esquema de intercambio de secretos que permite a los miembros del grupo verificar que sus compartidos son consistentes (en inglés consistente ) [1] , es decir, que recrean el mismo secreto . En otras palabras, este esquema garantiza la existencia de un secreto que los participantes pueden recuperar más tarde, incluso si la distribución se cambió deliberadamente. (El esquema habitual supone que la asignación se realiza correctamente). El concepto de compartir secretos verificables fue introducido por primera vez por Benny Chor, Shafi Goldwasser , Silvio Micali y Baruch Averbuch en 1985 [2] .
Un miembro del grupo que comparte un secreto se denomina distribuidor en el protocolo VSS [ 3 ] . El protocolo se divide en dos etapas: separación y recuperación.
Dividir: Inicialmente, cada participante tiene entradas aleatorias independientes. El distribuidor utiliza un secreto como entrada. La separación consta de varias etapas. En cada etapa, cualquier miembro puede enviar mensajes privados a otros o enviar mensajes públicamente a todos. Cada mensaje de este tipo está determinado por los datos de entrada y los mensajes recibidos previamente.
Recuperación: En esta etapa, cada participante aporta la información obtenida durante la etapa de separación. A continuación, se aplica la función de recuperación y su resultado se utiliza como salida del protocolo.
En la informática multipartita segura, la entrada se divide en fracciones secretas, que se utilizan para calcular alguna función. Hay actores maliciosos que corrompen los datos y se desvían del protocolo. VSS [4] se utiliza para evitar su influencia .
El protocolo de Paul Feldman se basa en el esquema de intercambio secreto de Shamir combinado con cualquier esquema de cifrado homomórfico . Considere el circuito de umbral ( t , n ). Los cálculos se realizan con elementos del grupo cíclico G de orden p con generador g . El grupo G se elige porque la obtención del valor del logaritmo discreto en este grupo tiene una alta complejidad computacional. Luego, el repartidor establece (y mantiene en secreto) un polinomio P de grado t − 1 con coeficientes de Z p , incl. P (0)= s , donde s es el secreto. Cada uno de los n participantes recibirá el valor P (1), …, P ( n ) módulo p [5] .
Todo lo anterior es una implementación del intercambio secreto de Shamir. Para que este esquema sea verificable, el distribuidor envía valores de prueba a los coeficientes P . Si P ( x ) = s + a 1 x + ... + a t − 1 x t − 1 , entonces los valores son:
Además, el repartidor envía la enmienda z i = g y i , donde y i = P ( i ) , al i -ésimo participante. Una vez hecho esto, cualquier miembro puede verificar la consistencia de su parte verificando la siguiente igualdad:
Después de asegurarse, el participante informa al respecto. Como resultado, todos saben que todas las partes corresponden a un polinomio y, por lo tanto, son conjuntas [6] .
El esquema de Benalo es también un desarrollo del esquema de Shamir . Una vez que se han repartido n acciones entre los participantes, cada uno de ellos debe poder verificar que todas las acciones son t - consistentes , es decir , cualquier subgrupo de t participantes de n recupera el mismo secreto [1] . En el esquema de Shamir, las partes s 1 , s 2 , …, s n son t - conjuntas si y solo si el grado del polinomio de interpolación construido a partir de los puntos (1, s 1 ), (2, s 2 ), …, (n, s n ) no excede d = t − 1 [7] . Además, si el grado de la suma de dos polinomios F y G es menor o igual que t , entonces ambos grados de los polinomios F y G son menores o iguales que t , o ambos son mayores que t . Esto se sigue de la propiedad homomórfica de la función polinomial.
Ejemplos:
La propiedad del esquema de Shamir descrita anteriormente impone una restricción en el grado del polinomio de interpolación cuando se confirma la consistencia t . Basado en esto y en la propiedad homomórfica de los polinomios, el esquema de Benalo permite a los participantes realizar la verificación requerida mientras confirman la consistencia de sus acciones [8] [7] .
La consistencia se puede verificar usando el siguiente algoritmo:
Si el comerciante sigue honestamente este algoritmo, entonces los grados de los polinomios y los grados de los polinomios de interpolación recuperados de sus partes corresponden al grado t − 1 del polinomio secreto P por la propiedad homomórfica. Por lo tanto, conociendo las acciones y , cualquier participante puede estar convencido de la t -compatibilidad por la propiedad del esquema Shamir. Además, la distribución de polinomios aleatorios no conduce a la revelación del secreto [9] .
VSS es aplicable para elecciones secretas [10] . Cada votante puede votar a favor (1) o en contra (0), y la suma de todos los votos determina el resultado de la votación. Debe asegurarse de que se cumplan las siguientes condiciones:
Al usar VSS, un observador reemplazará n contadores de votos. Cada votante distribuirá partes de su secreto entre todos los n contadores. En este caso, se preserva la privacidad de los votantes y se cumple la primera condición. Para restaurar el resultado de la elección, es necesario tener suficientes k<n contadores para restaurar el polinomio P . Para validar los votos, cada votante puede aplicar la verificación de consistencia de distribución descrita en la sección anterior [11] .
La complejidad del protocolo VSS se define como la cantidad de etapas de intercambio de mensajes en la etapa dividida, es decir, la cantidad de acciones secretas enviadas por el distribuidor, valores de verificación (en el esquema de Feldman), polinomios aleatorios, etc. La recuperación siempre se puede realizar en un solo paso. Esto se puede lograr con la ayuda de la transmisión simultánea (emisión simultánea en inglés ) [12] . Por lo tanto, no hay VSS de 1 etapa con t>1 , independientemente del número de participantes. Además, se dice que un protocolo VSS es eficiente si tiene una complejidad polinomial que depende de n . Condiciones para un protocolo VSS efectivo [13] [14] :
Número de etapas | Opciones |
---|---|
una | t = 1, n > 4 |
2 | n > 4t |
3 | n > 3t |