Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Víctor Reguillo Agenjo - Ingeniería inversa. Qué es y cuál es su utilidad en la sociedad - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Proyecto de investigación de Víctor Reguillo Agenjo titulado 'Ingeniería inversa. Qué es y cuál es su utilidad en la sociedad'
Imaginaros que un día conseguimos tecnología extraterrestre
00:00:00
o que por lo que sea conseguimos un dispositivo arcaico.
00:00:04
¿Cómo podríamos comprender su funcionamiento?
00:00:07
Con un sencillo procedimiento, la ingeniería inversa.
00:00:10
Yo soy Víctor Reguillo y este es mi proyecto sobre este proceso.
00:00:12
¿Qué es la ingeniería inversa?
00:00:19
La ingeniería inversa, la mejor forma de definirla es en base a la ingeniería.
00:00:21
La ingeniería es la forma de solucionar problemas de la vida cotidiana del ser humano.
00:00:26
Para ello emplea unos recursos y unos procedimientos determinados
00:00:32
para crear unos productos que resuelvan estos problemas.
00:00:36
La ingeniería inversa es todo lo contrario,
00:00:39
por ello también se la conoce como ingeniería de retorno,
00:00:42
ya que sigue los pasos al revés de la ingeniería.
00:00:45
Y en base a un producto se encarga de obtener los materiales
00:00:48
y los procedimientos que se han utilizado para su creación.
00:00:54
Respecto a su origen hay diversidad de opiniones,
00:00:59
pero la mayoría de expertos afirman que se remonta a la Segunda Guerra Mundial
00:01:02
con la máquina Enigma a la que se le realizó un proceso de ingeniería inversa
00:01:07
para así poder descifrar los mensajes de los nazis.
00:01:11
Por otra parte también se dice que se remonta a los primeros inventos de la humanidad
00:01:14
con las invenciones como puede ser la rueda,
00:01:21
de la que se copiaban medidas y proporciones para así replicarla más tarde.
00:01:24
Otro de los casos más destacables es el de los procesadores de IBM
00:01:30
a los que se le realizó un proceso de ingeniería inversa
00:01:34
para así romper con el monopolio que tenía esta empresa a principios de los 80.
00:01:38
Sus utilidades son principalmente tres.
00:01:44
Uno, la obtención de información de dicho objeto.
00:01:47
Dos, representar el objeto o recrearlo.
00:01:50
Como podemos ver en esta imagen de la especie de la silla.
00:01:54
Como se ve en la imagen de la silla está representado en todas sus vistas
00:02:02
y los componentes que la forman.
00:02:07
Y tercero, descubrir posibles fallos y mejorar funciones que tenga dicho objeto.
00:02:09
Respecto a las ventajas y desventajas podemos encontrar marcadas en blanco
00:02:17
tres. Uno, la mejora de la comprensión del objeto
00:02:22
ya que permite entender su funcionamiento y los procedimientos que este lleva a cabo.
00:02:25
Dos, la aceleración en los procesos de producción.
00:02:31
Y tres, una recuperación de información perdida que no se haya podido obtener de otra forma.
00:02:35
Por otro lado, marcados en naranja tenemos los contras
00:02:41
que son una cierta tendencia al plagio
00:02:44
ya que al final tú estás copiando el trabajo de otra persona.
00:02:46
La abundancia de recursos que necesita
00:02:50
ya que al final tú tienes que pagar a una persona que lleva a cabo este proceso
00:02:54
y los materiales que pueda necesitar que voy a explicar más adelante.
00:02:58
Y tres, los problemas éticos que implica
00:03:02
ya que habría que ver hasta qué punto es ético copiar o no el trabajo de otra persona.
00:03:04
Por otro lado, tenemos una un poco más bilateral
00:03:11
como es la regulación de piezas del OEM.
00:03:14
Esta no es ni ventaja ni desventaja ya que por un lado
00:03:17
permite abaratar costes de producción y reducir gastos y tiempos de envío.
00:03:21
Por el otro es una desventaja ya que impide que estas empresas ganen dinero.
00:03:25
Respecto a los ámbitos podemos destacar dos principalmente.
00:03:34
Uno de ellos es el físico
00:03:37
y este se lleva a cabo principalmente a través de medición de objetos.
00:03:39
Puede haber dos tipos.
00:03:43
Simple si se puede medir con un cálculo de verbias o un micrómetro
00:03:45
y complejo si se puede medir con un ACM o un escáner 3D.
00:03:49
Estos más adelante se llevan a un entorno virtual
00:03:54
con un programa de diseño asistido por ordenador o CAD.
00:03:57
Más tarde se les realiza un proceso de análisis de rendimiento
00:04:01
en este caso de resistencia con un programa CAE
00:04:06
de ingeniería asistida por computadora
00:04:09
y se lleva a producción con un programa CAM
00:04:12
de manufactura asistida por computadora
00:04:14
como podemos ver en la tercera imagen.
00:04:16
El segundo ámbito que podemos destacar es el ámbito virtual
00:04:21
y este se sirve de los programas de compilación.
00:04:25
Estos programas se encargan de obtener el código fuente original de un programa
00:04:28
partiendo del binario que crea el ejecutable.
00:04:33
El que se ha empleado en la parte práctica es Hydra.
00:04:37
Para ello se emplea como intermediario el lenguaje ensamblador
00:04:42
que es un punto intermedio entre un lenguaje de alto nivel y el binario.
00:04:46
¿Pero qué es el lenguaje ensamblador?
00:04:50
Pues el lenguaje ensamblador es el único lenguaje de bajo nivel
00:04:52
empleado en la actualidad.
00:04:56
Como podéis ver es un lenguaje bastante abstracto
00:04:57
en el que funciona en base a mnemónicos y abreviaturas.
00:05:01
En la imagen de la derecha podemos observar un lenguaje de alto nivel
00:05:05
que si bien es más fácil de entender para el ser humano
00:05:09
también es cierto que al ordenador le cuesta más tiempo procesarlo.
00:05:12
Por ello se emplea como intermediario este lenguaje.
00:05:17
Para la parte práctica se han investigado diferentes métodos de defensa
00:05:23
contra esta práctica y se han encontrado los siguientes.
00:05:27
Uno de ellos es la encriptación que puede ser de los siguientes tipos.
00:05:30
Simétrica si se encripta y desencripta con una única clave.
00:05:34
Asimétrica si se cifra con una clave pública que puede tener cualquier persona
00:05:38
y se descifra con una clave privada que nunca se envía
00:05:43
de ahí la seguridad que tiene este método.
00:05:48
E híbrida que es una combinación entre las dos.
00:05:51
Encriptación híbrida se encarga de cifrar la clave con un patrón
00:05:54
asimétrico y el código o el archivo en sí lo cifra con un patrón simétrico.
00:05:59
El otro método que se ha encontrado es la ajustación
00:06:09
que son cambios en el código.
00:06:12
Puede ser de tres tipos.
00:06:14
Información si se cambian, por ejemplo, números.
00:06:16
En este caso el número 42 por la operación que podéis ver aquí
00:06:19
que al final acaba dando como resultado este mismo número.
00:06:24
O de palabras.
00:06:27
En este caso las palabras hello world se han cambiado por este conjunto
00:06:28
de secuencias de escape hexadecimal binario y octal
00:06:32
para lograr un código un poco más abstracto y más difícil de entender.
00:06:35
También tenemos los cambios de sintaxis
00:06:39
que son cambios en la estructura del programa.
00:06:41
Los más destacables son la alineación de comentarios del desarrollador
00:06:44
o el inlining que consiste en escribir todo el código en una única línea.
00:06:50
Por otro lado tenemos los cambios de control
00:06:55
que son cambios que a diferencia de los otros
00:06:58
pueden afectar a los tiempos de ejecución del programa.
00:07:01
El ejemplo que he escogido es la adición de estructuras de control booleanas
00:07:04
innecesarias u operadores lógicos.
00:07:09
En este caso tenemos el código que dice que x es igual a 42
00:07:12
y que si x es mayor de 12 se ejecuta un código.
00:07:16
Y al buscar el código tenemos que x es igual a 42
00:07:20
y si x es mayor de 12 y doble elevación
00:07:24
por lo tanto se ejecutaría el siguiente código
00:07:27
x mayor de 12 se ejecuta el código.
00:07:29
Estos son los ejemplos más llamativos que he encontrado en internet.
00:07:34
Para la parte práctica se decidió dividirla en dos fases.
00:07:41
La primera fase se encargaba de comprobar
00:07:45
si se podía obtener el código fuente de un programa.
00:07:48
La conclusión a la que se llegó es que gracias a los programas
00:07:51
de compilación previamente explicados se podía obtener este código.
00:07:54
También se observó que realizaba diversos cambios.
00:08:01
Uno de ellos es el cambio en los nombres de las variables.
00:08:04
Como podemos ver la variable a se cambia por local18,
00:08:07
la variable b por locallc y la variable c por local14.
00:08:10
El segundo cambio que se encontró es un cambio en el bucle while
00:08:16
que se cambiaba por el bucle for.
00:08:21
Tras analizar el lenguaje ensamblador de este bucle
00:08:23
se llegó a la conclusión de que el bucle for
00:08:28
era un tipo concreto de bucle while.
00:08:30
Por último se comprobó que la división entre dos
00:08:32
se cambiaba por el operador lógico and1
00:08:36
y nuevamente al comprobarlo con el lenguaje ensamblador
00:08:39
se llegó a la conclusión de que la división entre dos
00:08:44
al traducirlo al lenguaje ensamblador
00:08:47
era equivalente a este operador lógico.
00:08:49
La segunda parte se centró en comprobar
00:08:53
si se podía defender un código de esta práctica
00:08:55
y las conclusiones fueron negativas ya que al final
00:08:59
un programa de compilación siempre va a ser capaz
00:09:02
de obtener el código binario teniendo un ejecutable
00:09:04
y si tiene este ya va a poder traducirlo
00:09:07
a un lenguaje de alto nivel como es C++
00:09:10
que es el que se utilizaba en la parte práctica.
00:09:12
Algunas técnicas que se emplearon fueron las siguientes
00:09:14
el cambio de los números por estas operaciones
00:09:18
el cambio de los nombres de las variables
00:09:22
o el cambio de las palabras por, como ya he mencionado antes
00:09:25
un conjunto de secuencias de escape binario hexadecimal y octal.
00:09:29
Muchas gracias por vuestra atención
00:09:33
espero que os haya gustado y estoy a vuestra disposición
00:09:35
para cualquier pregunta.
00:09:37
Gracias.
00:09:42
- Idioma/s:
- Autor/es:
- Víctor Reguillo Agenjo
- Subido por:
- Ies villadevaldemoro valdemoro
- Licencia:
- Reconocimiento - No comercial - Sin obra derivada
- Visualizaciones:
- 160
- Fecha:
- 12 de enero de 2024 - 20:34
- Visibilidad:
- Público
- Centro:
- IES VILLA DE VALDEMORO
- Duración:
- 09′ 44″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 1.36