¿Puedo crear una aplicación que pueda descifrar datos pero el administrador de la aplicación no puede?

1

Tengo una aplicación de Windows con un archivo de configuración que contiene algunas contraseñas de base de datos. Me gustaría cifrar estos datos de manera que mi aplicación pueda descifrar los datos, pero el administrador de mi aplicación (el equipo de operaciones que deberá iniciar / detener el servicio, etc.) no pueda hacerlo. ¿Es esto posible?

    
pregunta ConditionRacer 06.03.2015 - 22:30
fuente

1 respuesta

3

Esto es posible hasta cierto punto, en Windows, utilizando la API de protección de datos de Windows ; más específicamente la función CryptProtectData . Esta función le permite cifrar datos contra un perfil de usuario o una máquina, de modo que solo esa entidad pueda recuperar los datos.

Su configuración se vería así:

  • Un usuario de servicio dedicado está configurado para la aplicación.
  • Una aplicación auxiliar que se ejecuta como usuario de servicio encripta las credenciales con CryptProtectData , con dwFlags establecido en 0, y las almacena en el disco o en el registro.
  • La aplicación se ejecuta como el usuario del servicio y descifra las credenciales en el inicio, usando CryptUnprotectData .
  • Cree un grupo para usuarios de servicios de aplicaciones que no también tenga privilegios de otras maneras (por ejemplo, parte del grupo de administradores)
  • Utilice esta técnica para permitir que los usuarios de ese grupo inicien / detengan el servicio.
  • Asegúrese de que el grupo no pueda escribir / modificar el archivo ejecutable, o cualquiera de las DLL dentro del directorio de la aplicación, o causar que un ejecutable arbitrario se ejecute en el contexto del usuario del servicio de la aplicación. Esto también significa que no deberían poder modificar las claves de registro y los valores para el servicio en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services .

Es importante tener en cuenta que, si los administradores de la aplicación pueden modificar el binario de la aplicación o ejecutar un programa en el contexto del usuario del servicio de la aplicación, simplemente podrían llamar a CryptUnprotectData y obtener acceso a las credenciales.

Si hace que estos administradores de aplicaciones formen parte del grupo completo de administradores, les está dando las claves del reino: pueden instalar y ejecutar el software que deseen en este momento (incluido el código del modo kernel) y podrán Evita cualquier control que implementes. No hagas eso si quieres mantener el control.

    
respondido por el Polynomial 07.03.2015 - 00:27
fuente

Lea otras preguntas en las etiquetas