Nova resposta (24/10): Acho que o artigo a seguir fornece uma solução elegante e eficiente para o seu problema:
Eles mostram como criar um algoritmo de criptografia de chave pública com as duas propriedades úteis a seguir:E(⋅)
Aditivamente homomórfico. Dados e E ( y ) , qualquer um pode calcular E ( x + y ) .E(x)E(y)E(x+y)
Pode multiplicar (uma vez). Dado e E ( y ) (nenhum dos quais foi gerado como resultado de uma operação de multiplicação), qualquer um pode calcular E ( x ⋅ y ) . Você pode usar o resultado em operações de adição, mas não pode usá-lo em nenhuma operação de multiplicação (o resultado de uma multiplicação está corrompido e os valores contaminados não podem ser usados como entrada para outra multiplicação).E(x)E(y)E(x⋅y)
A conseqüência é que, dado um polinômio quadrático multivariado e dado E ( x 1 ) , … , E ( x n ) , qualquer um pode calcular uma criptografia de Ψ ( x 1 , … , x n ) . Isso é super útil para a sua situação.Ψ(x1,…,xn)E(x1),…,E(xn)Ψ(x1,…,xn)
Em particular, em sua situação, podemos formar o polinômio
Observe que este é um polinômio quadrático multivariado, portanto, considerando todos os E ( b i ) , qualquer um pode calcular E ( Ψ ( b 1 , … , b N ) )
Ψ(b1,b2,…,bN)=∑i≠j[bi(1−bj)].
E(bi)E(Ψ(b1,…,bN)). Observe também que
, então estamos tentando calcular exatamente o valor desse polinômio.
R=Ψ(b1,…,bN)
Isso sugere um protocolo natural para o seu problema, usando uma versão de limite do esquema de criptografia no documento mencionado acima:
- Todos juntos geram um par de chaves pública / privada para uma versão limiar desse esquema, de modo que a chave pública seja conhecida por todos, mas a chave privada seja compartilhada entre todos (requer cooperação de todas as partes para descriptografar um texto cifrado criptografado sob essa chave pública ) A chave pública é transmitida a todos os N participantes.NN
- iE(bi)E(bi)
- E(R)=E(Ψ(b1,…,bN))E(b1),…,E(bN)
- NRE(R)
- Todo mundo prova de alguma forma (talvez por meio de provas do ZK) que eles executaram cada etapa corretamente.
Você precisaria preencher alguns detalhes, mas aposto que você poderia expandir este esboço / estrutura de tópicos para obter um protocolo que resolvesse seu problema de maneira eficiente e segura.
Minha antiga resposta:
S=∑jbj
S<N/2
SRSRQS∈{Q,N−Q}
i,jE(ci,j)ci,j=bi⊕bj⊕E∑i<jci,j=Rdisso. Há alguns detalhes a serem resolvidos e o modelo de ameaça pode não ser o que você esperava, mas é possível que você consiga fazer algo assim funcionar.