Ingeniería inversa

Ya sea reconstruyendo el motor de un coche o diagramando una frase, la gente puede aprender sobre muchas cosas simplemente desmontándolas y volviéndolas a montar. Ese es, en pocas palabras, el concepto que hay detrás de la ingeniería inversa: descomponer algo para entenderlo, construir una copia o mejorarlo.

Un proceso que originalmente se aplicaba sólo al hardware, la ingeniería inversa se aplica ahora al software, a las bases de datos e incluso al ADN humano. La ingeniería inversa es especialmente importante con el hardware y el software informático. Los programas se escriben en un lenguaje, por ejemplo C++ o Java, que es comprensible para otros programadores. Pero para que funcionen en un ordenador, tienen que ser traducidos por otro programa, llamado compilador, a los unos y ceros del lenguaje de la máquina. El código compilado es incomprensible para la mayoría de los programadores, pero hay formas de volver a convertir el código máquina a un formato más amigable para el ser humano, incluyendo una herramienta de software llamada descompilador.

La ingeniería inversa se utiliza para muchos propósitos: como herramienta de aprendizaje; como una forma de hacer productos nuevos y compatibles que sean más baratos que los que hay actualmente en el mercado; para hacer que el software interopere más eficazmente o para unir datos entre diferentes sistemas operativos o bases de datos; y para descubrir las características no documentadas de los productos comerciales.

Un ejemplo famoso de ingeniería inversa es el de la empresa Phoenix Technologies Ltd., con sede en San José, que a mediados de la década de 1980 quería producir una BIOS para PC que fuera compatible con la BIOS propietaria de IBM PC. (Una BIOS es un programa almacenado en el firmware que se ejecuta cuando un PC se pone en marcha; véase Estudio rápido de tecnología, 25 de junio).

Para protegerse de las acusaciones de haber copiado simple (e ilegalmente) la BIOS de IBM, Phoenix aplicó la ingeniería inversa utilizando lo que se denomina un enfoque de «sala blanca» o «muralla china». En primer lugar, un equipo de ingenieros estudió la BIOS de IBM -unos 8 KB de código- y describió todo lo que hacía de la forma más completa posible sin utilizar ni hacer referencia a ningún código real. A continuación, Phoenix incorporó a un segundo equipo de programadores que no tenía conocimiento previo de la BIOS de IBM y que nunca había visto su código. Trabajando sólo a partir de las especificaciones funcionales del primer equipo, el segundo equipo escribió una nueva BIOS que funcionaba como se había especificado.

La BIOS Phoenix resultante era diferente del código de IBM, pero a todos los efectos, funcionaba de forma idéntica. Utilizando el enfoque de sala limpia, incluso si algunas secciones del código eran idénticas, no se infringían los derechos de autor. Phoenix empezó a vender su BIOS a empresas que la utilizaron para crear los primeros PC compatibles con IBM.

Otras empresas, como Cyrix Corp. y Advanced Micro Devices Inc., han realizado con éxito la ingeniería inversa de los microprocesadores de Intel Corp. para fabricar chips compatibles con Intel más baratos.

Pocos sistemas operativos han sido objeto de ingeniería inversa. Con sus millones de líneas de código -en comparación con los aproximadamente 32 KB de las BIOS modernas-, la ingeniería inversa sería una opción costosa.

Pero las aplicaciones están preparadas para la ingeniería inversa, ya que pocos desarrolladores de software publican su código fuente. Técnicamente, una interfaz de programación de aplicaciones (API) debería facilitar el trabajo conjunto de los programas, pero los expertos afirman que la mayoría de las API están tan mal escritas que los creadores de software de terceros no tienen más remedio que aplicar ingeniería inversa a los programas con los que quieren que su software funcione, sólo para garantizar la compatibilidad.

Aspectos éticos

La ingeniería inversa también puede exponer fallos de seguridad y prácticas de privacidad cuestionables. Por ejemplo, la ingeniería inversa de Digital, con sede en Dallas: Convergence Corp. de Dallas reveló que cada lector tiene un número de serie único que permite al fabricante del dispositivo combinar los códigos escaneados con los datos de registro del usuario y, por lo tanto, rastrear los hábitos de cada usuario con gran detalle, una característica que no se había hecho pública anteriormente.

Las recientes medidas legales respaldadas por muchos grandes fabricantes de software y hardware, así como por la industria del entretenimiento, están erosionando la capacidad de las empresas para realizar ingeniería inversa.

«La ingeniería inversa es legal, pero hay dos áreas principales en las que estamos viendo amenazas a la ingeniería inversa», dice Jennifer Granick, directora de la clínica de derecho y tecnología de la Facultad de Derecho de Stanford en Palo Alto, California. Una de las amenazas, que aún no ha sido probada en los tribunales, proviene de las licencias de envoltura que prohíben explícitamente que cualquier persona que abra o utilice el software realice ingeniería inversa, dice.

La otra amenaza proviene de la Ley de Derechos de Autor del Milenio Digital (DMCA), que prohíbe la creación o difusión de herramientas o información que puedan utilizarse para romper las salvaguardias tecnológicas que protegen el software de ser copiado. El pasado mes de julio, basándose en esta ley, Adobe Systems Inc., con sede en San José, pidió al FBI que detuviera a Dmitry Sklyarov, un programador ruso, cuando se encontraba en Estados Unidos para asistir a una conferencia. Sklyarov había trabajado en un software que descifraba la encriptación de archivos de libros electrónicos de Adobe.

El hecho es que, incluso la ingeniería inversa legal a menudo requiere romper esas salvaguardias, y la DMCA permite la ingeniería inversa con fines de compatibilidad.

«Pero no se permite ver si el software hace lo que se supone que tiene que hacer», dice Granick, ni se puede mirar con fines de investigación científica. Ofrece una analogía: «Tienes un coche, pero no se te permite abrir el capó».

1pixclear.gif

El enfoque de sala limpia para la ingeniería inversa.Enfoque de sala limpia para la ingeniería inversa

El enfoque de sala limpia para la ingeniería inversaEngineering
Una persona o grupo desmonta un dispositivo y describe lo que hace con el mayor detalle posible a un nivel de abstracción superior al código específico. Esa descripción se entrega entonces a otro grupo o persona que no tiene absolutamente ningún conocimiento del dispositivo específico en cuestión. Esta segunda parte construye entonces un nuevo dispositivo basado en la descripción. El resultado final es un nuevo dispositivo que funciona de forma idéntica al original, pero que ha sido creado sin posibilidad de copiar específicamente el original.

Schwartz es un escritor independiente en Arlington, Mass. Contacte con él en [email protected].

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *