es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo extraer de forma segura una carpeta zip encriptada a una carpeta aleatoria, cargar todos los archivos extraídos en la memoria y eliminarlos de forma segura.

Tengo un archivo 7z encriptado que contiene algunos archivos de datos binarios.

  • Estoy en la plataforma de Windows (Windows 10 – Los clientes también están en la misma plataforma).
  • Estoy utilizando C++ 17.
  • Estoy utilizando una biblioteca de terceros (estándar C) que puede cargar estos archivos binarios sólo desde el disco (no desde transmisiones de memoria) en la memoria.
  • Cargar los archivos binarios desde el disco a la memoria lleva unos pocos milisegundos.
  • No quiero permitir a los usuarios de mi software leer el contenido de los archivos binarios.
  • No puedo utilizar un servicio en línea para alojar estos archivos binarios porque los clientes deberían ser capaces de utilizar el software en un ordenador independiente sin ninguna conectividad de red.

La forma en que estoy planeándolo ahora es la siguiente:

  1. Elegir una ruta de carpeta aleatoria en tiempo de ejecución (en la carpeta temporal de Windows).
  2. Extraer el archivo 7z encriptado en la ruta aleatoria mencionada anteriormente.
  3. Adquirir inmediatamente un bloqueo exclusivo en los archivos binarios utilizando https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-lockfileex.
  4. Leer los archivos binarios.
  5. Después de que la lectura haya terminado, sobrescribir los archivos con ceros.
  6. Eliminar los archivos extraídos.

Cosas que pueden salir mal en el enfoque anterior:

  • Los clientes que tengan privilegios de administrador pueden potencialmente sincronizar perfectamente la carga de archivos binarios en el software y finalizar el proceso antes de que los archivos sean sobrescritos.
  • Los clientes pueden potencialmente obtener un volcado de memoria y leer los datos directamente (no estoy seguro de si esto es fácil de hacer).
  • Potencialmente más maneras…

¿Existe alguna otra forma mejor de lidiar con la situación? ¿Debería aceptar el riesgo potencial de pérdida de propiedad intelectual?

Tags:  

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en protección de datos, recomendaría los siguientes pasos adicionales para mejorar la seguridad del proceso:

    1. Utilizar un algoritmo de cifrado fuerte para el archivo 7z, con una contraseña larga y aleatoria generada en tiempo de ejecución. Esto hará mucho más difícil que un atacante extraiga el contenido del archivo.
    2. Utilizar un archivo de mapeo en memoria para cargar los archivos binarios en la memoria, en lugar de leerlos desde el disco. Esto hará más difícil que un atacante intercepte los datos mientras se están leyendo desde el disco.
    3. En lugar de sobrescribir con ceros, utilizar un método de borrado seguro que asegure que los datos no puedan ser recuperados, como sobrescribir múltiples veces con diferentes patrones de bits.
    4. Considerar el uso de un certificado de firmado de código para dificultar que los atacantes manipulen el software.
    5. Considerar ejecutar el software en un entorno aislado o una máquina virtual para limitar el impacto potencial de ataques exitosos.

    Si bien no existe una solución perfecta que garantice una seguridad del 100%, seguir estos pasos adicionales puede reducir en gran medida el riesgo de pérdida de propiedad intelectual. Es importante recordar que la seguridad es un proceso, no un producto, y requiere monitoreo y mejora continua.

Comments are closed.