De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Ingeniería inversa , también llamada ingeniería inversa o ingeniería inversa ; es similar a la investigación científica , con la única diferencia de que la investigación científica se lleva a cabo en un fenómeno natural . [1] : 3

La ingeniería inversa es aplicable en los campos de la ingeniería informática , ingeniería mecánica , ingeniería electrónica , ingeniería de software , ingeniería química , [2] y la biología de sistemas . [3]

Resumen [ editar ]

Hay muchas razones para realizar ingeniería inversa en varios campos. La ingeniería inversa tiene su origen en el análisis de hardware para obtener ventajas comerciales o militares. [4] : 13 Sin embargo, el proceso de ingeniería inversa, como tal, no se ocupa de crear una copia o cambiar el artefacto de alguna manera. Es solo un análisis para deducir características de diseño de productos con poco o ningún conocimiento adicional sobre los procedimientos involucrados en su producción original. [4] : 15

En algunos casos, el objetivo del proceso de ingeniería inversa puede ser simplemente una redocumentación de los sistemas heredados . [4] : 15 [5] Incluso cuando el producto de ingeniería inversa es el de un competidor, el objetivo puede no ser copiarlo sino realizar un análisis de la competencia . [6] La ingeniería inversa también se puede utilizar para crear productos interoperables y, a pesar de algunas leyes de los Estados Unidos y la Unión Europea estrechamente adaptadas, la legalidad del uso de técnicas específicas de ingeniería inversa para ese propósito ha sido muy controvertida en los tribunales de todo el mundo durante más de dos décadas. [7]

La ingeniería inversa del software puede ayudar a mejorar la comprensión del código fuente subyacente para el mantenimiento y mejora del software, se puede extraer información relevante para tomar una decisión para el desarrollo del software y las representaciones gráficas del código pueden proporcionar vistas alternativas con respecto al código fuente. que puede ayudar a detectar y corregir un error de software o una vulnerabilidad. Con frecuencia, a medida que se desarrolla algún software, su información de diseño y sus mejoras se pierden con el tiempo, pero esa información perdida generalmente se puede recuperar con ingeniería inversa. El proceso también puede ayudar a reducir el tiempo necesario para comprender el código fuente, reduciendo así el costo total del desarrollo del software. [8]La ingeniería inversa también puede ayudar a detectar y eliminar un código malicioso escrito en el software con mejores detectores de código. La reversión de un código fuente se puede utilizar para encontrar usos alternativos del código fuente, como detectar la replicación no autorizada del código fuente donde no estaba destinado a ser utilizado, o revelar cómo se construyó un producto de la competencia. [1] Ese proceso se usa comúnmente para "descifrar" software y medios para eliminar su protección contra copia , [1] : 7 o para crear una copia posiblemente mejorada o incluso una imitación , que suele ser el objetivo de un competidor o un pirata informático. . [1] : 8

Los desarrolladores de malware a menudo utilizan técnicas de ingeniería inversa para encontrar vulnerabilidades en un sistema operativo y crear un virus informático que pueda aprovechar las vulnerabilidades del sistema. [1] : 5 La ingeniería inversa también se está utilizando en el criptoanálisis para encontrar vulnerabilidades en el cifrado de sustitución , el algoritmo de clave simétrica o la criptografía de clave pública . [1] : 6

Hay otros usos para la ingeniería inversa:

  • Interfaz . La ingeniería inversa se puede utilizar cuando se requiere que un sistema se conecte a otro sistema y se va a establecer cómo negociarían ambos sistemas. Estos requisitos suelen existir para la interoperabilidad .
  • Espionaje militar o comercial . Conocer las últimas investigaciones de un enemigo o competidor al robar o capturar un prototipo y desmantelarlo puede resultar en el desarrollo de un producto similar o una mejor contramedida contra él.
  • Obsolescencia . Los circuitos integrados a menudo se diseñan en sistemas patentados y se construyen en líneas de producción, que se vuelven obsoletas en solo unos pocos años. Cuando los sistemas que utilizan esas piezas ya no se pueden mantener debido a que las piezas ya no se fabrican, la única forma de incorporar la funcionalidad en la nueva tecnología es realizar ingeniería inversa del chip existente y luego rediseñarlo utilizando herramientas más nuevas utilizando el conocimiento adquirido como Una guía. Otro problema originado por la obsolescencia que puede resolverse mediante ingeniería inversa es la necesidad de dar soporte (mantenimiento y suministro para operación continua) a los dispositivos heredados existentes que ya no son compatibles con el fabricante de su equipo original . El problema es particularmente crítico en las operaciones militares.
  • Análisis de seguridad del producto . Eso examina cómo funciona un producto determinando las especificaciones de sus componentes y estima los costos e identifica una posible infracción de patente . También parte del análisis de seguridad del producto es adquirir datos confidenciales desmontando y analizando el diseño de un componente del sistema. [9] Otra intención puede ser eliminar la protección contra copias o eludir las restricciones de acceso.
  • Inteligencia técnica competitiva . Eso es entender lo que hace realmente el competidor, más que lo que dice que está haciendo.
  • Ahorro de dinero . Averiguar lo que puede hacer una pieza electrónica puede evitar que un usuario compre un producto por separado.
  • Reutilización . Los objetos obsoletos se reutilizan de una manera diferente pero útil.

Situaciones comunes [ editar ]

Máquinas [ editar ]

A medida que el diseño asistido por computadora (CAD) se ha vuelto más popular, la ingeniería inversa se ha convertido en un método viable para crear un modelo virtual 3D de una pieza física existente para su uso en CAD 3D, CAM , CAE u otro software. [10] El proceso de ingeniería inversa implica medir un objeto y luego reconstruirlo como un modelo 3D. El objeto físico se puede medir utilizando tecnologías de escaneo 3D como MMC , escáneres láser , digitalizadores de luz estructurada o escaneo de TC industrial (tomografía computarizada). Los datos medidos solos, generalmente representados como una nube de puntos, carece de información topológica e intención de diseño. El primero se puede recuperar convirtiendo la nube de puntos en una malla de caras triangulares. La ingeniería inversa tiene como objetivo ir más allá de producir una malla de este tipo y recuperar la intención del diseño en términos de superficies analíticas simples cuando sea apropiado (planos, cilindros, etc.), así como posiblemente superficies NURBS para producir un modelo CAD de representación de límites. La recuperación de dicho modelo permite modificar un diseño para cumplir con los nuevos requisitos, generar un plan de fabricación, etc.

El modelado híbrido es un término de uso común cuando NURBS y el modelado paramétrico se implementan juntos. El uso de una combinación de superficies geométricas y de forma libre puede proporcionar un método poderoso de modelado 3D. Las áreas de datos de forma libre se pueden combinar con superficies geométricas exactas para crear un modelo híbrido. Un ejemplo típico de esto sería la ingeniería inversa de una culata de cilindros, que incluye características de fundición de forma libre, como camisas de agua y áreas mecanizadas de alta tolerancia. [11]

Las empresas también utilizan la ingeniería inversa para llevar la geometría física existente a entornos de desarrollo de productos digitales, para hacer un registro digital en 3D de sus propios productos o para evaluar los productos de la competencia. Se utiliza para analizar cómo funciona un producto, qué hace, qué componentes tiene; costo estimado; identificar una posible infracción de patente ; etc.

La ingeniería de valor , una actividad relacionada que también es utilizada por las empresas, implica deconstruir y analizar productos. Sin embargo, el objetivo es encontrar oportunidades de reducción de costos.

Software [ editar ]

En 1990, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) definió (software) la ingeniería inversa (SRE) como "el proceso de analizar un sistema sujeto para identificar los componentes del sistema y sus interrelaciones y crear representaciones del sistema en otra forma o en un nivel superior de abstracción "en el que el" sistema sujeto "es el producto final del desarrollo de software. La ingeniería inversa es un proceso de examen únicamente, y el sistema de software que se está considerando no se modifica, que de otro modo sería rediseño o reestructuración. La ingeniería inversa se puede realizar desde cualquier etapa del ciclo del producto, no necesariamente desde el producto final funcional. [8]

Hay dos componentes en la ingeniería inversa: redocumentación y recuperación del diseño. La redocumentación es la creación de una nueva representación del código informático para que sea más fácil de entender. Mientras tanto, la recuperación del diseño es el uso de deducción o razonamiento del conocimiento general o la experiencia personal del producto para comprender plenamente su funcionalidad. [8] También puede verse como "retroceder a lo largo del ciclo de desarrollo". [12] En este modelo, el resultado de la fase de implementación (en forma de código fuente) se somete a ingeniería inversa a la fase de análisis, en una inversión del modelo de cascada tradicional . Otro término para esta técnica es comprensión de programas . [5]La Conferencia de trabajo sobre ingeniería inversa (WCRE) se ha celebrado anualmente para explorar y ampliar las técnicas de la ingeniería inversa. [1] [13] La ingeniería de software asistida por computadora (CASE) y la generación automatizada de código han contribuido enormemente en el campo de la ingeniería inversa. [1]

La tecnología anti-manipulación de software , como la ofuscación, se utiliza para disuadir tanto la ingeniería inversa como la reingeniería de software propietario y sistemas impulsados ​​por software. En la práctica, surgen dos tipos principales de ingeniería inversa. En el primer caso, el código fuente ya está disponible para el software, pero se descubren aspectos de nivel superior del programa, que quizás están mal documentados o documentados pero que ya no son válidos. En el segundo caso, no hay código fuente disponible para el software, y cualquier esfuerzo para descubrir un código fuente posible para el software se considera ingeniería inversa. El segundo uso del término es más familiar para la mayoría de las personas. La ingeniería inversa del software puede hacer uso del diseño de la sala limpia técnica para evitar la infracción de derechos de autor.

En una nota relacionada, las pruebas de caja negra en ingeniería de software tienen mucho en común con la ingeniería inversa. El probador generalmente tiene la API, pero tiene el objetivo de encontrar errores y características no documentadas atacando el producto desde afuera. [14]

Otros propósitos de la ingeniería inversa incluyen la auditoría de seguridad, la eliminación de la protección contra copias (" craqueo "), la elusión de las restricciones de acceso a menudo presentes en la electrónica de consumo , la personalización de sistemas integrados (como los sistemas de gestión del motor), las reparaciones internas o las actualizaciones, la habilitación de características adicionales en hardware "dañado" de bajo costo (como algunos conjuntos de chips de tarjetas gráficas), o incluso mera satisfacción de la curiosidad.

Software binario [ editar ]

La ingeniería inversa binaria se realiza si el código fuente de un software no está disponible. [1] Este proceso a veces se denomina ingeniería de código inverso o RCE. [15] Por ejemplo, la descompilación de binarios para la plataforma Java se puede lograr usando Jad. Un caso famoso de ingeniería inversa fue la primera implementación no IBM del BIOS de PC , que lanzó la histórica industria compatible con IBM PC que ha sido la plataforma de hardware de computadora abrumadoramente dominante durante muchos años. La ingeniería inversa de software está protegida en los EE. UU. Por la excepción de uso justo en la ley de derechos de autor. [16] El software Samba , que permite a los sistemas que no ejecutan sistemas Microsoft Windows compartir archivos con sistemas que lo ejecutan, es un ejemplo clásico de ingeniería inversa de software [17], ya que el proyecto Samba tuvo que realizar ingeniería inversa en información no publicada sobre cómo El intercambio de archivos de Windows funcionó para que las computadoras que no son de Windows pudieran emularlo. El proyecto Wine hace lo mismo para la API de Windows , y OpenOffice.org es una de las partes que lo hace para los formatos de archivo de Microsoft Office . El ReactOSEl proyecto es aún más ambicioso en sus objetivos al esforzarse por brindar compatibilidad binaria (ABI y API) con los sistemas operativos Windows actuales de la rama NT, lo que permite que el software y los controladores escritos para Windows se ejecuten en un software libre de ingeniería inversa de sala limpia. ( GPL ) contraparte. WindowsSCOPE permite realizar ingeniería inversa de todo el contenido de la memoria en vivo de un sistema Windows, incluida una ingeniería inversa gráfica de nivel binario de todos los procesos en ejecución.

Otro ejemplo clásico, si no bien conocido, es que en 1987 Bell Laboratories realizó ingeniería inversa del Mac OS System 4.1, que originalmente se ejecutaba en Apple Macintosh SE , para que pudiera ejecutarlo en sus propias máquinas RISC. [18]

Técnicas de software binario [ editar ]

La ingeniería inversa del software se puede lograr mediante varios métodos. Los tres grupos principales de ingeniería inversa de software son

  1. Análisis a través de la observación del intercambio de información, más frecuente en la ingeniería inversa de protocolos, que implica el uso de analizadores de bus y rastreadores de paquetes , como para acceder a un bus de computadora o una conexión de red de computadora y revelar los datos de tráfico allí. A continuación, se puede analizar el comportamiento del bus o la red para producir una implementación independiente que imite ese comportamiento. Eso es especialmente útil para controladores de dispositivos de ingeniería inversa . A veces, la ingeniería inversa en sistemas integrados es asistida en gran medida por herramientas introducidas deliberadamente por el fabricante, como puertos JTAG u otros medios de depuración. En Microsoft Windows, los depuradores de bajo nivel como SoftICE son populares.
  2. Desmontaje utilizando un desensamblador , lo que significa que el lenguaje de máquina en bruto del programa se lee y se entiende en sus propios términos, solo con la ayuda de mnemotécnicos en lenguaje de máquina . Funciona en cualquier programa de computadora, pero puede llevar bastante tiempo, especialmente para aquellos que no están acostumbrados al código de máquina. El desensamblador interactivo es una herramienta particularmente popular.
  3. Descompilación mediante un descompilador , un proceso que intenta, con resultados variables, recrear el código fuente en algún lenguaje de alto nivel para un programa solo disponible en código máquina o código byte .

Clasificación de software [ editar ]

La clasificación de software es el proceso de identificar similitudes entre diferentes binarios de software (como dos versiones diferentes del mismo binario) que se utiliza para detectar relaciones de código entre muestras de software. La tarea se hacía tradicionalmente de forma manual por varias razones (como el análisis de parches para la detección de vulnerabilidades y la infracción de derechos de autor ), pero ahora se puede realizar de forma algo automática para un gran número de muestras.

Este método se utiliza principalmente para tareas de ingeniería inversa largas y exhaustivas (análisis completo de un algoritmo complejo o una gran pieza de software). En general, la clasificación estadística se considera un problema difícil, lo que también es cierto para la clasificación de software, y hay pocas soluciones / herramientas que manejen bien esta tarea.

Código fuente [ editar ]

Varias herramientas UML se refieren al proceso de importar y analizar el código fuente para generar diagramas UML como "ingeniería inversa". Consulte Lista de herramientas UML .

Aunque UML es un enfoque para proporcionar "ingeniería inversa", los avances más recientes en las actividades de estándares internacionales han dado como resultado el desarrollo del Knowledge Discovery Metamodel (KDM). El estándar ofrece una ontología para la representación intermedia (o abstraída) de construcciones de lenguaje de programación y sus interrelaciones. Un grupo de gestión de objetosestándar (en camino de convertirse también en un estándar ISO), KDM ha comenzado a afianzarse en la industria con el desarrollo de herramientas y entornos de análisis que pueden ofrecer la extracción y análisis de código fuente, binario y de bytes. Para el análisis de código fuente, la arquitectura de estándares granulares de KDM permite la extracción de flujos de sistemas de software (datos, control y mapas de llamadas), arquitecturas y conocimiento de la capa empresarial (reglas, términos y procesos). El estándar permite el uso de un formato de datos común (XMI) que permite la correlación de las diversas capas de conocimiento del sistema para un análisis detallado (como causa raíz, impacto) o análisis derivado (como extracción de procesos comerciales). Aunque los esfuerzos por representar construcciones de lenguaje pueden ser interminables debido a la cantidad de lenguajes, la continua evolución de los lenguajes de software,y el desarrollo de nuevos lenguajes, el estándar permite el uso de extensiones para soportar el amplio conjunto de lenguajes así como la evolución. KDM es compatible con UML, BPMN, RDF y otros estándares que permiten la migración a otros entornos y, por lo tanto, aprovechan el conocimiento del sistema para iniciativas como la transformación del sistema de software y el análisis de la capa empresarial empresarial.

Protocolos [ editar ]

Los protocolos son conjuntos de reglas que describen los formatos de los mensajes y cómo se intercambian los mensajes: la máquina de estado del protocolo . En consecuencia, el problema de la ingeniería inversa de protocolos se puede dividir en dos subproblemas: formato de mensaje e ingeniería inversa de la máquina de estados.

Tradicionalmente, los formatos de los mensajes se han modificado mediante ingeniería inversa mediante un tedioso proceso manual, que implicaba el análisis de cómo las implementaciones del protocolo procesan los mensajes, pero una investigación reciente propuso una serie de soluciones automáticas. [19] [20] [21] Normalmente, el grupo de enfoques automáticos observa los mensajes en grupos mediante el uso de varios análisis de agrupamiento , o emulan la implementación del protocolo que rastrea el procesamiento del mensaje.

Ha habido menos trabajo en ingeniería inversa de máquinas de estado de protocolos. En general, las máquinas de estado de protocolo se pueden aprender a través de un proceso de aprendizaje fuera de línea , que observa pasivamente la comunicación e intenta construir la máquina de estado más general que acepta todas las secuencias de mensajes observadas, y el aprendizaje en línea , que permite la generación interactiva de sondeos. secuencias de mensajes y escuchar las respuestas a esas secuencias de sondeo. En general, se sabe que el aprendizaje fuera de línea de pequeñas máquinas de estado es NP-completo , [22] pero el aprendizaje en línea se puede realizar en tiempo polinomial. [23] Comparetti et al. Han demostrado un enfoque automático fuera de línea. [21]y un enfoque en línea de Cho et al. [24]

Otros componentes de los protocolos típicos, como las funciones de cifrado y hash, también pueden someterse a ingeniería inversa automáticamente. Normalmente, los enfoques automáticos rastrean la ejecución de implementaciones de protocolos e intentan detectar búferes en la memoria que contienen paquetes no cifrados. [25]

Circuitos integrados / tarjetas inteligentes [ editar ]

La ingeniería inversa es una forma invasiva y destructiva de analizar una tarjeta inteligente . El atacante utiliza productos químicos para grabar capa tras capa de la tarjeta inteligente y toma fotografías con un microscopio electrónico de barrido (SEM). Esa técnica puede revelar la parte completa de hardware y software de la tarjeta inteligente. El principal problema para el atacante es poner todo en el orden correcto para descubrir cómo funciona todo. Los creadores de la tarjeta intentan ocultar las claves y las operaciones mezclando las posiciones de la memoria, por ejemplo, codificando el bus. [26] [27]

En algunos casos, incluso es posible conectar una sonda para medir voltajes mientras la tarjeta inteligente aún está operativa. Los creadores de la tarjeta emplean sensores para detectar y prevenir ese ataque. [28] Ese ataque no es muy común porque requiere una gran inversión en esfuerzo y equipo especial que generalmente solo está disponible para los grandes fabricantes de chips. Además, la recompensa de este ataque es baja ya que a menudo se utilizan otras técnicas de seguridad, como las cuentas ocultas. Aún no está claro si los ataques contra tarjetas con chip y PIN para replicar datos de cifrado y luego descifrar PIN proporcionarían un ataque rentable a la autenticación multifactor.

La ingeniería inversa completa se realiza en varios pasos importantes.

El primer paso después de que se han tomado las imágenes con un SEM es unir las imágenes, lo cual es necesario porque cada capa no se puede capturar con una sola toma. Un SEM necesita barrer el área del circuito y tomar varios cientos de imágenes para cubrir toda la capa. La unión de imágenes toma como entrada varios cientos de imágenes y genera una sola imagen correctamente superpuesta de la capa completa.

A continuación, las capas cosidas deben alinearse porque la muestra, después del grabado, no se puede colocar exactamente en la misma posición con respecto al SEM cada vez. Por lo tanto, las versiones cosidas no se superpondrán de la manera correcta, como en el circuito real. Por lo general, se seleccionan tres puntos correspondientes y se aplica una transformación sobre la base de eso.

Para extraer la estructura del circuito, las imágenes alineadas y cosidas deben segmentarse, lo que resalta los circuitos importantes y los separa del fondo y los materiales aislantes poco interesantes.

Por último, los cables se pueden rastrear de una capa a la siguiente y se puede reconstruir la lista de conexiones del circuito, que contiene toda la información del circuito.

Aplicaciones militares [ editar ]

Las personas a menudo utilizan la ingeniería inversa para copiar tecnologías, dispositivos o información de otras naciones que han sido obtenidas por tropas regulares en el campo o por operaciones de inteligencia . Se utilizó a menudo durante la Segunda Guerra Mundial y la Guerra Fría . Aquí hay ejemplos bien conocidos de la Segunda Guerra Mundial y posteriores:

  • Jerry can : las fuerzas británicas y estadounidenses notaron que los alemanes tenían botes de gasolina con un excelente diseño. Hicieron copias de ingeniería inversa de esas latas, que se conocían popularmente como "bidones".
  • Panzerschreck : Los alemanes capturaron una bazuca estadounidense durante la Segunda Guerra Mundial y la sometieron a ingeniería inversa para crear el Panzerschreck más grande.
  • Tupolev Tu-4 : En 1944, tres bombarderos B-29 estadounidenses en misiones sobre Japón se vieron obligados a aterrizar en la Unión Soviética . Los soviéticos, que no tenían un bombardero estratégico similar, decidieron copiar el B-29. En tres años, habían desarrollado el Tu-4, una copia casi perfecta. [29]
  • Radar SCR-584 : copiado por la Unión Soviética después de la Segunda Guerra Mundial, es conocido por algunas modificaciones: СЦР-584, Бинокль-Д.
  • Cohete V-2 : Los aliados occidentales capturaron los documentos técnicos del V-2 y las tecnologías relacionadas al final de la guerra. Los estadounidenses centraron sus esfuerzos de ingeniería inversa a través de la Operación Paperclip , que condujo al desarrollo del cohete PGM-11 Redstone . [30] Los soviéticos utilizaron ingenieros alemanes capturados para reproducir documentos técnicos y planos y trabajaron con hardware capturado para hacer su clon del cohete, el R-1 . Así comenzó el programa de cohetes soviéticos de posguerra, que condujo al R-7 y al comienzo de la carrera espacial .
  • El misil K-13 / R-3S ( nombre de informe de la OTAN AA-2 Atoll ), una copia soviética de ingeniería inversa del AIM-9 Sidewinder , fue posible después de que un AIM-9B taiwanés golpeara un MiG-17 chino sin explotar en septiembre 1958. [31] El misil se alojó dentro del fuselaje y el piloto regresó a la base con lo que los científicos soviéticos describirían como un curso universitario en desarrollo de misiles.
  • Misil BGM-71 TOW : En mayo de 1975, las negociaciones entre Irán y Hughes Missile Systems sobre la coproducción de los misiles TOW y Maverick se estancaron debido a los desacuerdos en la estructura de precios, y la revolución de 1979 puso fin a todos los planes para dicha coproducción. Irán luego tuvo éxito en la ingeniería inversa del misil y ahora produce su propia copia, el Toophan .
  • China ha revertido muchos ejemplos de hardware occidental y ruso, desde aviones de combate hasta misiles y autos HMMWV , como el MiG-15 (que se convirtió en el J-7) y el Su-33 (que se convirtió en el J-15). [32] Los análisis más recientes del crecimiento militar de China han señalado las limitaciones inherentes de la ingeniería inversa para los sistemas de armas avanzados. [33]
  • Durante la Segunda Guerra Mundial, los criptógrafos polacos y británicos estudiaron las máquinas de cifrado de mensajes "Enigma " alemanas capturadas en busca de debilidades. Luego, su funcionamiento se simuló en dispositivos electromecánicos, bombas , que probaron todas las configuraciones posibles de codificación de las máquinas "Enigma" que ayudaron la ruptura de mensajes codificados que habían sido enviados por los alemanes.
  • También durante la Segunda Guerra Mundial, los científicos británicos analizaron y derrotaron una serie de sistemas de navegación por radio cada vez más sofisticados utilizados por la Luftwaffe para realizar misiones de bombardeo guiado por la noche. Las contramedidas británicas al sistema fueron tan efectivas que en algunos casos, los aviones alemanes fueron guiados por señales para aterrizar en bases de la RAF ya que creían que habían regresado a territorio alemán.

Redes de genes [ editar ]

Los conceptos de ingeniería inversa también se han aplicado a la biología , específicamente a la tarea de comprender la estructura y función de las redes reguladoras de genes . Regulan casi todos los aspectos del comportamiento biológico y permiten que las células lleven a cabo procesos fisiológicos y respuestas a las perturbaciones. Comprender la estructura y el comportamiento dinámico de las redes de genes es, por tanto, uno de los retos más importantes de la biología de sistemas, con repercusiones prácticas inmediatas en varias aplicaciones que van más allá de la investigación básica. [34] Existen varios métodos para la ingeniería inversa de redes reguladoras de genes utilizando métodos de biología molecular y ciencia de datos. Por lo general, se han dividido en seis clases: [35]

Las seis clases de métodos de inferencia de redes de genes, según [35]
  • Los métodos de coexpresión se basan en la noción de que si dos genes presentan un perfil de expresión similar, pueden estar relacionados, aunque no se puede inferir simplemente la causalidad de la coexpresión.
  • Los métodos de motivos de secuencia analizan los promotores de genes para encontrar dominios de unión a factores de transcripción específicos. Si se predice que un factor de transcripción se una a un promotor de un gen específico, se puede plantear la hipótesis de una conexión reguladora.
  • Los métodos de inmunoprecipitación de cromatina (ChIP) investigan el perfil de unión al ADN de factores de transcripción elegidos en todo el genoma para inferir sus redes de genes descendentes.
  • Los métodos de ortología transfieren el conocimiento de la red genética de una especie a otra.
  • Los métodos de la literatura implementan la minería de textos y la investigación manual para identificar conexiones de redes de genes putativas o probadas experimentalmente.
  • Los métodos de complejos transcripcionales aprovechan la información sobre las interacciones proteína-proteína entre factores de transcripción, extendiendo así el concepto de redes de genes para incluir complejos reguladores transcripcionales.

A menudo, la confiabilidad de la red de genes se prueba mediante experimentos de perturbación genética seguidos de un modelo dinámico, basado en el principio de que eliminar un nodo de la red tiene efectos predecibles sobre el funcionamiento de los nodos restantes de la red. [36] Las aplicaciones de la ingeniería inversa de redes de genes van desde la comprensión de los mecanismos de la fisiología de las plantas [37] hasta el resaltado de nuevos objetivos para la terapia contra el cáncer. [38]

Superposición con la ley de patentes [ editar ]

La ingeniería inversa se aplica principalmente a la comprensión de un proceso o artefacto en el que su creador no ha aclarado la forma de su construcción, uso o procesos internos.

Los artículos patentados no tienen por qué someterse a ingeniería inversa para ser estudiados, ya que la esencia de una patente es que los inventores proporcionan ellos mismos una divulgación pública detallada y, a cambio, reciben protección legal de la invención en cuestión. Sin embargo, un artículo producido bajo una o más patentes también podría incluir otra tecnología que no esté patentada ni divulgada. De hecho, una motivación común de la ingeniería inversa es determinar si el producto de un competidor contiene una infracción de patente o una infracción de derechos de autor .

Legalidad [ editar ]

Estados Unidos [ editar ]

En los Estados Unidos, incluso si un artefacto o proceso está protegido por secretos comerciales , la ingeniería inversa del artefacto o proceso es a menudo legal si se ha obtenido legítimamente. [39]

La ingeniería inversa de software informático a menudo se enmarca tanto en el derecho contractual como en el incumplimiento del contrato , así como en cualquier otra ley pertinente. Esto se debe a que la mayoría de los acuerdos de licencia de usuario final lo prohíben específicamente, y los tribunales estadounidenses han dictaminado que si tales términos están presentes, anulan la ley de derechos de autor que lo permite expresamente (véase Bowers v. Baystate Technologies [40] [41] ). De acuerdo con la Sección 103 (f) de la Ley de Derechos de Autor del Milenio Digital ( 17 USC § 1201 (f)), una persona en posesión legal de un programa puede realizar ingeniería inversa y eludir su protección si es necesario para lograr la "interoperabilidad", un término que cubre ampliamente otros dispositivos y programas que pueden interactuar con él, hacer uso de él y usar y transferir datos ay desde él de manera útil. Existe una exención limitada que permite compartir el conocimiento así adquirido y utilizarlo con fines de interoperabilidad. [42]

Unión Europea [ editar ]

La Directiva de la UE 2009/24 sobre la protección legal de los programas de computadora, que reemplazó una directiva anterior (1991), [43] rige la ingeniería inversa en la Unión Europea . [44] [45]

Ver también [ editar ]

  • Mecanismo de Antikythera
  • Benchmarking
  • Analizador de bus
  • Chonda
  • Clonar (informática)
  • Diseño de sala limpia
  • CMM
  • Transformación de código
  • Estación de juegos virtual Connectix
  • Falsificación
  • Criptoanálisis
  • Descompilar
  • Deformulación
  • Ley de derechos de autor del milenio digital (DMCA)
  • Dongle
  • Ingenieria forense
  • Tomografía computarizada industrial
  • Desensamblador interactivo
  • Metamodelo de descubrimiento del conocimiento
  • Escáner láser
  • Lista de temas de producción
  • Motores Listeroid
  • Analizador lógico
  • Cheque de pago
  • Desmontaje del producto
  • Reutilización
  • Retrodicción
  • Sega v. Galardón
  • Arqueología de software
  • Craqueo de software
  • Digitalizador de luz estructurado
  • Ingeniería de valor

Referencias [ editar ]

  1. ↑ a b c d e f g h i Eilam, Eldad (2005). Inversión: secretos de la ingeniería inversa . John Wiley & Sons. ISBN 978-0-7645-7481-8.
  2. ^ Thayer, Ken. "¿Cómo funciona la ingeniería inversa?" . globalspec . Especificaciones globales IEEE . Consultado el 26 de febrero de 2018 .
  3. Villaverde, Alejandro F .; Banga, Julio R. (6 de febrero de 2014). "Ingeniería inversa e identificación en biología de sistemas: estrategias, perspectivas y desafíos" . Revista de la interfaz de la Royal Society . 11 (91): 20130505. doi : 10.1098 / rsif.2013.0505 . PMC 3869153 . PMID 24307566 .  
  4. ↑ a b c Chikofsky, EJ y Cross, JH, II (1990). "Ingeniería inversa y recuperación del diseño: una taxonomía". Software IEEE . 7 (1): 13-17. doi : 10.1109 / 52.43044 .
  5. ^ a b Una encuesta sobre ingeniería inversa y comprensión del programa. Michael L. Nelson, 19 de abril de 1996, ODU CS 551 - Encuesta de ingeniería de software. arXiv : cs / 0503068v1
  6. ^ Vinesh Raja; Kiran J. Fernandes (2007). Ingeniería inversa: una perspectiva industrial . Springer Science & Business Media. pag. 3. ISBN 978-1-84628-856-2.
  7. ^ Jonathan Band; Masanobu Katoh (2011). Interfaces en Trial 2.0 . Prensa del MIT. pag. 136. ISBN 978-0-262-29446-1.
  8. ^ a b c Chikofsky, EJ; Cross, JH (enero de 1990). "Ingeniería inversa y recuperación del diseño: una taxonomía" (PDF) . Software IEEE . 7 : 13-17. doi : 10.1109 / 52.43044 . Archivado desde el original (PDF) el 17 de abril de 2018 . Consultado el 2 de julio de 2012 .
  9. ^ Glosario de seguridad de Internet delgrupo de trabajo de ingeniería de Internet RFC 2828
  10. ^ Varady, T; Martin, R; Cox, J (1997). "Ingeniería inversa de modelos geométricos: una introducción". Diseño asistido por computadora . 29 (4): 255–268. doi : 10.1016 / S0010-4485 (96) 00054-1 .
  11. ^ "Ingeniería inversa" .
  12. Warden, R. (1992). Reutilización de software e ingeniería inversa en la práctica . Londres, Inglaterra: Chapman & Hall. págs. 283-305.
  13. ^ "Conferencia de trabajo sobre ingeniería inversa (WCRE)" . uni-trier.de . Bibliografía informática. Archivado desde el original el 14 de marzo de 2017 . Consultado el 22 de febrero de 2018 .
  14. ^ Shahbaz, Muzammil (2012). Ingeniería inversa y pruebas de componentes de software Black-Box: mediante técnicas de inferencia gramatical . Editorial Académica LAP LAMBERT. ISBN 978-3659140730.
  15. ^ Chuvakin, Anton; Cyrus Peikari (enero de 2004). Security Warrior (1ª ed.). O'Reilly. Archivado desde el original el 22 de mayo de 2006 . Consultado el 25 de mayo de 2006 .
  16. ^ Samuelson, Pamela y Scotchmer, Suzanne (2002). "El derecho y la economía de la ingeniería inversa" . Revista de derecho de Yale . 111 (7): 1575–1663. doi : 10.2307 / 797533 . JSTOR 797533 . Archivado desde el original el 15 de julio de 2010 . Consultado el 31 de octubre de 2011 . 
  17. ^ "Samba: una introducción" . 2001-11-27 . Consultado el 7 de mayo de 2009 .
  18. ^ Lee, Newton (2013). Contraterrorismo y ciberseguridad: conciencia total de la información (2ª ed.). Springer Science + Business Media. pag. 110. ISBN 978-1461472049.
  19. ^ W. Cui, J. Kannan y HJ Wang. Discoverer: ingeniería inversa de protocolo automático a partir de seguimientos de red. En Actas del 16º Simposio de seguridad de USENIX sobre el Simposio de seguridad de USENIX, págs. 1-14.
  20. ^ W. Cui, M. Peinado, K. Chen, HJ Wang y L. Irún-Briz. Tupni: Ingeniería inversa automática de formatos de entrada. En Actas de la 15ª Conferencia de la ACM sobre seguridad informática y de comunicaciones, págs. 391–402. ACM, octubre de 2008.
  21. ^ a b P. M. Comparetti, G. Wondracek, C. Kruegel y E. Kirda. Prospex: Extracción de especificaciones de protocolo. En Proceedings of the 2009 30th IEEE Symposium on Security and Privacy, pp. 110-125, Washington, 2009. IEEE Computer Society.
  22. ^ Oro, E (1978). "Complejidad de la identificación de autómatas a partir de datos dados" . Información y control . 37 (3): 302–320. doi : 10.1016 / S0019-9958 (78) 90562-4 .
  23. ^ D. Angluin (1987). "Aprendizaje de conjuntos regulares a partir de consultas y contraejemplos". Información y Computación . 75 (2): 87–106. doi : 10.1016 / 0890-5401 (87) 90052-6 .
  24. ^ CY Cho, D. Babic, R. Shin y D. Song. Inferencia y análisis de modelos formales de protocolos de comando y control de botnets , Conferencia ACM 2010 sobre seguridad informática y de comunicaciones.
  25. ^ Políglota: extracción automática del formato de mensaje de protocolo mediante análisis binario dinámico . J. Caballero, H. Yin, Z. Liang y D. Song. Actas de la 14ª conferencia de la ACM sobre seguridad informática y de las comunicaciones, págs. 317–329.
  26. ^ Wolfgang Rankl, Wolfgang Effing, Manual de tarjetas inteligentes (2004)
  27. ^ T. Welz: Tarjetas inteligentes como métodos de pago (2008), Seminario ITS-Security Ruhr-Universität Bochum
  28. ^ David C. Musker: Protección y explotación de la propiedad intelectual en la electrónica Archivado el9 de julio de2011 en Wayback Machine , Conferencias de IBC, 10 de junio de 1998
  29. ^ Yeam Gordon y Vladimir Rigmant, Tupolev Tu-4: Superfortaleza soviética (Hinckley, Reino Unido: Midland, 2002).
  30. ^ "Cohete Redstone" . centennialofflight.net . Consultado el 27 de abril de 2010 .
  31. ^ "La fuerza aérea china: evolución de conceptos, roles y capacidades", Centro para el estudio de asuntos militares chinos (Estados Unidos), por National Defense University Press, p. 277
  32. ^ Chandrashekar, S., R. Nagappa, L. Sundaresan y N. Ramani. 2011. Tecnología e innovación en China: un estudio de caso de desarrollo de superaleaciones monocristalinas para álabes de turbinas de aviones, R4-11. Instituto Nacional de Estudios Avanzados ISSSP, Bangalore. http://isssp.in/wp-content/uploads/2013/01/Technology-and-Innovation-in-China-A-case-Study-of-Single-Crystal4.pdf ; y Dillon Zhou, "China J-15 Fighter Jet: Los funcionarios chinos defienden el nuevo caza como original chino, pero quedan dudas", Mic, 16 de diciembre de 2012, https://mic.com/articles/20270/china-j-15 -Aviones-de-combate-funcionarios-chinos-defienden-nuevo-caza -como-original-chino-pero-quedan-preguntas-
  33. ^ Andrea Gilli y Mauro Gilli, "Por qué China no se ha puesto al día todavía: superioridad militar-tecnológica y los límites de la imitación, la ingeniería inversa y el ciberespionaje, Seguridad internacional 43: 3 (2019 141-189, https: // doi. org / 10.1162 / isec_a_00337 .
  34. ^ Giorgi, Federico M. (2020). "Ingeniería inversa de la red de genes: la próxima generación". Biochimica et Biophysica Acta (BBA) - Mecanismos reguladores de genes . 1863 (6): 194523. doi : 10.1016 / j.bbagrm.2020.194523 . ISSN 1874-9399 . 
  35. ^ a b Mercatelli, Daniele; Scalambra, Laura; Triboli, Luca; Ray, bosque; Giorgi, Federico M. (2020). "Recursos de inferencia de red reguladora de genes: una descripción práctica". Biochimica et Biophysica Acta (BBA) - Mecanismos reguladores de genes . 1863 (6): 194430. doi : 10.1016 / j.bbagrm.2019.194430 . ISSN 1874-9399 . 
  36. ^ Tegner, J .; Yeung, MKS; Hasty, J .; Collins, JJ (2003). "Redes de genes de ingeniería inversa: integración de perturbaciones genéticas con modelado dinámico" . Actas de la Academia Nacional de Ciencias . 100 (10): 5944–5949. doi : 10.1073 / pnas.0933416100 . ISSN 0027-8424 . 
  37. ^ Friedel, Swetlana; Usadel, Björn; von Wirén, Nicolaus; Sreenivasulu, Nese (2012). "Ingeniería inversa: un componente clave de la biología de sistemas para desenredar la conversación cruzada del estrés abiótico global" . Fronteras en la ciencia vegetal . 3 . doi : 10.3389 / fpls.2012.00294 . ISSN 1664-462X . 
  38. ^ Lefebvre, Celine; Rieckhof, Gabrielle; Califano, Andrea (2012). "Redes reguladoras humanas de ingeniería inversa" . Revisiones interdisciplinarias de Wiley: biología de sistemas y medicina . 4 (4): 311–325. doi : 10.1002 / wsbm.1159 . ISSN 1939-5094 . PMC 4128340 .  
  39. ^ "Trade Secrets 101", artículo destacado, marzo de 2011 . COMO YO. Consultado el 31 de octubre de 2013.
  40. ^ Baystate v. Discusión de Bowers . Utsystem.edu. Consultado el 29 de mayo de 2011.
  41. ^ Bruto, Grant. (2003-06-26) Caso de contrato podría dañar la ingeniería inversa | Mundo de desarrolladores . InfoWorld. Consultado el 29 de mayo de 2011.
  42. ^ La sección establece:
    (f) Ingeniería inversa.—
    (1) No obstante las disposiciones de la subsección (a) (1) (A), una persona que haya obtenido legalmente el derecho a usar una copia de un programa de computadora puede eludir una Medida que controla eficazmente el acceso a una parte particular de ese programa con el único propósito de identificar y analizar aquellos elementos del programa que son necesarios para lograr la interoperabilidad de un programa de computadora creado independientemente con otros programas, y que previamente no han estado fácilmente disponibles para la persona que participa en la elusión, en la medida en que dichos actos de identificación y análisis no constituyan una infracción en virtud de este título.
    (2) No obstante las disposiciones de los incisos (a) (2) y (b), una persona puede desarrollar y emplear medios tecnológicos para eludir una medida tecnológica, o para eludir la protección otorgada por una medida tecnológica, con el fin de permitir la identificación y análisis conforme al párrafo (1), o con el propósito de permitir la interoperabilidad de un programa de computadora creado independientemente con otros programas, si tales medios son necesarios para lograr dicha interoperabilidad, en la medida en que hacerlo no constituya una infracción bajo este título.
    (3) La información adquirida a través de los actos permitidos bajo el párrafo (1), y los medios permitidos bajo el párrafo (2), pueden ponerse a disposición de otros si la persona mencionada en el párrafo (1) o (2), según el caso puede ser, proporciona dicha información o medios únicamente con el propósito de permitir la interoperabilidad de un programa informático creado de forma independiente con otros programas, y en la medida en que hacerlo no constituya una infracción en virtud de este título o viole la ley aplicable que no sea esta sección.
    (4) Para los propósitos de esta subsección, el término 「interoperabilidad」 significa la capacidad de los programas de computadora para intercambiar información, y de dichos programas para usar mutuamente la información que ha sido intercambiada.
  43. ^ Directiva del Consejo 91/250 / EEC del 14 de mayo de 1991 sobre la protección legal de programas de computadora . Eur-lex.europa.eu. Consultado el 29 de mayo de 2011.
  44. ^ DIRECTIVA 2009/24 / CE DEL PARLAMENTO EUROPEO Y DEL CONSEJO de 23 de abril de 2009 sobre la protección jurídica de programas informáticos
  45. ^ La directiva establece:

    La reproducción, traducción, adaptación o transformación no autorizada de la forma del código en el que se ha puesto a disposición una copia de un programa informático constituye una infracción de los derechos exclusivos del autor. No obstante, pueden existir circunstancias en las que dicha reproducción del código y la traducción de su forma sean indispensables para obtener la información necesaria para lograr la interoperabilidad de un programa creado independientemente con otros programas. Por lo tanto, debe considerarse que, únicamente en estas circunstancias limitadas, la realización de los actos de reproducción y traducción por o en nombre de una persona que tiene derecho a utilizar una copia del programa es legítima y compatible con las prácticas leales y, por lo tanto, debe ser se considera que no requiere la autorización del titular del derecho.Un objetivo de esta excepción es permitir la conexión de todos los componentes de un sistema informático, incluidos los de diferentes fabricantes, para que puedan trabajar juntos. Esta excepción a los derechos exclusivos del autor no podrá utilizarse de forma que perjudique los intereses legítimos del titular del derecho o que entre en conflicto con la explotación normal del programa.

Fuentes [ editar ]

  • Eilam, Eldad (2005). Inversión: secretos de la ingeniería inversa . Wiley Publishing . pag. 595. ISBN 978-0-7645-7481-8.
  • Elvidge, Julia, "Using Reverse Engineering to Discover Patent Infringement", Chipworks, septiembre de 2010. En línea: http://www.photonics.com/Article.aspx?AID=44063
  • Cipresso, Teodoro (2009). "Educación en ingeniería inversa de software" . Tesis de Maestría de SJSU . Consultado el 22 de agosto de 2009 .
  • Hausi A. Müller y Holger M. Kienle, "A Small Primer on Software Reverse Engineering", Informe técnico, Universidad de Victoria, 17 páginas, marzo de 2009. En línea: http://holgerkienle.wikispaces.com/file/view/MK -UVic-09.pdf
  • Heines, Henry, "Determining Infringement by X-Ray Diffraction" , proceso de ingeniería química , enero de 1999 (ejemplo de ingeniería inversa utilizada para detectar una infracción de propiedad intelectual)
  • Huang, Andrew (2003). Hackear la Xbox: Introducción a la ingeniería inversa . Sin prensa de almidón . ISBN 978-1593270292.
  • James, Dick (19 de enero de 2006). "La ingeniería inversa ofrece conocimiento del producto; ayuda a la difusión de la tecnología" . Diseño Electrónico . Penton Media, Inc . Consultado el 3 de febrero de 2009 .
  • Messler, Robert (2013). Ingeniería inversa: mecanismos, estructuras, sistemas y materiales . McGraw Hill . ISBN 978-0071825160. (introducción a los desmontajes de hardware, incluida la metodología, los objetivos)
  • Raja, Vinesh; Fernandes, Kiran J. (2008). Ingeniería inversa: una perspectiva industrial . Springer . pag. 242. ISBN 978-1-84628-855-5.
  • Ingeniería inversa para principiantes
  • Samuelson, Pamela y Scotchmer, Suzanne, "La ley y la economía de la ingeniería inversa", 111 Yale LJ 1575 (2002). En línea: http://people.ischool.berkeley.edu/~pam/papers/l&e%20reveng3.pdf
  • Schulman, Andrew; Brown, Ralf D .; Maxey, David; Michels, Raymond J .; Kyle, Jim (1994) [noviembre de 1993]. DOS sin documentar: una guía del programador para las estructuras de datos y funciones reservadas de MS-DOS, expandida para incluir MS-DOS 6, Novell DOS y Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley . págs.  229–241 . ISBN 0-201-63287-X.(xviii + 856 + vi páginas, 3.5 "-floppy) Errata: [1] [2] (NB. Sobre metodología general de ingeniería inversa, aplicada al software de mercado masivo: un programa para explorar DOS, desensamblar DOS.)
  • Schulman, Andrew; et al. (1992). Windows indocumentado: una guía del programador para las funciones reservadas de la API de Microsoft Windows . Addison Wesley . ISBN 978-0-201-60834-2. (págs. 59–188 sobre metodología general de ingeniería inversa, aplicada al software de mercado masivo: examen de ejecutables de Windows, desmontaje de Windows, herramientas para explorar Windows)
  • Schulman, Andrew, "Hiding in Plain Sight: Using Reverse Engineering to Decover Software Patent Infringement", Intellectual Property Today , noviembre de 2010. En línea: http://www.iptoday.com/issues/2010/11/hiding-in- simple-vista-usando-ingeniería-inversa-para-descubrir-infracción-de-patente-de-software-asp
  • Schulman, Andrew, "Abierto a la inspección: uso de ingeniería inversa para descubrir la técnica anterior del software", New Matter (Sección de propiedad intelectual del Colegio de Abogados de California), verano de 2011 (Parte 1); Otoño de 2011 (Parte 2). En línea: http://www.SoftwareLitigationConsulting.com
  • Thumm, Mike (2007). "Tácticas de conversación" (PDF) . Conferencia sobre circuitos integrados personalizados IEEE 2007 (CICC) . IEEE, Inc . Consultado el 3 de febrero de 2009 .