Pregunta

Me parece que la ofuscación es una idea que cae en algún lugar del campo de la "seguridad por oscuridad" o del "falso sentido de protección".Para proteger la propiedad intelectual, existen los derechos de autor;Para evitar que se encuentren problemas de seguridad, hay solucionando esos problemas.En resumen, lo considero una solución técnica a un problema social. Esos casi nunca funcionan.

Sin embargo, parece que soy el único en nuestro equipo de desarrollo que se siente así, así que o me equivoco o simplemente necesito argumentos convincentes.Nuestro producto utiliza .NET y un desarrollador sugirió .NET Reactor (que, dicho sea de paso, También se sugirió en este hilo SO.).

.NET Reactor detiene completamente cualquier descompilación mezclando cualquier ensamblado .NET puro (escrito en C#, VB.NET, Delphi.NET, J#, MSIL...) con código de máquina nativo.

Entonces, básicamente, ¿desechas todas las ventajas del código de bytes de una sola vez?

hay buenos ingeniería ¿Beneficios de la ofuscación?

¿Fue útil?

Solución

Publiqué una pregunta que podría ayudarle, ya que analiza algunos de los problemas:Debería-preocuparme-por-ofuscar-mi-código-de-red

Otros consejos

Usted preguntó por razones de ingeniería, por lo que, estrictamente hablando, esta no es una respuesta a la pregunta.Pero creo que es una aclaración válida.

Como usted dice, la ofuscación tiene como objetivo abordar un problema social.Y los problemas sociales (o empresariales), a diferencia de los técnicos, rara vez tienen una solución completa.Sólo hay grados de éxito a la hora de abordar o minimizar el problema.

En este caso, la ofuscación levantará las barreras para que alguien descompile y robe su código.Desalentará los ataques casuales y, por inercia, puede hacer que sea menos probable que roben su propiedad intelectual.Para hacer una analogía aburrida, un inmovilizador no evita que le roben el automóvil, pero hará que sea menos probable.

Por supuesto, hay un costo en mantenibilidad, (posiblemente) en rendimiento y, lo más importante, en dificultar que los usuarios envíen informes de errores con precisión.

Como dijo GateKiller, la ofuscación no impedirá que un equipo determinado se descompile, pero (y depende de cuál sea su producto) ¿qué tan determinado es probable que un equipo lo ataque?

Entonces, esta no es una solución técnica a un problema social, es una decisión técnica que añade una influencia a una estructura social compleja.

Si un gran equipo de programadores realmente quiere acceder a su código fuente y tiene el tiempo, el dinero y el esfuerzo, entonces tendrán éxito.

La ofuscación, por lo tanto, debería detener a las personas que no tienen el tiempo, el dinero o el esfuerzo para obtener su fuente, como podrían llamarlos los transeúntes.

Si se apega a la ofuscación pura del código administrado, puede reducir bastante el tamaño del ensamblaje, y los nombres de clases/funciones ofuscados (contraídos en letras individuales) significan una menor huella de memoria.Esto casi siempre es insignificante, pero tiene un impacto (y se usa) en algunos dispositivos móviles/integrados (aunque principalmente en Java).

Un beneficio potencial de ingeniería es que, en algunos casos, la ofuscación puede crear ejecutables más pequeños u otros artefactos, por ejemplo.ofuscar javascript da como resultado archivos más pequeños (porque todas las variables se denominan "a" y "b" en lugar de "descriptiveNameOne" y se eliminan todos los espacios en blanco, etc.).Esto da como resultado tiempos de carga más rápidos para las páginas web que utilizan JavaScript ofuscado.Obviamente esto no se aplica (tanto) en el mundo .NET, pero es un ejemplo de una situación en la que existe un beneficio directo de ingeniería.

Si bien no está relacionado con .net, consideraría la ofuscación en Javascript y posiblemente en otros lenguajes interpretados.Javascript se beneficia de la ofuscación porque reduce el ancho de banda necesario y los tokens que el analizador debe leer.

Pero ofuscar el código de bytes compilado no me parece tan útil.Quiero decir, ¿qué intentarías y lograrías?Solo veo que la ofuscación es ligeramente útil en el código de verificación de licencias para evitar que se eluda con demasiada facilidad.

La razón principal para utilizar la ofuscación es proteger la propiedad intelectual como usted ha indicado.Por lo general, es mucho más rentable para una empresa comprar un producto de ofuscación como .NET Reactor que intentar hacer cumplir legalmente sus derechos de autor.

La ofuscación también puede proporcionar otros beneficios más incidentales, como mejoras de rendimiento y reducción del tamaño del ensamblaje.Estos serían los ingeniería beneficios que buscas.

Utilice cifrado para proteger la información en el camino.

Utilice la ofuscación para proteger la información mientras su programa todavía la tenga.

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