Diseño de carga / descarga segura con servidor de almacenamiento malicioso

1

Supongamos que tenemos un servidor de almacenamiento malintencionado (un almacén de valor-clave que no utiliza el usuario, que admite server.put(key, value) y server.get(key) ) que queremos usar para el almacenamiento seguro de archivos por usuario. Las dos interfaces que quiero asegurar son client.upload(username, filename, message) y client.download(username, filename) , que se comunican con server.put() y server.get() detrás de la escena.

Suposiciones:

  • Cada usuario tiene sus claves privadas almacenadas de forma segura localmente, y las claves públicas almacenadas en un servidor de claves públicas seguro.
  • El servidor malintencionado puede intentar manipular el mensaje cargado.
  • El servidor malintencionado puede hacer que un usuario cargue archivos arbitrarios con cualquier nombre y contenido que desee.
  • El servidor malicioso no revertirá un archivo ni lo eliminará.
  • Los nombres de archivo y el contenido del archivo no están vacíos.

Requisitos:

  • Las longitudes de los nombres de archivo y el contenido del archivo no tienen que ser confidenciales (por ejemplo, el servidor malintencionado no hará que el usuario cargue uno de cada dos archivos con diferentes longitudes, y trate de adivinar qué archivo / ella subió).
  • Los nombres de archivo y los contenidos del archivo deben ser confidenciales.
  • El cliente debe rechazar cualquier archivo que haya sido manipulado o no cargado por el usuario especificado. (Es decir, integridad y autenticación).

El diseño en el que estoy pensando es:

  • clave (para usar con el servidor de almacenamiento) = encrypt(filename, priv_key_1)
  • Valor = signed(encrypt(message, priv_key_1), priv_key_2)

¿Hay algún defecto en este diseño?

    
pregunta Zizheng Tai 17.03.2017 - 00:20
fuente

0 respuestas

Lea otras preguntas en las etiquetas