2010-04-04 13 views
5

¿Es posible calcular el promedio de tres números enteros encriptados? Sin restricciones en el método de encriptación. El objetivo de esto es solo ocultar los tres números y encontrar el promedio.calcule el promedio de tres números encriptados

+2

por qué no sólo almacenar la media junto con los números cifrados? Si puede obtener un promedio de los números 'encriptados', no los ha cifrado bien, ya que todavía están matemáticamente relacionados. – Cam

+0

En mi respuesta, me han asumido que desea que el promedio de cifrado como el resultado, no el promedio sin cifrar. Como ya notó incrediman, ser capaz de calcular el promedio no encriptado arrojaría información, lo que sería una propiedad muy mala para un sistema criptográfico. –

Respuesta

12

Lo que parece que está buscando se llama Homomorphic Encryption: un esquema de cifrado que le permite realizar operaciones en datos cifrados, con el resultado cifrado como resultado.

Tal esquema le permitiría dar datos encriptados a un tercero, que luego podría hacer cálculos en él sin saber lo que estaban computando.

En su caso, necesita dos operaciones: adición y división. Hasta hace poco, los esquemas de cifrado homomórficos generalmente solo admitían 1 operación. Pero en septiembre de 2009 IMB announced the first fully homomorphic cryptosystem.Otras investigaciones published another system poco después de eso.

Estos sistemas criptográficos podrían ser sea capaz de hacer lo que quiera, pero es toda la investigación de vanguardia informática corte.

+1

Muy interesante, gracias. –

+0

Esto funcionaría, si no le importa que el resultado aún esté encriptado. Si quiere que el resultado a ser descifrado, bien podría descifrar la entrada ... ¿Qué método –

+0

debería utilizar si sólo deseo de "añadir" los números? Sin división Entonces, ¿qué cifrado de 1 operación-homomophic es el mejor para agregar números encriptados? – heinob

4

Descifrar los números y luego calcular su promedio.

+1

No creo que ese fuera el sentido de la pregunta. Estoy bastante seguro de que OP quiere calcular el promedio sin revelar los números individuales (incluso para la CPU que calcula el promedio). –

+1

Puede que no sea el punto * * pero, en serio, ¿cómo se podría hacer con sensatez? –

+0

Eso, exactamente, es mi punto. –

1

Con métodos de cifrado ideales: No.

Con la mayoría de los métodos de cifrado del mundo real: Nº

Con algunos estúpidamente fácil de deshacer método de ofuscación especialmente diseñado para permitir un promedio: Sí.

Llamar al último método "encriptación" realmente usaría el término incorrecto.

Si podría calcular el promedio de los números encriptados sin descifrar ellos, que haría que el descifrado de los números originales mucho más fácil, por lo que sería muy sorprendido si esto funciona con cualquier algoritmo de cifrado grave.

0

En general, tres números cifrados no deberían mantener el mismo orden si están cifrados, por lo que estoy bastante seguro de que tiene que descifrarlos y calcular el avarage.

2

No veo ninguna manera simple de hacer lo que pide, aparte de descifrar primero los números.

Tomando el promedio (o la "media aritmética") requiere añadiendo los números. Ahora bien, si desea multiplicar los números, entonces podría hacerlo cuidadosamente con el cifrado RSA. Si p es el texto plano, c es el texto cifrado, y e es la clave de cifrado, luego en RSA, c = p^e. Si usted tiene 3 enteros separados, P1, P2, P3, y el producto se págs continuación

pp^e = (p1 * p2 * p3)^e = p1^e * p2^e * p3^3 = c1 * c2 * c3 = cp 

Es decir, puede multiplicar los tres enteros de texto plano juntos y luego cifrar, o puede simplemente multiplicar los tres textos cifrados juntos, y obtener la misma respuesta. Esto te llevaría de alguna forma hacia la "media geométrica", donde multiplicas todos los números y luego tomas la raíz cúbica (o la enésima raíz para n números). Desafortunadamente, calcular una raíz cúbica en aritmética modular no es trivial.

0

Si, y solo si, el método de encriptación es una función matemática uno a uno, entonces es posible hacerlo mientras los números están encriptados.

Por ejemplo, si mi método muy inseguro de cifrado es multiplicar cada número de 2, entonces yo haría lo siguiente:

 
function encrypt($number){ 
    return $number*2; 
    } 

$a=encrypt(3); // a= 9 
$b=encrypt(5); // b= 15 
$c=encrypt(6); // c= 18 

$average = ($a+$b+$c)/6; // We divide by 6 because first we divide by 3 to get the average, then by 2 to do the decryption. The method will vary based on the mathematical function. 

La única otra posibilidad es la de descifrar los números primero.

Cuestiones relacionadas