¿Qué protocolo criptográfico es apropiado para el caso en que el usuario necesita acceder a un archivo binario y a los archivos de configuración cifrados?

1

Esta es una pregunta de seguridad de TI muy nueva ...

Tengo que implementar rápidamente una solución para nuestra aplicación que funcione así ... Tenemos un archivo ejecutable binario que recibe un archivo de configuración. Necesito cifrar el archivo de configuración para que un usuario no confiable pueda recibir el binario y el archivo de configuración cifrado (y quizás una clave pública o algo así) y él debería poder ejecutar el binario con el archivo cifrado.

¿Podría sugerir un paradigma de criptografía & / o c ++ crypto library que me permita hacer lo anterior? Estaba pensando en cifrar los archivos de configuración con una clave estática, que está codificada en el binario como una solución urgente que elevará la barra ligeramente según los consejos que recibí del intercambio de criptografía.

¿Cuál sería un buen diseño a largo plazo? Estoy mirando hacia la protección de los siguientes problemas: -

  1. Lectura informal de la configuración xml / archivos de entrada
  2. Fácil desmontaje e ingeniería inversa del binario / extracción de la clave secreta mediante la búsqueda en la sección de texto o datos
  3. ¿Algún otro vector de ataque en el que puedas pensar solo para que yo sepa?

Nota: - Pregunta reposteada desde el intercambio de pila de cifrado, ya que este es probablemente un mejor lugar para formularla.

    
pregunta owagh 30.04.2014 - 23:41
fuente

2 respuestas

3

Si almacena una clave, contraseña, etc. en el código fuente, nunca podrá razonablemente mantenerlo en secreto a menos que también controle el sistema. Lo que está describiendo solo sería oscuridad, ofuscación o ocultación de datos .

Si solo desea que el programa pueda descifrar, suena como un caso para usar criptografía asimétrica. Es posible que tenga un escenario en el que cifre los datos reales utilizando una clave simétrica, pero transfiera la clave simétrica utilizando asimétrica para reducir la sobrecarga.

Dependiendo de su situación, podría implementar un Módulo de seguridad de hardware ( HSM). Si puede configurar y controlar el sistema, el HSM sería la fuente confiable para guardar sus secretos y proteger el proceso de descifrado del sistema y la aplicación. Sin embargo, si no tiene control físico, es posible que el cliente pueda manipular el HSM.

Si las claves de descifrado están en la aplicación o almacenadas en el sistema, y el sistema no está bajo su control, la persona que controla el sistema siempre puede acceder a ellas de alguna manera, puede hacerlo difícil, pero no imposible. Si tiene el control completo del sistema, puede limitar los privilegios del usuario para evitar que carguen herramientas o incluso que lean los archivos hasta cierto punto. Sin embargo, con una aplicación de escritorio compilada enviada a un cliente, nunca podrá asegurarse de que no puedan revertir o encontrar los secretos.

    
respondido por el Eric G 01.05.2014 - 04:17
fuente
0

En la IMO, en las aplicaciones de escritorio que utilizan configuración binaria + xml, nunca puede estar seguro de que su xml no se está leyendo, usar una herramienta como Ollydbg es bastante fácil de obtener cualquier clave de cifrado que pueda colocar en el binario. Le sugeriría, si es posible, que considere implementar su aplicación en un entorno virtual como citrix, que si se configura correctamente le dará acceso a los usuarios solo a la aplicación y nada más.

    
respondido por el Kotzu 01.05.2014 - 00:55
fuente

Lea otras preguntas en las etiquetas