¿La denominación fuerte elimina la necesidad de empacado / ofuscación?

2

Soy nuevo en la programación .NET, y me pregunto, desde una perspectiva de seguridad, si el esquema de denominación fuerte utilizado en los ensamblados .NET elimina completamente la necesidad de otras técnicas de uso común, como empaquetar el código ensamblado. / p>

Para ser claro, estoy hablando de aplicaciones .NET que se ejecutan en el lado del cliente y mi objetivo es asegurarme de que el usuario (cliente) no pueda modificar la aplicación. Este es un problema común para los desarrolladores de software y juegos, y sé que no se puede mitigar al 100%, pero estoy buscando una solución que detenga la mayoría de los crackers.

Si he malinterpretado completamente el uso de nombres fuertes, corríjame y apúnteme en la dirección correcta :)

editar: probablemente también debería mencionar que me preocupa más la integridad de la aplicación, no necesariamente manteniendo los algoritmos ocultos / secretos .

Editado para agregar respuesta gracias a CodeInChaos

Parece que los nombres fuertes están totalmente rotos y no ofrecen ningún tipo de seguridad, dado que el atacante tiene acceso a los ensamblajes en una máquina donde está root. Explicación de nombres importantes y .NET Framework-Rootkits explican esto.

Los ensamblajes en .NET Framework se colocan en carpetas dentro de la GAC con nombres de carpetas correspondientes a la firma cuando están firmados por el autor original. Las firmas nunca se verifican, por lo que si un atacante reemplaza una DLL del framework con la suya y la coloca en una carpeta "correcta", la DLL del atacante será aceptada como legítima. Esto significa, por supuesto, que el atacante puede cambiar las funciones en el marco utilizado para verificar nombres seguros en aplicaciones .NET, y por lo tanto permite que un atacante modifique las aplicaciones .NET con su propio código.

    
pregunta efr4k 16.02.2012 - 10:06
fuente

1 respuesta

2

Es fácil cambiar los ensamblajes firmados, es solo que no tienen una firma válida del autor original después.

Los nombres sólidos ayudan con las versiones (en particular, se requieren para la instalación en el GAC) y son una característica de seguridad en ciertos escenarios de confianza mixta. Pero no ayuda mucho a las personas que tienen todos los derechos sobre la competencia donde se ejecuta su programa.

    
respondido por el CodesInChaos 16.02.2012 - 10:56
fuente

Lea otras preguntas en las etiquetas