Cálculo seguro de varias partes del número de 1s veces el número de 0s en una cadena compartida

8

Supongamos que hay partes p j , cada una con un bit b j{ 0 , 1 } . Quiero calcular la multiplicación del número de unidades por ceros, es decir, R = ( b j ) × ( N - b j ) .N>2pjbj{0,1}R=(bj)×(Nbj)

El cálculo debe ser segura en el sentido de que ninguna de las partes puede aprender más que el resultado final . Por ejemplo, no está bien realizar una suma segura, porque entonces se conocerá b j , y la suma es sensible en mi problema. Entonces, ¿hay algún protocolo de cómputo seguro existente que se ajuste a la demanda?Rbj

Editar: El número en el problema es grande, al menos más de 1000 . Por lo tanto, se necesita un cálculo eficiente y seguro de múltiples partes Un protocolo de suma segura podría ser eficiente, pero los SMC genéricos, como los circuitos booleanos, pueden ser demasiado intensivos en computación. Entonces necesito un protocolo eficiente.norte1000

Ricardo
fuente
44
¿conoce los resultados generales de viabilidad para el cómputo seguro de múltiples partes, así como el trabajo reciente sobre cifrado totalmente homomórfico? porque ambos resuelven tu problema.
Sasho Nikolov
1
Tal vez debería ser una respuesta, @SashoNikolov
Suresh Venkat
2
@Suresh pensé que le daría la oportunidad de aclarar restricciones adicionales, porque si él sabe sobre la suma segura podría decirse sobre los resultados de factibilidad.
Sasho Nikolov
3
¿Es el problema equivalente a calcular de forma segura min {∑b_j, N-∑b_j}? Si es así, el enfoque en la multiplicación me parece solo una distracción.
Tsuyoshi Ito
2
@TsuyoshiIto es equivalente
Sasho Nikolov

Respuestas:

2

Esta respuesta trata sobre soluciones viables basadas en cifrado homomórfico que NO es totalmente homomórfico, ya que este último puede ser extremadamente ineficiente (si hay criptosistemas completamente homomórficos eficientes que sean comparables con los que se proporcionan a continuación en términos de eficiencia, me alegraría escuchar sobre ellos).

Como solo necesita una multiplicación, existen soluciones que son potencialmente menos costosas que el cifrado totalmente homomórfico: [1] y [2]. El último funciona en descomposiciones de bits cifradas de la entrada, por lo que necesitará un protocolo de descomposición de bits como [3] y [6], pero el primero funciona en valores enteros. Solo para completar, el primero se ha extendido a -operand multiplicación en [4], a pesar de que el OP puede no necesitar esto. Estas soluciones no son interactivas y deberían funcionar en el caso de dos partes.d

Si tiene más de dos partes y puede permitirse un poco de interacción, entonces [5] proporciona una "puerta de multiplicación segura" que es potencialmente más eficiente y permite un número ilimitado de multiplicaciones. Funciona básicamente mediante la conversión de los valores cifrados homomórficamente en algún tipo de intercambio secreto, multiplica el resultado (de forma interactiva) y luego lo convierte nuevamente en cifrado homomórfico.

[1] Evaluación de fórmulas de 2-DNF en textos cifrados

[2] Criptocomputación no interactiva para NC1

[3] Computación multipartida de rondas constantes incondicionalmente segura para igualdad, comparación, bits y exponenciación

[4] Encriptación aditivamente homomórfica con multiplicaciones de d-operando

[5] Cálculo multiparte a partir del cifrado homomórfico umbral

[6] Conversión binaria eficiente para valores cifrados más completos

Mohammad Alaggan
fuente
44
Para ser honesto, no veo la conexión de esta respuesta a la pregunta.
Tsuyoshi Ito
@TsuyoshiIto: esta respuesta enumera algunas referencias que podrían usarse para proporcionar "cálculo seguro para la multiplicación", y están especialmente diseñadas para la fórmula que proporcionó el OP, que incluye solo una multiplicación. También enumera métodos relativamente 'eficientes' según la solicitud del OP. De hecho, no veo tu objeción en absoluto.
Mohammad Alaggan
44
Como escribí en un comentario a la pregunta, la multiplicación no es esencial en la pregunta. El título de la pregunta es simplemente incorrecto.
Tsuyoshi Ito
1
Entonces el título debe ser modificado. De lo contrario, tal vez alguien llegue más tarde a esta pregunta esperando encontrar algo similar a mi respuesta.
Mohammad Alaggan
2

Nueva respuesta (10/24): Creo que el siguiente documento proporciona una solución elegante y eficiente a su problema:

Muestran cómo construir un algoritmo de cifrado de clave pública con las siguientes dos propiedades útiles:E()

  • Aditivamente homomórfico. Dado y E ( y ) , cualquiera puede calcular E (E(x)E(y) .E(x+y)

  • Se puede multiplicar (una vez). Dados y E ( y ) (ninguno de los cuales se generó como resultado de una operación de multiplicación), cualquiera puede calcular E ( x y ) . Puede usar el resultado en operaciones de suma, pero no puede usarlo en ninguna operación de multiplicación (el resultado de una multiplicación está contaminado, y los valores contaminados no pueden usarse como la entrada a otra multiplicación).E(x)E(y)E(xy)

La consecuencia es que, dado un polinomio multivariado cuadrático , y dado E ( x 1 ) , ... , E ( x n ) , cualquiera puede calcular un cifrado de Ψ ( x 1 , ... ,Ψ(x1,,xn)E(x1),,E(xn) . Esto es súper útil para su situación.Ψ(x1,,xn)

En particular, en su situación, podemos formar el polinomio Tenga en cuenta que este es un polinomio multivariado cuadrático, por lo tanto, dadas todas las E ( b i ) , cualquiera puede calcular E ( Ψ ( b 1 , ... , b N ) )

Ψ(b1,b2,,bN)=ij[bi(1bj)].
E(bi)E(Ψ(b1,,bN)). También tenga en cuenta que R=Ψ(b1,,bN) , por lo que estamos tratando de calcular exactamente el valor de este polinomio.

Esto sugiere un protocolo natural para su problema, utilizando una versión umbral del esquema de cifrado en el documento mencionado anteriormente:

  • Todos generan conjuntamente un par de claves público / privado para una versión umbral de este esquema, de modo que la clave pública sea conocida por todos, pero la clave privada se comparte entre todos (requiere la cooperación de todos los N partes para descifrar un texto cifrado cifrado bajo esta clave pública ) La clave pública se transmite a todos los N participantes.
  • Cada participante calcula E ( b i ) y transmite E ( b i ) a todos los demás participantes. Todos verifican que esto se haya hecho honestamente.iE(bi)E(bi)
  • Cada participante calcula utilizando las propiedades homomórficas de este esquema de cifrado y el conocimiento de E ( b 1 ) , ... , E ( b N ) . Todos verifican que obtuvieron el mismo valor.E(R)=E(Ψ(b1,,bN))E(b1),,E(bN)
  • Los participantes utilizan conjuntamente el protocolo de descifrado umbral para recuperar R de E ( R ) . (Tenga en cuenta que solo aplicarán el protocolo de descifrado de umbral a este texto cifrado; los participantes honestos se negarán a participar en descifrar cualquier otro texto cifrado).NRE(R)
  • Todos prueban de alguna manera (tal vez a través de pruebas ZK) que realizaron cada paso correctamente.

Tendría que completar algunos detalles, pero apuesto a que podría expandir este bosquejo / esquema para obtener un protocolo que resuelva su problema de manera eficiente y segura.


Mi vieja respuesta:

Todavía buscaría un poco más en un protocolo seguro de múltiples partes para calcular la suma .S=jbj

S<N/2

SRSRQS{Q,NQ}

i,jE(ci,j)ci,j=bibjEi<jci,j=Rde esto. Hay algunos detalles para resolver y el modelo de amenaza puede no ser lo que esperaba, pero es posible que pueda hacer que algo como esto funcione.

DW
fuente
Esa es una idea muy interesante. aunque no produce la producción exactamente, el uso de xor en realidad oculta la información si es 0 o 1. Sin embargo, un problema, ¿se calcula xor en texto sin formato en el esquema? ¿Algún cálculo seguro para xor?
Richard
1
ibijbjE(ci,j)ci,j=bibj.ijibi