¿Cómo puedo ocultar mi clave de acceso y secreto de AWS S3 en C ++? [duplicar]

1

Estoy usando AWS S3 en mi aplicación C ++ para cargar y descargar archivos. He incluido la clave de acceso y el secreto en mi código, pero me preocupa que alguien pueda leerlos desde el binario. ¿Hay alguna técnica estándar para ofuscarlos?

No estoy ejecutando esta aplicación en una PC, en realidad está en un dispositivo integrado, por lo que no me preocupa que los usuarios lean la clave y el secreto de un archivo o RAM (acceder al dispositivo es mucho más difícil). Lo que me preocupa es que alguien hable sobre nuestro archivo de actualización y extrae la clave y el secreto del binario.

    
pregunta parsley72 17.12.2015 - 19:24
fuente

2 respuestas

1

El almacenamiento de claves es una de esas cosas ... Ciertamente, si el dispositivo se apaga, alguien con los recursos podría soldar y dispositivos de almacenamiento (flash, emmc) y descargar los datos con la suficiente facilidad. En el tiempo de ejecución, si alguien tiene acceso de superusuario, puede utilizar la memoria física de todas las memorias físicas y escanearla en busca de la clave (que estará en la memoria una vez que la use)

La protección de claves utilizando esquemas de cifrado homomórficos ha ido ganando popularidad, pero aún se encuentra en gran parte en el ámbito académico (más un poco de vudú).

Para protegerse contra los forenses de memoria que recogen su clave de la memoria física, ARM tiene una "zona de confianza" que puede aprovecharse para realizar operaciones criptográficas sin exponer las claves a la memoria que generalmente es visible para el sistema operativo.

Un TPM es otro enfoque común para almacenar y usar claves sin exponerlas a la memoria.

En resumen, no hay casi 'buenas' soluciones de software para proteger las claves, solo las soluciones de hardware parecen sólidas (como Trustzone y TPMs).

    
respondido por el Whome 17.12.2015 - 19:52
fuente
0

No puede ocultarlo en el archivo de la aplicación, solo puede ofuscarlo. Ninguno de estos te ofrece ningún tipo de seguridad. La ofuscación es no de seguridad; puede fácilmente ser revertido bajo las circunstancias correctas.

Y si se trata de un dispositivo integrado, ¿qué impide que alguien explote su aplicación? No confío en que su aplicación esté segura en este momento, ya que está almacenando credenciales importantes en un ejecutable, por lo que probablemente también carezca de conocimientos básicos de seguridad.

No importa si estás en un dispositivo integrado o no: si hay acceso de lectura y escritura, tus secretos están en peligro.

Hora de la historia: una vez, alguien intentó infectar mi máquina con un ejecutable de malware que tenía credenciales almacenadas en su interior. En cuestión de minutos, pude iniciar sesión en sus diversas cuentas, descubrir quiénes eran, qué estaban haciendo y fastidiarlos un poco.

Hora de la nueva historia: Eres el siguiente.

Te preocupa legítimamente que alguien te robe el archivo de actualización y extraiga las credenciales. Pero te estás perdiendo el hecho de que no deberías almacenar tus credenciales en el ejecutable.

    
respondido por el Mark Buffalo 17.12.2015 - 19:43
fuente

Lea otras preguntas en las etiquetas