Menubar

miércoles, 17 de febrero de 2016

Entendiendo que es la ingeniería inversa de sala limpia

Por J. Manuel Mar H. Editar
Compartir en Facebook
Compartir en Twitter
Compartir en MeWe
Enviar a Reddit
Guardar en Internet archive
Guardar en  archive.today
Enviar por email
Aplicando ingeniería inversa  Recientemente la Fundación ReactOS (http://www.reactos.org) ha liberado la versión 0.4 de su sistema operativo, el cual ambiciona ser un clon del sistema Windows, pero la diferencia es que es de código fuente libre (a diferencia del sistema de Microsoft). ¿Cómo es posible recrear el funcionamiento de todas las librerías y archivos de un sistema, cuyos detalles de su implementación son secretos?. Pues mediante la ingeniería inversa, pero ¿qué es?, ¿es ética?, ¿qué ventajas ofrece?. Sigue leyendo este post para responder a estas dudas.

  El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue fabricado. No tiene por objetivo copiar descaradamente los diseños de alguien más, sinó de entender como funciona para luego crear algo "parecido". Como es sabido el código fuente de Windows es cerrado, es decir nadie, excepto Microsoft sabe como funciona internamente, nadie, excepto Microsoft puede corregir errores o hacer mejoras, y por supuesto, nadie puede tomar ideas desde el código fuente de Microsoft, no sin enfrentar una demanda.

Publicidad



  De manera que crear un clon de Windows desde cero es muy difícil, sin embargo gracias a la ingeniería inversa ahora es posible tener un "clon" que haga exactamente lo mismo (o casi lo mismo) pero sin que Microsoft pueda demandar a sus desarrolladores, pues el código fuente no es igual. Así es, estamos hablando del proyecto Reactos. Sin embargo el objetivo de este post no es hablar de Reactos, sinó de la técnica de desarrollo que ha estado detrás del mismo, la ingeniería inversa y concretamente el método de Sala Limpia.1 2

  Diseño en sala limpia consiste en que, a diferencia de la ingeniería inversa clásica, donde se "echa un vistazo" a un producto, se investiga como funciona y luego se implementa algo parecido, el diseño de sala limpia no permite eso directamente. Una empresa pudiera argumentar que "mirar" el código fuente de su producto es igual a copiar su producto, de manera que la ingeniería inversa de sala limpia permite que alguien de un vistazo al código fuente o diseño interno de un producto, pero no puede esa persona (o personas) implementar un clon directamente, no se puede porque se corre el riesgo de diseñar algo muy parecido al producto original, quizá por estar influenciados por el diseño base.

  ¿Entonces como se clona un producto pero sin infligir alguna ley?, pues bien, la ingería inversa de sala limpia obliga a que aquella persona que ya ha mirado el código fuente diseñe solamente un algoritmo o un diseño burdo del producto a clonar y que recrea su funcionamiento (no es el código fuente original, ni tampoco este refleja el código en cuestión, es solo un algoritmo genérico pero que permite entender como funciona el producto inicial). Ahora, ya teniendo el algoritmo genérico sobre determinada funcionalidad a imitar, otros desarrolladores "crean" un programa que implementa el algoritmo, así se recrean las funciones de Windows sin que se viole la licencia del mismo, pues el código fuente (de Reactos en este caso) no es igual al de Windows, pues en ningún momento el desarrollador de dicha función ha mirado el código fuente original, ingenioso, ¿verdad?3

(Nota: esto permite no tener problemas con la licencia sobre el código fuente, que por lo general no permite a nadie no autorizado a mirar el desarrollo del mismo, pero no protege contra la violación de patentes para una determinada tecnología)

  Ahora que hemos entendido que es la ingeniería inversa de sala limpia cabe preguntarnos, ¿es legal?, ¿es ética?. Aclaro que no soy experto en el tema, así que trataré de hablar lo más claro posible y que por lo menos despejemos algunas dudas.

  Es legal pues no es una copia directa de un producto, sinó una reimplementación del mismo, ejemplo: En los primeros años de la computación personal solo había equipos de marca, obviamente las empresas que se dedican a esto no comparten con el público sus avances, pues al tenerlos en secreto les garantiza tener una ventaja sobre los competidores. A mi juicio eso es monopolio y los monopolios son malos, pues acaparan todo el mercado, no permiten la libre competencia y tampoco le dan la oportunidad al cliente de probar alternativas, que por cierto es el que paga, así que está en su derecho de elegir.

  De manera que mediante la ingeniería inversa (mirando y entendiendo como funcionaban estas computadoras) fue posible "crear" computadoras que hicieran lo mismo (o casi lo mismo) que las computadoras de marca, pero a una fracción de su costo (un servidor tuvo una de estas allá por inicios de la década pasada).4 ¿Qué habría pasado si nunca se hubiera implementado esto?, simple, tendriamos que desembolsar más dinero por algo que no vale tanto (el precio de las computadoras clones en aquel entonces lo prueba).

  ¿Es ética?, bueno, aquí ya depende de como estemos copiando el diseño original. Si vamos a hacer un clon exacto pues os obvio que no estamos haciendo algo bueno, pero si solo vamos a "inspirarnos" y a tomar ideas para luego hacer algo nuevo entonces no hay problema, no se pueden patentar ideas (o no debería poderse), de manera que, si imitamos el funcionamiento de un producto pero sin que sea una copia burda no debe haber ningún inconveniente, es libre competencia, algo a lo que todos tenemos derecho.

Ventajas Ingeniería Inversa5

  • Reducir la complejidad del sistema.
  • Generar vistas alternativas.
  • Recuperar la información perdida (cambios que no se documentaron en su momento).
  • Detectar efectos laterales.
  • Facilitar la reutilización.

Desventajas Ingeniería Inversa
  • La única fuente confiable es el código que está poco (o nada) documentado y se ha perdido contacto con los diseñadores y/o programadores
  Espero que con este tema se hallan despejado un poquito las dudas al respecto y espero del mismo modo, yo, un servidor haber aportado un granito de arena al conocimiento de ustedes, gracias.

Procedencia de las imágenes:
File: Ingeniería inversa a un OVNI
URL: http://www.espaciosocultos.com/wp-content/uploads/2011/07/Ingenieria-2BInversa.jpg
Licencia: Creative Commons

Referencias:

Reactos
Cómo es ReactOS, el "clon de Windows" de código abierto
Diseño en sala limpia
Compatible IBM PC
Ing.softwater


Licencia de Creative Commons Esta obra está bajo una licencia de Creative Commons Reconocimiento 4.0 Internacional, haga clic aquí para conocer más detalles.


Compartir:



Directorio de blogs, ¡agrega el tuyo!
Programas para el mantenimiento de Windows
Blog de seguridad informatica