2008-08-28 14 views
8

Me parece que la ofuscación es una idea que cae en algún lugar del campo de "seguridad por oscuridad" o "falso sentido de protección". Para proteger la propiedad intelectual, hay derechos de autor; para evitar que se encuentren problemas de seguridad, existe que soluciona esos problemas. En resumen, lo considero como una solución técnica a un problema social. Those almost never work.(¿Por qué) debo usar ofuscación?

Sin embargo, parezco ser el único en nuestro equipo de desarrollo en sentirme así, así que estoy equivocado o simplemente necesito argumentos convincentes. Nuestro producto usa .NET, y un desarrollador sugirió .NET Reactor (que, por cierto, was suggested in this SO thread as well).

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

¿Básicamente, arrojas todas las ventajas de bytecode de una vez?

¿Hay buenas ingeniería ventajas para la ofuscación?

Respuesta

4

Si se atiene a la ofuscación pura del código administrado, puede reducir bastante el tamaño de un ensamblaje, y las clases/nombres de función ofuscados (plegados a una sola letra) significan una menor huella de memoria. Esto es casi siempre insignificante, pero tiene un impacto (y se usa) en algunos dispositivos móviles/integrados (aunque principalmente en Java).

3

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

6

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

Ofuscación, por lo tanto, debe detener a las personas que no tienen el tiempo, dinero o esfuerzo para obtener su fuente, los transeúntes pueden llamarlos.

2

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

Pero ofuscar bytecode compilado realmente no me parece útil. Quiero decir, ¿qué intentarías y lograrías? Solo puedo ver que la ofuscación es ligeramente útil en el código de verificación de licencia para evitar que se evite demasiado fácilmente.

2

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

La ofuscación también puede proporcionar otros beneficios adicionales tales como mejoras en el rendimiento y reducción del tamaño del conjunto. Estos serían los ingeniería de los beneficios que está buscando.

13

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

Como usted dice, la ofuscación tiene la intención de abordar un problema social. Y los problemas sociales (o comerciales), a diferencia de los técnicos, rara vez tienen una solución completa. Solo hay grados de éxito para abordar o minimizar el problema.

En este caso, la ofuscación levantará las barreras a alguien descompilación y el robo de su código. Desalienta los ataques casuales y, por inercia, puede hacer que su propiedad intelectual sea menos probable que sea robada. Para hacer una analogía tediosa, un inmovilizador no evita que te roben el auto, pero lo hará menos probable.

Por supuesto, hay un costo, en la capacidad de mantenimiento, (posiblemente) en el rendimiento y lo más importante en lo que es más difícil para los usuarios enviar 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) ¿cuán determinado es probable que un equipo lo ataque?

Por lo tanto, esto 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.

1

uso de cifrado para proteger la información en el camino.

Uso de ofuscación para proteger la información, mientras que su programa aún lo tiene.