Las combinaciones lineales aleatorias son un truco común en los algoritmos de pruebas de conocimiento cero para permitir que comprobaciones de igualdad se verifiquen probabilísticamente con una única comprobación de igualdad. Supongamos que tenemos productos internos que intentamos demostrar. En lugar de crear pruebas, creamos una combinación lineal aleatoria de las igualdades y demostramos eso.
Igualdad de los compromisos de Pedersen
Primero, consideremos cómo podríamos demostrar la igualdad de múltiples compromisos de Pedersen.
Si tenemos puntos de curva elíptica y con logaritmos discretos desconocidos, y términos de cegamiento y , podemos construir compromisos de Pedersen y donde
El verificador puede comprobar si si el probador proporciona la diferencia en los términos de cegamiento. El verificador no puede simplemente comprobar porque, por lo general, los términos de cegamiento no serán iguales entre sí, es decir, .
Si el probador desea convencer al verificador de que y están comprometidos en y respectivamente, pero sin revelar y , el probador puede calcular
Y entregar al verificador. El verificador calcula
Internamente, esto se expande a
Todos los términos de cegamiento se cancelarán dejando .
Pero supongamos que el probador desea establecer la igualdad para varios compromisos, es decir, . La solución ingenua es enviar términos de cegamiento y el verificador ejecutará comprobaciones de igualdad. Esto requerirá enviar elementos del campo () y el algoritmo del verificador se ejecutará en un tiempo de .
Por qué el probador no puede simplemente sumar todos los compromisos
Supongamos que tenemos con compromisos respectivamente. Supongamos también que el probador quiere demostrar que y sin revelarlos.
La siguiente comprobación no es segura:
donde es la diferencia en los términos de cegamiento. Como contraejemplo, consideremos el caso donde . Las sumas están equilibradas, pero la afirmación original es incorrecta.
Combinaciones lineales aleatorias
Sin embargo, si se requiere que el probador demuestre que
para un valor aleatorio que no pueden predecir, entonces el esquema es seguro.
Específicamente, el probador y el verificador ejecutan el siguiente algoritmo:
Prueba de igualdad aleatorizada
Configuración
El probador y el verificador acuerdan los puntos de curva elíptica y , donde los logaritmos discretos son desconocidos.
El probador envía los compromisos
El probador genera los términos de cegamiento y crea los compromisos de Pedersen
y envía al verificador.
El verificador elige un aleatorio
El verificador elige un elemento aleatorio del campo y lo envía al probador.
El probador calcula la diferencia en los términos de cegamiento
El probador calcula y envía al verificador.
Comprobación de verificación final
El verificador comprueba que
Análisis de seguridad
Si y , entonces la ecuación estará equilibrada independientemente de la elección de , asumiendo que el probador calculó correctamente.
Ahora supongamos que o . El probador aún no podrá producir un válido porque hacerlo requeriría resolver los logaritmos discretos de y .
Generalizando a comprobaciones
Si tenemos comprobaciones de igualdad, , el verificador podría enviar elementos aleatorios y el probador podría proporcionar tal que
Sin embargo, esto requiere que el verificador envíe elementos, lo que conduce a una sobrecarga de comunicación lineal. La sobrecarga de comunicación se puede reducir a una constante si el verificador solo envía y el probador y el verificador separan los compromisos mediante potencias sucesivas de :
Análisis de seguridad
El lado izquierdo y el lado derecho son ambos polinomios de grado . Si no son iguales entre sí, entonces se intersectan en un máximo de puntos por el Schwartz Zippel Lemma. Si donde es el orden del campo finito, entonces nuevamente la probabilidad de que sea un punto de intersección es insignificante.
Combinaciones lineales aleatorias de productos internos
Podemos generalizar la técnica anterior para combinar múltiples productos internos.
Supongamos que tenemos dos productos internos
y
Debido a que los dos productos internos comparten un término común, es algebraicamente posible combinarlos de la siguiente manera:
Sin embargo, esto no es seguro desde una perspectiva de solidez porque es posible que y pero .
Como es de esperar, podemos resolver esto utilizando una combinación lineal aleatoria.
Solo necesitamos crear una prueba de producto interno para un único producto interno en lugar de dos. Es crucial que el probador reciba después de haber enviado los compromisos relevantes, pero dejamos los detalles exactos para el próximo capítulo cuando veamos un ejemplo de un algoritmo que utiliza esta técnica: las pruebas de rango.
Este tutorial es parte de una serie sobre ZK Bulletproofs.