Pregunta

¿Qué recomendaciones puede dar para un sistema que debe hacer lo siguiente?

Cargue complementos (y eventualmente ejecútelos), pero tenga 2 métodos para cargar estos complementos:

  • Cargar solo complementos autorizados (desarrollados por el propietario del software)
  • Cargar todos los complementos

Y debemos estar razonablemente seguros de que los complementos autorizados son auténticos (sin modificaciones).Sin embargo, todos los complementos deben estar en ensamblajes separados.He estado considerando el uso de ensamblados con nombres seguros para los complementos, con la clave pública almacenada en la aplicación del cargador, pero me parece demasiado fácil modificar la clave pública dentro de la aplicación del cargador (si el usuario así lo desea) independientemente de cualquier ofuscación de la aplicación del cargador.¿Alguna idea más segura?

¿Fue útil?

Solución

Básicamente, si colocas tu código en la máquina de otra persona, no hay garantía absoluta de seguridad.

Puedes buscar todo tipo de trucos de seguridad, pero al final, el código está en su máquina, por lo que está fuera de tu control.

¿Cuánto puede perder si el usuario final carga un complemento no autorizado?

Otros consejos

¿Cuánto puede perder si el usuario final carga un complemento no autorizado?

Es cierto que esto no sucederá a menudo, pero cuando sucede, si sucede, perdemos mucho y, aunque entiendo que no produciremos nada 100% seguro, quiero que sea un obstáculo suficiente para disuadir a la gente de hacerlo.

Lo molesto de utilizar una carga dinámica simple con un nombre seguro completo es que todo lo que se necesita es un simple cambio literal de cadena dentro de la aplicación del cargador para cargar cualquier otro ensamblado, incluso aunque los complementos estén firmados.

puedes ampliar tu pregunta:"¿Cómo puedo proteger mis ensamblados .net de la ingeniería inversa?"

la respuesta es: no puedes.Para aquellos que aún no lo han visto, simplemente busquen "reflector" y ejecútenlo en algún archivo ejecutable ingenuo.

(por cierto, esta es siempre la respuesta para el código que está fuera de su alcance, siempre y cuando no se le haya enviado hardware de cifrado/descifrado),

La ofuscación intenta hacer que la ingeniería inversa sea más difícil (cueste más dinero) que el desarrollo, y para algunos tipos de algoritmos tiene éxito.

Firmar las asambleas.

La firma de nombre fuerte, o nombres fuertes, le da a un componente de software una identidad globalmente única que no puede ser falsificada por otra persona.Los nombres fuertes se utilizan para garantizar que las dependencias de componentes y las declaraciones de configuración se asignen a exactamente el componente correcto y la versión de componentes.

http://msdn.microsoft.com/en-us/library/h4fa028b(VS.80).aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top