Proteger la carpeta a la que se accede mediante un archivo por lotes

1

Declararé por adelantado que sé bastante poco sobre el cifrado y podría estar haciendo una pregunta tonta o haciendo una buena pregunta de una manera tonta. Gracias de antemano por su paciencia.

Tengo una carpeta, dentro de la cual se encuentran los módulos de Python, así como los archivos encurtidos que contienen máquinas de vectores de soporte y matrices numpy. Fuera de la carpeta tengo un archivo de proceso por lotes que inicia el módulo principal dentro de la carpeta, y ese módulo principal utiliza los otros módulos y carga periódicamente los SVM y las matrices. Todo el proceso tiene una duración de quizás dos horas.

Quiero cifrar o proteger de otro modo tanto la carpeta como el archivo por lotes, de modo que:

  1. un usuario puede ejecutar el archivo por lotes pero no puede abrirlo o editarlo;
  2. el archivo de proceso por lotes puede acceder a los contenidos de la carpeta (probablemente usando una contraseña oculta al usuario gracias a (1);
  3. IMPORTANTE, un usuario no puede acceder al contenido de la carpeta incluso cuando el archivo por lotes está accediendo a la carpeta; y
  4. todo esto debe lograrse sin que el usuario tenga que instalar explícitamente y confiar en software de terceros en su propio sistema, incluso si la carpeta y los archivos de proceso por lotes se mueven a su sistema.

¿Es esta una tarea trivial, complicada o imposible? ¿Hay otros enfoques que cumplirían mejor (o al menos estarían cerca de cumplir) mis cuatro objetivos arriba mencionados?

    
pregunta jda 28.11.2016 - 08:31
fuente

1 respuesta

1

AFAIK, no puede con un archivo batch en ningún sistema similar a Unix, porque cuando inicia un archivo batch, ejecuta el programa de shell ( /bin/sh por ejemplo) que lee el archivo. AFAIK, será lo mismo en Windows: un lote sin el permiso de lectura no será ejecutable por el usuario.

Si se convierte en un archivo ejecutable en Unix, puede utilizar el modo de identificación de usuario establecido. Es una característica discutible que permite que un proceso obtenga las autorizaciones del propietario del programa, en lugar de las del usuario que lo inicia, durante el tiempo de ejecución. Eso fue muy usado para juegos locales en los años 70: solo el programa del juego podía leer / establecer las puntuaciones. Aquí, eso significa que solo un usuario (el propietario del programa) podrá acceder al directorio y los otros usuarios solo podrán iniciar el programa.

Aunque es muy potente, este modo tiene casos de esquina y varias implicaciones de seguridad y ahora rara vez se usa (si existe) es una aplicación seria. De todos modos, nada de eso existe en Windows.

La forma ahora recomendada es tener un daemon (Unix) o servicio (Windows) que se inicie en el momento del arranque y se ejecute bajo la identificación de usuario del propietario de la carpeta. ese usuario Y tiene programas frontales que se comunican con el daemon / servicio a través de herramientas de comunicación entre procesos, como canalizaciones con nombre, colas de mensajes, sockets, etc.

Eso es un poco más complejo ya que involucra dos procesos y un canal de comunicación, pero es mucho más seguro ya que separa claramente la interfaz de usuario del programa de procesamiento. Pero también tiene la posibilidad de tener la interfaz de usuario en máquinas remotas y la carpeta con datos en una sola máquina segura, simplemente cambiando a un canal de comunicación de red ...

    
respondido por el Serge Ballesta 28.11.2016 - 10:26
fuente

Lea otras preguntas en las etiquetas