La firma de ensamblados .NET: ¿Esto protege mi montaje de la manipulación de verdad?

StackOverflow https://stackoverflow.com/questions/377619

  •  22-08-2019
  •  | 
  •  

Pregunta

Me estoy poniendo en práctica un sistema de "bloqueo" en mi aplicación que protege mi aplicación en contra de ser copiado y utilizado ilegalmente. El sistema verifica la firma de un código basado en hardware y espera que sea firmado con una clave privada que sólo mi compañía es propietaria. (La aplicación tiene la clave pública para validar la firma.)

Quiero para asegurarse de que nadie cambia mi mecanismo de bloqueo en la aplicación, por lo que quiero firmar el montaje de mi aplicación y yo creo que tiene sentido.

  1. Ya que no he visto el CLR jamás hablar de la firma de un ensamblaje de ser válido, que quiere asegurarse de que este sistema realmente funciona. ¿Lo hace? ¿Qué debo hacer para que funcione?
  2. Puede un atacante concentrar sus esfuerzos en el CLR para que no se preocupan por mi firma? Es decir, si no puede alterar el código porque he firmado, puede que manipule CLR?
  3. En general, me gustaría conocer su experiencia sobre este tipo de caja fuerte guardias y tecnologías de protección. ¿Puede alguien sugerir algo más?
¿Fue útil?

Solución

firma Asamblea está diseñado para permitir que las aplicaciones / conjuntos para hacer referencia a un ensamblado y asegúrese de que reciban el conjunto que hace referencia a un principio. Si alguien quisiera, que en teoría podría descompilar toda su aplicación y volver a compilar sin firma. . (Es decir: podían volver a compilar el Montaje de referencia de modo que hace referencia una versión sin signo de la ensamblaje de referencia )

Entonces serían capaces de modificar el código como querían, porque el cliente (exe) sería ahora hacer referencia a una DLL sin firmar (o 're-firmado').

Para hacer el proceso de descompilación y la recompilación más difícil, usted podría intentar crear un modo mixto de montaje C ++ / CLI que contiene código de ambos gestionados y nativas. Pero sí ... en última instancia, las personas tienen todos los binarios a mano y con el suficiente esfuerzo probablemente puede recibir todo el año cualquier sistema de licencias que piensa hacia arriba.

Otros consejos

Hay una cantidad certaining de error sobre los ensamblados firmados. firma Asamblea no es, como mackenir señaló, un mecanismo seguro para ser utilizado para evitar que sus montajes de ser manipulado. En el siguiente artículo sobre CodeProject da un buen tratamiento del tema:

http://www.codeproject.com/KB/security/StrongNameExplained.aspx

La firma de su código sólo permite la detección de manipulaciones, que no lo impide. Alguien que sabe lo que están haciendo puede retirar su firma y si es necesario añadir su propio.

En realidad la mayoría de los esquemas de protección de copia son una pérdida de tiempo y pueden ser subvertidos, y también tienden a molestar a la mierda de sus clientes de pago. En última instancia no se puede evitar que alguien de la modificación y funcionamiento de su código en el hardware que controlan. Simplemente hacer que sea lo suficientemente difícil que es más fácil ir al departamento de compras y obtener un cheque por escrito, y que es difícil de olvidar que no se tiene una copia con licencia. Aquellos que se preocupan con el tiempo se paga, y aquellos que no lo hacen nunca lo hará.

También tenga en cuenta que incluso si usted piensa que la mayoría de la gente no se molestará en su esquema de craqueo, o no tener la habilidad para hacerlo, no importa. Porque una vez que una persona ha subvertido su esquema de protección de copia, pueden hacer que esté disponible en un sitio de torrent para los que no tienen la habilidad para hacerlo, y es más de juego.

Una técnica que puede utilizar es para evitar la manipulación es utilizar la clave pública del ensamblado para cifrar partes esenciales de su software, tales como los parámetros de aplicación / algoritmo. Si se ha cambiado la clave pública, el descifrado no funcionará y su aplicación se bloqueará.

Algunos ofuscadores como Crypto Obfuscator utilizar esta técnica con la cadena de cifrado característica. Se utiliza la clave pública del ensamblado para cifrar todas las cadenas. Si la clave pública se ha cambiado o eliminado, el descifrado fallará y su aplicación incluso no empezar.

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