.Net y el codigo abierto

Recuero que cuando desarrollaba paginas webs en ASP 3.0, una pregunta común era la de: – Como puedo proteger el código fuente de mis páginas para que no sea "copiable?

El procedimiento era básico y simple. Con solo crear un DLL que compile la funcionalidad de nuestras paginas, nos asegurábamos que el código, especialmente la lógica de negocios, no pudiera ser modificada y/o copiada (en su código), sin nuestra autorización. 

Con la aparición de .Net, un el nuevo modelo de no registro de componentes (entre otros), muchos se confundieron, y aun se confunden, pensando que el DLL (incluso el EXE) creado por .Net es incopiable, su código fuente claro esta.

Esto, posiblemente por motivos similares al planteado anteriormente con las paginas ASP 3.0, y que, como la extensión DLL es igual a la de un Assembly, por descarte se cree que funciona de la misma forma. 

Lamentablemente, esto no es así. Microsoft, con .Net ha roto la barrera que lo tenía como el "hijo del diablo", como muchos lo llamaban, al liberar el código fuente de todas las aplicaciones que se crean con .Net. Digo "hijo del diablo" porque hasta este punto, muchos usaban a Microsoft como el ejemplo del capitalismo extremo y el egoísmo absoluto, en lo que a desarrollo de software se trataba.

Para entender esto, debemos ver que pasa después que compilamos nuestras aplicaciones. 

.Net, o los distintos compiladores de los lenguajes que trabajan con .Net, compilan el código fuente en un lenguaje intermedio, o sea, un lenguaje que no es, ni código fuente, no código de maquina (hablo como hace 15 años atrás), o sea, que no es ni nuestro código, ni un código que solo entienda Windows.

Como pueden imaginar, esto nos otorga un par de ventajas, por un lado, el código intermedio (IL, o para Microsoft, MSIL), es el mismo sin importar el lenguaje en el cual haya sido escrito. O sea, si trabajamos con VB.net, así como C#, el IL resultante es igual (o similar para algunos). Esto garantiza que sin importar el lenguaje, el resultado sea básicamente el mismo. Y por otro lado, al no ser un código encasillado en un sistema operativo, este puede ser ejecuta en mas de un sistema operativo sin problemas. Claro, siempre y cuando tengamos el motor de .Net para ese S.O. (Señores de Java, sin comentarios) 

Un ejemplo de este IL, lo pueden ver en la publicación de Generics (Mas abajo)

Entonces, sin perder el foco, el IL, entre sus características, que ya nombramos, esta la de que, sin importar el lenguaje, el resultado es el mismo, por lo que es posible afirmar que IL creado en un lenguaje, podría ser pasado a otro lenguaje. Justamente, el motor de .Net, para ejecutar una aplicación (.net), interpreta el IL, lo compila en su versión definitiva, esto es, código de maquina, y lo ejecuta. Pero, este proceso de Código Fuente, a IL, a Código de Maquina, puede ser fácilmente revertido. O sea, si tenemos un IL, lo podemos pasar a código fuente sin más. 

Para esto, pueden ver Net Reflector (http://www.aisto.com/roeder/dotnet/), el cual sirve para esto, o usar la herramienta ILDSAM, del FrameWork.net para ver el IL.

No es mi idea hacerle publicidad a Net Reflector, pero para darles una idea, este puede "traducir" IL a código fuente, como por ejemplo: VB.net, C#, J#, Delphi, etc. 

Y para que entendamos mas el asunto de código abierto, vale acotar que hasta el FrameWork (librería de clases y esas yerbas), también es accesible y visualizable en el lenguaje que mas les guste.

Entonces, como hacemos para proteger el código? No pensaran que, para aquellos que quieren seguir protegiendo sus IDEAS (mejor no digo mas, porque se arma grande…), puedan seguir haciéndolo. 

Existen herramientas que sirven para "marear", tanto al lector humano de código IL (si, con un poco de dolor de cabeza, uno, puede entender el IL), como a los lectores por software, y que no puedan descifrar el código.

Esta técnica/herramienta es la ofuscación, que del ingles y aplicado a .Net, se llama DotFuscation. No voy a entrar en detalle sobre como trabaja, para eso pueden leerlo por ustedes mismos en http://www.preemptive.com/products/dotfuscator/ 

Debemos aclarar que Visual Studio.net viene con una versión simple de esta herramienta, para aquellos que quieran empezar a usarla.

Quería tocar este tema debido a que aun existen empresas, y personas que creen que su código fuente esta seguro. No porque sea obligación proteger el código (no quiero tirarme arriba a los de open source), si no, porque existen personas que creen que así debería ser, y por consiguiente, están desparramando código fuente muy seguros de que no es así.



Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s