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(x⋅y)
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)=∑i≠j[bi(1−bj)].
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,N−Q}
i,jE(ci,j)ci,j=bi⊕bj⊕E∑i<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.