Estoy desarrollando una aplicación de intranet (C#) que utiliza algunos datos (locales al servidor web) que nos gustaría mantener en privado. Esta información está encriptada (AES) usando un repositorio de datos heredado. No podemos evitar totalmente el acceso físico a la máquina.¿Cómo se oculta una clave de cifrado en una aplicación .NET?
Claramente, nunca vamos a tener la seguridad perfecta aquí. Sin embargo, queremos que sea lo más difícil posible para cualquier persona obtener acceso no autorizado a los datos.
La pregunta es cómo guardar mejor la clave. Cifrarlo en base a una ID específica de la máquina es una opción, pero esa información estaría disponible para cualquiera que ejecute una herramienta de diagnóstico en la máquina.
La codificación en la aplicación es una opción (es una aplicación única). Sin embargo, los ensamblados .NET son bastante fáciles de descompilar. Entonces, ¿sería mejor ofuscarlo, usar un iniciador de cifrado, compilarlo?
¿O hay una opción que me falta?
Así que estamos claros, sé que es una causa perdida si alguien está determinado, pero estamos tratando de hacerlo lo más difícil posible dentro de las limitaciones.
Así lo hice en el pasado. –
Si tiene acceso a la máquina, ¿no puede simplemente escribir una aplicación que haga referencia a las secciones encriptadas y le entregará el texto sin formato? Pensé que esto solo era seguro si no tenías acceso a la máquina. – user74824
@yahoo: tienes razón. – NotMe