¿Proteger datos y archivos para que no se puedan abrir en ningún otro lugar que no sea su propio servidor?

1

Sé que esta pregunta puede parecer un poco rara, pero creo que debería haber una forma, al menos para reducir la capacidad de descargar o usar secuencias de comandos para descargar archivos desde el almacenamiento. Probé mucho pero no encontré nada útil.

Considere que tiene un servidor de almacenamiento que contiene miles de millones de archivos y datos, ¿cómo puede hacer que se puedan abrir solo desde ese servidor y que no pueda abrirse desde cualquier otra máquina?

Sé que no es posible evitar a los atacantes por completo, por lo que, después de proteger todos los servidores, pensé por mí mismo si sería posible hacer que los datos sean más seguros de lo que son en este momento. Así que incluso si alguien pudiera piratear servidores, no podrá llevar sus datos a ninguna parte, ya que el archivo no será más que una cosa rota a partir de ese momento.

Tal vez mi pregunta no sea 100% correcta, por lo que estoy completamente abierto a cualquier sugerencia y edición para mi pregunta. Lo único que necesito es proteger mis datos de manera que nadie pueda usarlos fuera de mi servidor.

    
pregunta Parsa Samet 07.11.2016 - 11:29
fuente

5 respuestas

14

¿Por qué crees que debería haber una manera? Si un atacante puede piratear su servidor, presumiblemente pueden mirar los datos en ese servidor; desde ese punto, podrían copiar los datos simples a cualquier otro lugar. Sabemos que los datos deben estar claros en ese momento, ya que su servidor debe poder leerlos y usted debe poder acceder a los archivos (de lo contrario, es un agujero negro). Puede cifrar archivos de tal manera que solo su servidor específico pueda descifrarlos, incluso podría usar un módulo de seguridad de hardware para dificultar la exportación de las claves, pero dado que tienen que ser descifrados para su uso, un atacante podría simplemente tomar una copia. en ese punto.

Piense que es como una pintura: puede proteger la pintura en sí misma con relativa facilidad, al guardarla en una caja fuerte, pero en cuanto quiera exhibirla, cualquiera puede entrar con una cámara y hacer una copia. Para las pinturas, eso es un problema menor: puede saber fácilmente cuándo se ha realizado una copia. Para los datos digitales, no hay ninguna diferencia entre el original y la copia, por lo que cualquier cosa que pueda hacer con el original, puede hacerlo igualmente bien con la copia.

    
respondido por el Matthew 07.11.2016 - 12:06
fuente
7

Esto no es posible. Piense en eso: ¿en qué se diferencia su servidor de cualquier servidor comprado? Puede que tenga algunos números de serie diferentes en algunas partes, pero aparte de eso, es lo mismo.

Puede cifrar los datos con una clave solo almacenada en ese servidor. Pero si la clave se almacena en el sistema de archivos, un atacante puede copiarla.

Hay dispositivos de hardware que almacenan de forma segura una clave y no permiten su exportación. Por lo general, se denominan módulos de seguridad de hardware . Si cifra todos los datos con claves almacenadas solo en el HSM, los archivos solo pueden ser descifrados por alguien con acceso a ese HSM.

Pero tenga en cuenta: si un atacante tiene acceso a su servidor, nada le impide descifrar todos los archivos con el HSM y copiar los archivos descifrados.

Además, obviamente, cualquier persona que pueda acceder a un archivo descifrado puede copiar ese archivo sin restricciones.

Para resumir, lo que puede hacer es comprar un HSM, cifrar todos los archivos con ese HSM y almacenarlos solo encriptados. Para evitar que alguien le robe todos sus archivos, debe implementar advertencias cuando se realicen demasiadas operaciones criptográficas. (Si en el uso normal, se descifra un archivo por segundo, cuando de repente se descifran cientos de archivos, algo está mal). Aún así, un atacante puede robar archivos descifrados si tiene acceso ilimitado al servidor. Simplemente lo hace más difícil!

    
respondido por el Josef 07.11.2016 - 11:55
fuente
6

El mejor enfoque es a la inversa: haga que el servidor que almacena los archivos no pueda incapaz leerlos, cifrándolos con claves que se encuentren en otro lugar.

Considere un sistema que comprenda una computadora portátil, una tarjeta inteligente y el servidor. Las llaves se guardan en la tarjeta. Un usuario solicita el documento del servidor y recibe la copia encriptada. La computadora portátil la pasa a la tarjeta inteligente para su descifrado y luego la muestra en la pantalla.

Comprometer al servidor es inútil: no puede leer los documentos.

Comprometer a la computadora portátil le permite descifrar cualquier documento mientras está comprometido, pero no todos a los documentos.

Comprometer la tarjeta inteligente le proporcionará todos los documentos con las claves relevantes, pero estos dispositivos pueden ser extremadamente resistentes a los ataques.

El estado de la técnica en dispositivos de usuario final seguros para el usuario normal es el iPhone, con sus componentes "TrustZone" que funcionan como un HSM. Probablemente el siguiente mejor y más práctico dispositivo sea un sistema Win10 que use el cifrado de disco completo BitLocker con un HSM que almacena las claves. Debe ingresar la contraseña en el arranque, y aún es potencialmente vulnerable a ataques en tiempo real, pero si el sistema es robado mientras está fuera del disco, no se puede leer el contenido sin la contraseña.

    
respondido por el pjc50 07.11.2016 - 14:34
fuente
5

Hay un tipo de problema fundamental en el que estás tratando de hacer: Tendrá que descifrar los datos. En este punto se descifra y se puede filtrar. Puede usar el cifrado de disco completo, incluso combinarlo con algo como QubesOS para separar los procesos. Esto evitará que el software robe los datos, entonces su principal problema es el acceso físico. Pero siempre habrá un momento en el que los datos no estén encriptados y puedan ser robados.

Cada implementación general de crypto tiene esta propiedad y no se puede arreglar fácilmente.

    
respondido por el J.A.K. 07.11.2016 - 12:00
fuente
3

Para ser diferente de las otras respuestas, señalaré un caso en el que esto es posible: claves privadas.

Lo que hace que las claves privadas sean un caso especial es que A) las aplicaciones en el servidor nunca necesitan acceder directamente a la clave, un dispositivo seguro puede guardar la clave, realizar cualquier procesamiento en ella y devolver el resultado, y B) la los datos son lo suficientemente pequeños (digamos < 1 kb) como para que pueda dedicar una gran cantidad de tiempo de CPU a ofuscarlos en la memoria.

HSMs : a veces las claves privadas se almacenan en dispositivos de hardware altamente seguros diseñados para este propósito: HSM, tarjetas inteligentes, TPM, enclave seguro, etc. La idea es que el servidor nunca verá lo privado clave porque cuando necesita firmar / cifrar algo, envía los datos al HSM y recupera los datos firmados / cifrados.

Ofuscación en la memoria : si la clave necesita ser almacenada en el software del servidor, entonces no estás completamente hundido; las aplicaciones bien escritas pueden descifrar el archivo de clave y luego ofuscar la clave en la memoria para que incluso si un atacante obtiene un volcado de memoria de la aplicación, sea difícil (pero no imposible) extraer la clave. Los trucos de ofuscación incluyen: dividir la clave en 4 trozos y distribuirlos sobre el espacio de memoria de la aplicación, obtener un número aleatorio o memoria inicializada y usarlo como clave para cifrar los trozos. Estos trucos requieren: A) que sus aplicaciones se escriban teniendo esto en cuenta, y B) los datos que se deben ofuscar son muy pequeños en relación con el espacio de memoria de la aplicación (por ejemplo, < 1 kb).

A partir de su descripción, parece que en su caso de uso, nada de esto se aplica porque las aplicaciones necesitan acceso a los datos, y los datos son bastante grandes. Probablemente esté perdiendo el tiempo aquí, en lugar de eso, debería dedicar su tiempo a proteger su servidor contra inicios de sesión remotos y vulnerabilidades de ejecución de código.

    
respondido por el Mike Ounsworth 07.11.2016 - 15:27
fuente

Lea otras preguntas en las etiquetas