Ejecutar un algoritmo en datos de forma remota y garantizar que la respuesta no haya sido alterada

8

He estado pensando en este problema particular de informática / criptografía / base de datos durante años y solo quiero saber si ya hay soluciones para él. Para ser sincero, ni siquiera sé a qué campo pertenece exactamente este problema.

En pocas palabras: la persona A tiene una lista de datos, otra persona (B) tiene un algoritmo que le da un puntaje a cada elemento de esta lista y luego suma todos estos puntajes para proporcionar un puntaje general para toda la lista. ¿Cómo podemos ejecutar el algoritmo en la lista de datos para que los datos se mantengan extremadamente seguros (preferiblemente, nunca abandonen a la persona A) pero para que la persona B pueda estar segura de que el algoritmo se ejecutó correctamente y no fue alterado?

Aquí hay un ejemplo: Anna y Bob viven en un pueblo grande. Anna tiene una lista en su computadora de todas las cosas que ha hecho en el pueblo, tanto buenas como malas. Bob ha creado un algoritmo de puntuación muy simple para tales listas, que se ejecuta en cada elemento de la lista y le otorga una puntuación y luego suma todos estos números para darle a Anna una puntuación final. Este puntaje le permite a Bob saber cuán beneficioso es Anna para la comunidad del pueblo y es específico para la opinión de Bobs. (Esto es más que un ejemplo, ya que este es realmente el sistema que quiero hacer)

Sin embargo, Anna no quiere darle a Bob su lista, ya que él tiene acceso a información potencialmente embarazosa allí (todos tienen esqueletos en su armario). Sin embargo, Bob no confía en que Anna ejecute sus algoritmos ella misma, ya que puede mentir y decirle a Bob que la puntuación fue muy alta, por lo que es más probable que Bob la ayude.

Ya he pensado en algunas soluciones, pero todas tienen problemas:

A. Encuentre una persona aleatoria para tomar los datos y ejecutar el algoritmo y enviar la puntuación de regreso, pero puede ser difícil asegurarse de que esta persona aleatoria no conozca a Anna e intente ayudarla o haga una copia de los datos y luego intente para rastrearlo y chantajear a Anna.

B. Deje que Anna ejecute el algoritmo, pero de alguna manera codifique un código de verificación en las puntuaciones, por ejemplo, en lugar de calificar un evento como 1, califíquelo como 1.0000000000797, de tal manera que Bob pueda usarlo luego como un código de verificación para ver si La puntuación es correcta. Sin embargo, esta verificación también podría ser mal utilizada por Bob para indicar qué cosas específicas ha hecho Anna. También me imagino que un sistema de este tipo sería trivial para realizar ingeniería inversa para que Anna pueda dar una puntuación falsa con un código de verificación correcto, considerando que Anna debe tener acceso completo al algoritmo de Bob para ejecutarlo.

C. La aldea crea un servidor seguro para tomar dichos datos y algoritmos y ejecutarlos juntos. Sin embargo, Anna y Bob no confían en nadie lo suficiente como para hacer esto y no hacen una copia de los datos ni modifican las puntuaciones, a menos que exista una arquitectura fundamentalmente segura para hacerlo. También preferiría que este sea un sistema P2P.

Robin A
fuente
¿Qué pasa si el algoritmo de puntuación de Bob es, por ejemplo, la representación binaria de si Anna ha hecho o no ha hecho cada una de las cosas en la lista? (Entonces 1 * <hizo Anna cosa 1> + 2 * <hizo Anna cosa 2> + 4 * <hizo Anna cosa 3> ...) Entonces Bob tendrá acceso a los datos de Anna solo en función de la salida del algoritmo de puntuación.
TLW
1
Me pregunto si el cifrado homomórfico tiene algo que ver aquí. Sin embargo, resuelve el tipo de problema inverso: permite que algún otro sistema calcule datos sin aprender los valores con los que está trabajando.
Alan Wolfe
@TLW No estoy completamente seguro si entiendo lo que está diciendo ... ¿quién está ejecutando el algoritmo en esta situación y aún así cómo podemos estar seguros de que el valor final no es interceptado ni manipulado?
Robin A

Respuestas:

9

En la comunidad criptográfica, esta tarea se conoce como cómputo delegado o delegación verificable. Desea permitir que el servidor (la "nube") haga el trabajo por usted, pero también desea que la nube le dé alguna prueba de que realmente realizó el cálculo (y no solo generó una salida aleatoria, y se escapó con tu dinero).

Un puntero, en la parte superior de mi cabeza, es "Delegar computación: pruebas interactivas para muggles" (Goldwasser, Kalai y Rothblum, J. ACM (62), 2015). Probablemente existan otras soluciones, mira dentro.

Sonó.
fuente
1

Existe un nuevo campo de cifrado homomórfico que generalmente se ajusta a sus requisitos:

El cifrado homomórfico es una forma de cifrado que permite realizar cálculos en texto cifrado, generando así un resultado cifrado que, cuando se descifra, coincide con el resultado de las operaciones realizadas en el texto sin formato.

La entidad de procesamiento no puede saber "nada" sobre el texto cifrado, solo aparece como datos aleatorios, solo puede corromper el cálculo y el cliente necesita alguna forma de detectar / defenderse contra datos / cálculos corruptos. Esto se puede hacer con resúmenes de mensajes y computación tolerante a fallas .

El cifrado homomórfico solo se demostró como teóricamente posible en algún momento reciente, por lo tanto, se encuentra más en etapas conceptuales y no parece implementarse mucho en la práctica hasta ahora, pero finalmente la idea es que podría aparecer como una capacidad (por ejemplo, similar a otros servicios estándar como virtualización) en grandes grupos de cómputo estandarizados, por ejemplo, Amazon ECC o motor de cómputo de Google .

vzn
fuente
Esto no responde la pregunta que se hizo. El cifrado homomórfico no permite (por sí mismo) que B verifique que el algoritmo se ejecutó correctamente y que los datos no fueron alterados. El cifrado homomórfico garantiza solo la confidencialidad, no la integridad, pero la pregunta es sobre la integridad.
DW
la pregunta se trata de "ejecutar un algoritmo en datos de forma remota", que es la razón de ser del cifrado homomórfico, y la respuesta aborda eso directamente junto con las preocupaciones adicionales de manipular qué mensaje resuelve y las técnicas informáticas tolerantes a fallas.
vzn