stringtranslate.com

Computación multipartita segura

La computación multipartita segura (también conocida como computación segura , computación multipartita ( MPC ) o computación que preserva la privacidad ) es un subcampo de la criptografía con el objetivo de crear métodos para que las partes calculen conjuntamente una función sobre sus entradas manteniendo esas entradas. privado. A diferencia de las tareas criptográficas tradicionales, donde la criptografía garantiza la seguridad y la integridad de la comunicación o el almacenamiento y el adversario está fuera del sistema de los participantes (un espía del remitente y del receptor), la criptografía en este modelo protege la privacidad de los participantes entre sí.

La base para la computación multipartita segura comenzó a finales de la década de 1970 con el trabajo sobre el póquer mental , un trabajo criptográfico que simula tareas de juego/computación a distancia sin necesidad de un tercero de confianza. Tradicionalmente, la criptografía consistía en ocultar contenido, mientras que este nuevo tipo de cálculo y protocolo consiste en ocultar información parcial sobre los datos mientras se calcula con datos de muchas fuentes y se producen resultados correctamente. A finales de la década de 1980, Michael Ben-Or, Shafi Goldwasser y Avi Wigderson , e independientemente David Chaum , Claude Crépeau e Ivan Damgård , habían publicado artículos que mostraban "cómo calcular de forma segura cualquier función en la configuración de canales seguros". [1]

Historia

Los protocolos de propósito especial para tareas específicas comenzaron a finales de los años 1970. [2] Posteriormente, la computación segura se introdujo formalmente como computación segura bipartita (2PC) en 1982 (para el llamado Problema de los Millonarios , un problema específico que es un predicado booleano), y en general (para cualquier cálculo factible). en 1986 por Andrew Yao . [3] [4] El área también se conoce como Evaluación de funciones seguras (SFE). Al caso bipartidista le siguió una generalización al multipartidismo por parte de Oded Goldreich, Silvio Micali y Avi Wigderson. El cálculo se basa en el intercambio secreto de todas las entradas y pruebas de conocimiento cero para un caso potencialmente malicioso, donde la mayoría de los actores honestos en el caso del adversario malicioso aseguran que se detecta el mal comportamiento y el cálculo continúa con la persona deshonesta eliminada o su entrada revelada. Este trabajo sugirió el esquema general muy básico que deben seguir esencialmente todos los futuros protocolos multipartitos para la informática segura. [5] Este trabajo introdujo un enfoque, conocido como paradigma GMW, para compilar un protocolo de cálculo multipartito que sea seguro contra adversarios semihonestos en un protocolo que sea seguro contra adversarios maliciosos. A este trabajo le siguió el primer protocolo seguro y robusto que tolera amablemente el comportamiento defectuoso sin revelar los resultados de nadie, a través de un trabajo que inventó para este propósito la frecuentemente utilizada "idea de compartir acciones" [6] y un protocolo que permite a una de las partes ocultarse. su aportación incondicionalmente. [7] El paradigma GMW se consideró ineficiente durante años debido a los enormes gastos generales que supone para el protocolo base. Sin embargo, está demostrado que es posible conseguir protocolos eficientes [8] y hace que esta línea de investigación sea aún más interesante desde una perspectiva práctica. Los resultados anteriores se encuentran en un modelo en el que el adversario está limitado a cálculos de tiempo polinómico y observa todas las comunicaciones, por lo que el modelo se denomina "modelo computacional". Además, se demostró que el protocolo de transferencia ajena estaba completo para estas tareas. [9] Los resultados anteriores establecieron que es posible bajo las variaciones anteriores lograr un cálculo seguro cuando la mayoría de los usuarios son honestos.

La siguiente cuestión a resolver fue el caso de canales de comunicación seguros donde la comunicación punto a punto no está disponible para el adversario; en este caso se demostró que se pueden lograr soluciones cuando hasta 1/3 de las partes se portan mal y son maliciosas, y las soluciones no aplican herramientas criptográficas (ya que hay comunicación segura disponible). [10] [11] Agregar un canal de transmisión permite que el sistema tolere hasta la mitad de una minoría que se porta mal, [12] mientras que las limitaciones de conectividad en el gráfico de comunicación se investigaron en el libro Perfectly Secure Message Transmission. [13]

A lo largo de los años, la noción de protocolos multipartitos de propósito general se convirtió en un área fértil para investigar cuestiones básicas y generales de protocolos, como la componibilidad universal o el adversario móvil como en el intercambio proactivo de secretos . [14]

Desde finales de la década de 2000, y ciertamente desde 2010 en adelante, el dominio de los protocolos de propósito general se ha desplazado para abordar mejoras de eficiencia de los protocolos con aplicaciones prácticas en mente. Se han propuesto protocolos cada vez más eficientes para MPC, y ahora MPC puede considerarse como una solución práctica a varios problemas de la vida real (especialmente aquellos que solo requieren compartir linealmente los secretos y principalmente operaciones locales sobre las acciones sin muchas interacciones entre las partes). ), como votación distribuida, licitaciones y subastas privadas, uso compartido de funciones de firma o descifrado y recuperación de información privada . [15] La primera aplicación práctica y a gran escala de la computación multipartita fue la ejecución de una doble subasta electrónica en la subasta danesa de remolacha azucarera , que tuvo lugar en enero de 2008. [16] Obviamente, tanto las nociones teóricas como las investigaciones, y Se necesitan estructuras aplicadas (por ejemplo, las condiciones para trasladar MPC a parte del negocio diario se defendieron y presentaron en [17] ).

En 2020, varias empresas que trabajan con computación multipartita segura fundaron la alianza MPC con el objetivo de "acelerar el conocimiento, la aceptación y la adopción de la tecnología MPC".

Definición y descripción general

En un MPC, un número determinado de participantes, p 1 , p 2 , ..., p N , cada uno tiene datos privados , respectivamente d 1 , d 2 , ..., d N . Los participantes quieren calcular el valor de una función pública a partir de esos datos privados: F(d 1 , d 2 , ..., d N ) manteniendo sus propias entradas en secreto.

Por ejemplo, supongamos que tenemos tres partidos, Alice, Bob y Charlie, con las respectivas entradas x, y, z que indican sus salarios. Quieren saber cuál es el salario más alto de los tres, sin revelarse cuánto gana cada uno. Matemáticamente, esto se traduce en computación:

F(x, y, z) = máx(x, y, z)

Si hubiera alguna parte externa de confianza (digamos, tenían un amigo en común Tony que sabían que podía guardar un secreto), cada uno podría decirle su salario a Tony, él podría calcular el máximo y decirle ese número a todos. El objetivo de MPC es diseñar un protocolo en el que, al intercambiar mensajes sólo entre ellos, Alice, Bob y Charlie aún puedan aprender F(x, y, z) sin revelar quién hace qué y sin tener que depender de Tony. Al seguir su protocolo, no deberían aprender más de lo que aprenderían interactuando con un Tony incorruptible y perfectamente digno de confianza.

En particular, todo lo que las partes pueden aprender es lo que pueden aprender de los resultados y de sus propios aportes. Entonces, en el ejemplo anterior, si la salida es z , entonces Charlie aprende que su z es el valor máximo, mientras que Alice y Bob aprenden (si x , y y z son distintos), que su entrada no es igual al máximo, y que el máximo mantenido es igual a z . El escenario básico se puede generalizar fácilmente donde las partes tienen varias entradas y salidas, y la función genera diferentes valores para diferentes partes.

Hablando informalmente, las propiedades más básicas que un protocolo de cálculo multipartito pretende garantizar son:

Existe una amplia gama de aplicaciones prácticas, que van desde tareas simples como lanzar una moneda al aire hasta otras más complejas como subastas electrónicas (por ejemplo, calcular el precio de equilibrio del mercado), votación electrónica o extracción de datos para preservar la privacidad. Un ejemplo clásico es el problema de los millonarios: dos millonarios quieren saber quién es más rico, de tal manera que ninguno de los dos conoce el patrimonio neto del otro. Una solución a esta situación es esencialmente evaluar de forma segura la función de comparación.

Definiciones de seguridad

Un protocolo de cálculo multipartito debe ser seguro para ser eficaz. En la criptografía moderna, la seguridad de un protocolo está relacionada con una prueba de seguridad. La prueba de seguridad es una prueba matemática en la que la seguridad de un protocolo se reduce a la seguridad de sus primitivas subyacentes. Sin embargo, no siempre es posible formalizar la verificación de seguridad del protocolo criptográfico basándose en el conocimiento de las partes y la corrección del protocolo. Para los protocolos MPC, el entorno en el que opera el protocolo está asociado con el paradigma del mundo real/mundo ideal. [18] No se puede decir que las partes no aprenden nada, ya que necesitan aprender el resultado de la operación, y el resultado depende de las entradas. Además, la exactitud de la salida no está garantizada, ya que la exactitud de la salida depende de los aportes de las partes, y se debe suponer que los aportes son correctos.

El paradigma del mundo real/mundo ideal establece dos mundos: (i) En el modelo del mundo ideal, existe una parte confiable e incorruptible a quien cada participante del protocolo envía su información. Esta parte de confianza calcula la función por sí sola y envía el resultado apropiado a cada parte. (ii) Por el contrario, en el modelo del mundo real, no existe una parte confiable y lo único que las partes pueden hacer es intercambiar mensajes entre sí. Se dice que un protocolo es seguro si no se puede aprender más sobre las aportaciones privadas de cada parte en el mundo real de lo que se podría aprender en el mundo ideal. En el mundo ideal, no se intercambian mensajes entre las partes, por lo que los mensajes intercambiados en el mundo real no pueden revelar ninguna información secreta.

El paradigma del mundo real/mundo ideal proporciona una abstracción simple de las complejidades de MPC para permitir la construcción de una aplicación bajo el pretexto de que el protocolo MPC en su núcleo es en realidad una ejecución ideal. Si la aplicación es segura en el caso ideal, también lo será cuando se ejecute un protocolo real.

Los requisitos de seguridad de un protocolo MPC son estrictos. Sin embargo, en 1987 se demostró que cualquier función se puede calcular de forma segura, con seguridad para adversarios maliciosos [5] y los demás trabajos iniciales mencionados anteriormente. A pesar de estas publicaciones, MPC no fue diseñado para ser lo suficientemente eficiente como para usarse en la práctica en ese momento. El MPC incondicional o teóricamente seguro de la información está estrechamente relacionado y se basa en el problema del intercambio de secretos y, más específicamente, el intercambio de secretos verificable (VSS), que muchos protocolos MPC seguros utilizan contra adversarios activos.

A diferencia de las aplicaciones criptográficas tradicionales, como el cifrado o la firma, se debe asumir que el adversario en un protocolo MPC es uno de los actores involucrados en el sistema (o las partes internas que controlan). Esa parte o partes corruptas pueden confabularse para violar la seguridad del protocolo. Sea el número de partes en el protocolo y el número de partes que pueden ser adversarias. Los protocolos y soluciones para el caso de (es decir, cuando se supone una mayoría honesta) son diferentes de aquellos en los que no se hace tal supuesto. Este último caso incluye el caso importante del cálculo bipartito en el que uno de los participantes puede estar corrupto, y el caso general en el que un número ilimitado de participantes están corruptos y se confabulan para atacar a los participantes honestos.

Los adversarios que enfrentan los diferentes protocolos se pueden clasificar según su disposición a desviarse del protocolo. Básicamente, existen dos tipos de adversarios, cada uno de los cuales da lugar a diferentes formas de seguridad (y cada uno encaja en diferentes escenarios del mundo real):

La seguridad contra adversarios activos normalmente conduce a una reducción de la eficiencia. La seguridad encubierta [19] es una alternativa que pretende permitir una mayor eficiencia a cambio de debilitar la definición de seguridad; es aplicable a situaciones en las que los adversarios activos están dispuestos a hacer trampa, pero sólo si no son atrapados. Por ejemplo, su reputación podría verse dañada, impidiendo la colaboración futura con otras partes honestas. Por lo tanto, los protocolos que son encubiertamente seguros proporcionan mecanismos para garantizar que, si algunas de las partes no siguen las instrucciones, se notará con una alta probabilidad, digamos 75% o 90%. En cierto modo, los adversarios encubiertos son aquellos activos obligados a actuar pasivamente debido a preocupaciones externas no criptográficas (por ejemplo, comerciales). Este mecanismo tiende un puente entre ambos modelos con la esperanza de encontrar protocolos que sean lo suficientemente eficientes y seguros en la práctica.

Como muchos protocolos criptográficos , la seguridad de un protocolo MPC puede depender de diferentes suposiciones:

El conjunto de partes honestas que pueden ejecutar una tarea computacional está relacionado con el concepto de estructura de acceso . Las estructuras adversarias pueden ser estáticas, donde el adversario elige a sus víctimas antes del inicio del cómputo multipartito, o dinámicas, donde elige a sus víctimas durante el curso de la ejecución del cómputo multipartito, lo que dificulta la defensa. Una estructura de adversario puede definirse como una estructura de umbral o como una estructura más compleja. En una estructura de umbral, el adversario puede corromper o leer la memoria de varios participantes hasta cierto umbral. Mientras tanto, en una estructura compleja puede afectar a ciertos subconjuntos predefinidos de participantes, modelando diferentes posibles colusiones.

Protocolos

Existen diferencias importantes entre los protocolos propuestos para la computación bipartita (2PC) y la computación multipartita (MPC). Además, muchas veces para protocolos de propósito especial de importancia se debe diseñar un protocolo especializado que se desvíe de los genéricos (votación, subastas, pagos, etc.)

Computación bipartita

El escenario de dos partes es particularmente interesante, no sólo desde la perspectiva de las aplicaciones sino también porque en el escenario de dos partes se pueden aplicar técnicas especiales que no se aplican en el caso de múltiples partes. De hecho, la computación multipartita segura (de hecho, el caso restringido de evaluación de función segura, donde solo se evalúa una función) se presentó por primera vez en el entorno bipartito. A menudo se cita el trabajo original como perteneciente a uno de los dos artículos de Yao; [20] aunque los documentos en realidad no contienen lo que ahora se conoce como protocolo de circuito confuso de Yao .

El protocolo básico de Yao es seguro contra adversarios semi-honestos y es extremadamente eficiente en términos de número de rondas, que es constante e independiente de la función objetivo que se evalúa. La función se ve como un circuito booleano, con entradas en binario de longitud fija. Un circuito booleano es un conjunto de puertas conectadas con tres tipos diferentes de cables: cables de entrada del circuito, cables de salida del circuito y cables intermedios. Cada puerta recibe dos cables de entrada y tiene un único cable de salida que puede desplegarse (es decir, pasar a varias puertas en el siguiente nivel). La evaluación simple del circuito se realiza evaluando cada puerta por turno; asumiendo que las puertas han sido ordenadas topológicamente. La puerta se representa como una tabla de verdad tal que para cada posible par de bits (los que provienen de la puerta de los cables de entrada) la tabla asigna un bit de salida único; que es el valor del cable de salida de la puerta. Los resultados de la evaluación son los bits obtenidos en los cables de salida del circuito.

Yao explicó cómo distorsionar un circuito (ocultar su estructura) para que dos partes, el remitente y el receptor, puedan conocer la salida del circuito y nada más. En un nivel alto, el emisor prepara el circuito confuso y lo envía al receptor, quien, sin darse cuenta, evalúa el circuito y aprende las codificaciones correspondientes tanto a su salida como a la del emisor. Luego simplemente devuelve las codificaciones del remitente, permitiéndole calcular su parte de la salida. El remitente envía el mapeo de las codificaciones de salida del receptor a bits al receptor, lo que le permite obtener su salida.

Con más detalle, el circuito confuso se calcula de la siguiente manera. El ingrediente principal es un esquema de cifrado simétrico de doble clave. Dada una puerta del circuito, cada valor posible de sus cables de entrada (ya sea 0 o 1) se codifica con un número aleatorio (etiqueta). Los valores resultantes de la evaluación de la puerta en cada uno de los cuatro posibles pares de bits de entrada también se reemplazan con etiquetas aleatorias. La tabla de verdad confusa de la puerta consiste en cifrados de cada etiqueta de salida utilizando sus etiquetas de entrada como claves. La posición de estos cuatro cifrados en la tabla de verdad es aleatoria, por lo que no se filtra información sobre la puerta.

Para evaluar correctamente cada puerta confusa, el esquema de cifrado tiene las dos propiedades siguientes. En primer lugar, los rangos de la función de cifrado bajo dos claves distintas son disjuntos (con una probabilidad abrumadora). La segunda propiedad dice que se puede verificar de manera eficiente si un texto cifrado determinado se ha cifrado con una clave determinada. Con estas dos propiedades, el receptor, después de obtener las etiquetas para todos los cables de entrada del circuito, puede evaluar cada puerta averiguando primero cuál de los cuatro textos cifrados ha sido cifrado con sus claves de etiquetas y luego descifrando para obtener la etiqueta del cable de salida. . Esto se hace sin darse cuenta, ya que todo lo que el receptor aprende durante la evaluación son codificaciones de bits.

Los bits de entrada del remitente (es decir, los creadores de circuitos) pueden enviarse simplemente como codificaciones al evaluador; mientras que las codificaciones del receptor (es decir, los evaluadores de circuitos) correspondientes a sus bits de entrada se obtienen mediante un protocolo de transferencia ajena (OT) 1 de 2. Un protocolo OT 1 de 2 permite al remitente que posee dos valores C1 y C2 enviar el solicitado por el receptor (valor ba en {1,2}) de tal manera que el remitente no sabe qué valor se ha transferido y el receptor sólo aprende el valor consultado.

Si se consideran adversarios maliciosos, es necesario proporcionar mecanismos adicionales para garantizar el comportamiento correcto de ambas partes. Por construcción, es fácil mostrar seguridad al remitente si el protocolo OT ya es seguro contra un adversario malicioso, ya que todo lo que el receptor puede hacer es evaluar un circuito confuso que no alcanzaría los cables de salida del circuito si se desviara de las instrucciones. . La situación es muy diferente por parte del remitente. Por ejemplo, puede enviar un circuito confuso incorrecto que calcula una función que revela la entrada del receptor. Esto significaría que la privacidad ya no se mantiene, pero como el circuito está distorsionado, el receptor no podría detectarlo. Sin embargo, es posible aplicar de manera eficiente pruebas de conocimiento cero para hacer que este protocolo sea seguro contra adversarios maliciosos con una pequeña sobrecarga en comparación con el protocolo semihonesto. [8]

Protocolos multipartidistas

La mayoría de los protocolos MPC, a diferencia de los protocolos 2PC y especialmente bajo la configuración incondicional de canales privados, utilizan el intercambio secreto. En los métodos basados ​​en el intercambio secreto, las partes no desempeñan roles especiales (como en Yao, de creador y evaluador). En cambio, los datos asociados con cada cable se comparten entre las partes y luego se utiliza un protocolo para evaluar cada puerta. La función ahora se define como un "circuito" sobre un campo finito, a diferencia de los circuitos binarios utilizados para Yao. Un circuito de este tipo se denomina circuito aritmético en la literatura y consta de "puertas" de suma y multiplicación donde los valores operados se definen en un campo finito.

El intercambio de secretos permite distribuir un secreto entre varias partes mediante la distribución de acciones a cada parte. Normalmente se utilizan dos tipos de esquemas para compartir secretos; Compartir secretos de Shamir y compartir secretos aditivos. En ambos casos las participaciones son elementos aleatorios de un campo finito que se suman al secreto del campo; intuitivamente, la seguridad se logra porque cualquier conjunto de acciones que no califican parece estar distribuido aleatoriamente.

Los esquemas de intercambio secreto pueden tolerar que un adversario controle hasta t partidos de un total de n partidos, donde t varía según el esquema, el adversario puede ser pasivo o activo y se hacen diferentes suposiciones sobre el poder del adversario. El esquema de intercambio de secretos de Shamir es seguro contra un adversario pasivo cuando y un adversario activo cuando logra seguridad teórica de la información, lo que significa que incluso si el adversario tiene un poder computacional ilimitado, no puede aprender ninguna información sobre el secreto subyacente a una acción. El protocolo BGW, [21] que define cómo calcular la suma y la multiplicación en partes secretas, se utiliza a menudo para calcular funciones con partes secretas de Shamir. Los esquemas adicionales para compartir secretos pueden tolerar que el adversario controle a todas las partes menos una, es decir , manteniendo al mismo tiempo la seguridad contra un adversario pasivo y activo con un poder computacional ilimitado. Algunos protocolos requieren una fase de configuración, que puede que sólo sea segura contra un adversario limitado computacionalmente.

Varios sistemas han implementado diversas formas de MPC con esquemas de intercambio de secretos. El más popular es SPDZ, [22] que implementa MPC con recursos compartidos secretos aditivos y es seguro contra adversarios activos.

Otros protocolos

En 2014, se describió para la red Bitcoin o para la lotería justa un "modelo de equidad en el cálculo seguro en el que una parte adversaria que aborta al recibir el resultado se ve obligada a pagar una multa monetaria mutuamente predefinida", y se implementó con éxito en Ethereum . [23] [24]

Sistemas MPC prácticos

En los últimos años se han realizado muchos avances en los sistemas 2PC y MPC.

Protocolos basados ​​en Yao

Uno de los principales problemas al trabajar con protocolos basados ​​en Yao es que la función que se va a evaluar de forma segura (que podría ser un programa arbitrario) debe representarse como un circuito, que generalmente consta de puertas XOR y AND. Dado que la mayoría de los programas del mundo real contienen bucles y estructuras de datos complejas, esta es una tarea nada trivial. El sistema Fairplay [25] fue la primera herramienta diseñada para abordar este problema. El juego limpio comprende dos componentes principales. El primero de ellos es un compilador que permite a los usuarios escribir programas en un lenguaje simple de alto nivel y generar estos programas en una representación de circuito booleano. Luego, el segundo componente puede alterar el circuito y ejecutar un protocolo para evaluar de forma segura el circuito confuso. Además del cálculo bipartito basado en el protocolo de Yao, Fairplay también puede realizar protocolos multipartitos. Esto se hace utilizando el protocolo BMR, [25] que extiende el protocolo pasivamente seguro de Yao al caso activo.

En los años posteriores a la introducción de Fairplay, se crearon muchas mejoras en el protocolo básico de Yao, tanto en forma de mejoras de eficiencia como de técnicas de seguridad activa. Estas incluyen técnicas como el método XOR gratuito, que permite una evaluación mucho más simple de las puertas XOR, y la reducción de filas confusas, que reduce el tamaño de las tablas confusas con dos entradas en un 25%. [26]

El enfoque que hasta ahora parece ser el más fructífero para obtener seguridad activa proviene de una combinación de la técnica de confusión y el paradigma de "cortar y elegir". Esta combinación parece hacer que las construcciones sean más eficientes. Para evitar los problemas antes mencionados con respecto al comportamiento deshonesto, el constructor envía muchas alteraciones del mismo circuito al evaluador. Luego, aproximadamente la mitad de ellos (según el protocolo específico) se abren para comprobar la coherencia y, de ser así, la gran mayoría de los que no están abiertos son correctos con una alta probabilidad. El resultado es el voto mayoritario de todas las evaluaciones. Aquí se necesita la producción mayoritaria. Si hay desacuerdo en las salidas, el receptor sabe que el emisor está haciendo trampa, pero no puede quejarse porque, de lo contrario, se filtraría información sobre sus entradas.

Este enfoque de seguridad activa fue iniciado por Lindell y Pinkas. [27] Esta técnica fue implementada por Pinkas et al. en 2009, [26] Esto proporcionó la primera evaluación bipartita activamente segura del circuito del Estándar de cifrado avanzado (AES), considerado como una función altamente compleja (que consta de alrededor de 30.000 puertas AND y XOR), no trivial (también con algunas posibles aplicaciones), tardando unos 20 minutos en calcularse y requiriendo 160 circuitos para obtener una probabilidad de trampa.

A medida que se evalúan muchos circuitos, las partes (incluido el receptor) deben comprometerse con sus entradas para garantizar que en todas las iteraciones se utilicen los mismos valores. Los experimentos de Pinkas et al. Los resultados publicados [26] muestran que el cuello de botella del protocolo reside en las comprobaciones de coherencia. Tuvieron que enviar por la red unos 6.553.600 compromisos de diversos valores para evaluar el circuito AES. En resultados recientes [28], la eficiencia de las implementaciones basadas en Yao activamente seguras mejoró aún más, requiriendo solo 40 circuitos y un número mucho menor de compromisos para obtener probabilidad de trampa. Las mejoras provienen de nuevas metodologías para realizar corte y elección en los circuitos transmitidos.

Más recientemente, se ha centrado la atención en implementaciones altamente paralelas basadas en circuitos confusos, diseñados para ejecutarse en CPU con muchos núcleos. Kreuter, et al. [29] describen una implementación que se ejecuta en 512 núcleos de una potente computadora en clúster. Utilizando estos recursos pudieron evaluar la función de distancia de edición de 4095 bits , cuyo circuito comprende casi 6 mil millones de puertas. Para lograr esto, desarrollaron un compilador de circuitos personalizado y mejor optimizado que Fairplay y varias optimizaciones nuevas, como la canalización, mediante la cual la transmisión del circuito confuso a través de la red comienza mientras el resto del circuito aún se está generando. El tiempo para calcular AES se redujo a 1,4 segundos por bloque en el caso activo, usando una máquina de clúster de 512 nodos, y a 115 segundos usando un nodo. Shelat y Shen [30] mejoran esto, utilizando hardware básico, a 0,52 segundos por bloque. El mismo artículo informa sobre un rendimiento de 21 bloques por segundo, pero con una latencia de 48 segundos por bloque.

Mientras tanto, otro grupo de investigadores ha investigado el uso de GPU de consumo para lograr niveles similares de paralelismo. [31] Utilizan extensiones de transferencia ajenas y algunas otras técnicas novedosas para diseñar su protocolo específico de GPU. Este enfoque parece lograr una eficiencia comparable a la implementación de la computación en clúster, utilizando una cantidad similar de núcleos. Sin embargo, los autores sólo informan sobre una implementación del circuito AES, que tiene alrededor de 50.000 puertas. Por otro lado, el hardware necesario aquí es mucho más accesible, ya que es posible que ya se encuentren dispositivos similares en los ordenadores de sobremesa o en las consolas de juegos de muchas personas. Los autores obtienen un tiempo de 2,7 segundos por bloque AES en un escritorio estándar, con una GPU estándar. Si permiten que la seguridad disminuya a algo parecido a la seguridad encubierta, obtienen un tiempo de ejecución de 0,30 segundos por bloque AES. En el caso de la seguridad pasiva, hay informes de procesamiento de circuitos con 250 millones de puertas, y a una velocidad de 75 millones de puertas por segundo. [32]

Implementaciones de análisis de datos computacionales seguros entre múltiples partes.

Una de las principales aplicaciones de la computación segura entre múltiples partes es permitir el análisis de datos en poder de varias partes, o el análisis ciego de datos por parte de terceros sin permitir que el custodio de datos comprenda el tipo de análisis de datos que se realiza.

Sistemas de demostración y producción.

Bibliotecas de software

Implementaciones de hardware

Ver también

Referencias

  1. ^ Ran Canetti, et al., "Adaptively Secure Multiparty", grupos TOC/CIS, LCS, MIT (1996), p. 1.
  2. ^ A. Shamir, R. Rivest y L. Adleman, "Mental Poker", Informe técnico LCS/TR-125, Instituto de Tecnología de Massachusetts, abril de 1979.
  3. ^ Andrew C. Yao, Protocolos para cálculos seguros (resumen ampliado)
  4. ^ Andrew Chi-Chih Yao: Cómo generar e intercambiar secretos (resumen ampliado). FOCS 1986: 162-167 [1]
  5. ^ ab Oded Goldreich, Silvio Micali, Avi Wigderson: Cómo jugar cualquier juego mental o un teorema de completitud para protocolos con mayoría honesta. STOC 1987: 218-229 [2]
  6. ^ Zvi Galil , Stuart Haber, Moti Yung: Computación criptográfica: protocolos seguros tolerantes a fallas y el modelo de clave pública. CRIPTO 1987: 135-155 [3]
  7. ^ David Chaum , Ivan Damgård , Jeroen van de Graaf: Cálculos multipartitos que garantizan la privacidad de las aportaciones de cada parte y la exactitud del resultado. 87-119 [4]
  8. ^ ab Abascal, Jackson; Faghihi Sereshgi, Mohammad Hossein; Hazay, Carmit; Ishai, Yuval; Venkitasubramaniam, Muthuramakrishnan (30 de octubre de 2020). "¿Es práctico el paradigma clásico de GMW? El caso de 2PC no interactivo y activamente seguro". Actas de la Conferencia ACM SIGSAC 2020 sobre seguridad informática y de las comunicaciones . CCS'20. Evento virtual, EE.UU.: Asociación de Maquinaria de Computación. págs. 1591-1605. doi :10.1145/3372297.3423366. ISBN 978-1-4503-7089-9. S2CID  226228208.
  9. ^ Joe Kilian: Fundación de la criptografía en transferencias ajenas. STOC 1988: 20-31 [5]
  10. ^ D. Chaum, C. Crepeau y I. Damgard. "Protocolos multipartidistas incondicionalmente seguros". Estoc 1988 .
  11. ^ Michael Ben-Or, Shafi Goldwasser, Avi Wigderson: Teoremas de completitud para la computación distribuida no criptográfica tolerante a fallas (resumen ampliado). STOC 1988: 1-10
  12. ^ Tal Rabin , Michael Ben-Or: Intercambio de secretos verificables y protocolos multipartidistas con mayoría honesta (resumen ampliado). STOC 1989: 73-85 [6]
  13. ^ Danny Dolev, Cynthia Dwork, Orli Waarts, Moti Yung: Transmisión de mensajes perfectamente segura. J. ACM 40(1): 17-47 (1993)[7]
  14. ^ Rafail Ostrovsky, Moti Yung: Cómo resistir los ataques de virus móviles. PODC 1991. págs. 51-59 [8]
  15. ^ Claudio Orlandi: ¿Es la computación multipartita buena en la práctica?, ICASSP 2011
  16. ^ Peter Bogetoft , Dan Lund Christensen, Ivan Damgård, Martin Geisler, Thomas Jakobsen, Mikkel Krøigaard, Janus Dam Nielsen, Jesper Buus Nielsen, Kurt Nielse, Jakob Pagter, Michael Schwartzbach y Tomas Toft (2008). "La computación multipartita se pone en marcha". Archivo ePrint de criptología (Informe 2008/068).{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  17. ^ Moti Yung: Del póquer mental al negocio principal: ¿por qué y cómo implementar protocolos informáticos seguros? Conferencia ACM sobre seguridad informática y de las comunicaciones 2015: 1-2 https://dl.acm.org/citation.cfm?doid=2810103.2812701
  18. ^ Michael Backes, Birgit Pfitzmann y Michael Waidner. "Un teorema de composición general para sistemas reactivos seguros". En Conferencia de Teoría de la Criptografía, págs. 336-354. Springer, Berlín, Heidelberg, 2004.
  19. ^ Y. Aumann y Y. Lindell. "Seguridad contra adversarios encubiertos". TCC 2007 .
  20. ^ Andrew C. Yao, "Cómo generar e intercambiar secretos", Actas SFCS '86 del 27º Simposio anual sobre fundamentos de la informática, págs. 162-167, 1986.
  21. ^ Ben-Or, Michael; Goldwasser, Shafi; Wigderson, Avi (1 de enero de 1988). "Teoremas de integridad para la computación distribuida tolerante a fallas no criptográficas". Actas del vigésimo simposio anual de ACM sobre teoría de la informática - STOC '88 . ACM. págs. 1–10. doi :10.1145/62212.62213. ISBN 978-0897912648. S2CID  207554159.
  22. ^ I. Damgård, V. Pastro, N. Smart y S. Zakarias, "Computación multipartita a partir de un cifrado algo homomórfico", Crypto 2012, vol. Springer LNCS 7417, págs. 643-662, 2012.
  23. ^ Iddo Bentov, Ranjit Kumaresan (2014). "Cómo utilizar Bitcoin para diseñar protocolos justos" (PDF) . Criptología e Print (129): 1–38 . Consultado el 9 de octubre de 2014 .
  24. ^ Mikhail Kalinin, Danny Ryan, Vitalik Buterin (2021). "EIP-3675: actualizar el consenso a prueba de participación". Propuestas de mejora de Ethereum . Consultado el 16 de octubre de 2023 .{{cite journal}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  25. ^ ab A. Ben-David, N. Nisan y B. Pinkas, "FairplayMP: un sistema para la computación multipartita segura", ACM CCS 2008, págs. 257–266, 2008.
  26. ^ abc B. Pinkas, T. Schneider, N. Smart y S. Williams, "La computación bipartita segura es práctica", Asiacrypt 2009, vol. Springer LNCS 5912, págs. 250–267, 2009.
  27. ^ Y. Lindell y B. Pinkas, "Un protocolo eficiente para la computación bipartita segura en presencia de adversarios maliciosos", Eurocrypt 2007, vol. Springer LNCS 4515, págs. 52-78, 2007.
  28. ^ Y. Lindell, "Protocolos rápidos basados ​​en cortar y elegir para adversarios maliciosos y encubiertos", Crypto 2013, vol. Springer LNCS 8043, págs. 1-17, 2013.
  29. ^ B. Kreuter, a. shalet y C.-H. Shen, "Cómputo seguro de mil millones de puertas con adversarios maliciosos", Simposio de seguridad USENIX 2012, págs. 285–300, 2012.
  30. ^ A. Shelat y C.-H. Shen, "Cálculo rápido y seguro entre dos partes con suposiciones mínimas", ACM CCS 2013, págs. 523–534, 2013.
  31. ^ T. Frederiksen y J. Nielsen, "Cómputo bipartito rápido y maliciosamente seguro utilizando la GPU", ACNS 2013, vol. Springer LNCS 7954, págs. 339–356, 2013.
  32. ^ Y. Huang, J. Katz y D. Evans, "Cómputo bipartito seguro y eficiente mediante corte y elección simétrico", CRYPTO, vol. Springer LNCS 8043, págs. 18-35, 2013.
  33. ^ "Informe del Consejo de la Fuerza Laboral de Mujeres de Boston" (PDF) . Consejo de la Fuerza Laboral de Mujeres de Boston. Enero de 2017 . Consultado el 14 de febrero de 2024 .
  34. ^ "BPC se asocia con el condado de Allegheny en un nuevo proyecto de datos para preservar la privacidad | Centro de políticas bipartidista".
  35. ^ Hart, NR; Arquero, DW; Dalton, E. (marzo de 2019). "Intercambio de datos preservando la privacidad para decisiones políticas basadas en evidencia" (PDF) . Centro de políticas bipartidistas . Consultado el 14 de febrero de 2024 .
  36. ^ Informe técnico de Galois 2018
  37. ^ "Ruta Cincuenta". 25 de agosto de 2023.
  38. ^ "SCAPI: la biblioteca API de computación segura | BIU Cyber ​​Center".
  39. ^ https://palisade-crypto.org/
  40. ^ https://mp-spdz.readthedocs.io

Otras lecturas

enlaces externos