You Are Browsing ‘IA’ Category

La Inteligencia Artificial es el futuro de la Seguridad Informática

by cybercaronte - on Feb 20th 2017 - 1 Comment

https://farm1.staticflickr.com/684/32156020054_4e7ee7276f.jpg

Escena de la película “2001 Una Odisea Del Espacio” donde HAL 9000 lee los labios de los astronautas Frank y Dave. Enlace foto.

Se está hablando mucho de la IA (Inteligencia Artificial) y su aplicación en diversos campos como la conducción automática de vehículos o incluso en medicina identificando células cancerígenas mejor que un humano. Estos avances son realmente espectaculares y definitivamente cambiarán la humanidad  pero creo que no se está hablando lo suficiente del tremendo impacto de la IA dentro del mundo de la seguridad informática.

Pues prepárate porque este impacto será espectacular.

Hasta ahora la ciberseguridad es básicamente un juego entre humanos, pero esto cambiará muy pronto. Si ya existen programas con técnicas de Machine Learning para recomendarte libros o películas, en breve habrá un ejército de programas con su propia IA diseñados para protegerte … o para atacarte. ¿Podéis imaginaros un programa creado con fines maléficos diseñado con técnicas de IA para atacar ordenadores, instalaciones o cualquier cosa conectada a Internet, con todo el tiempo del mundo para aprender de sus vulnerabilidades? ¿Imagináis IA creadas a medida para atacar objetivos concretos ya que han crecido aprendiendo de ellos hasta el último detalle de su configuración o forma de trabajar?

Todas las IA se programan en base a patrones y reglas de aprendizaje, partiendo desde cero, para ir adquiriendo más conocimiento al igual que lo hace un humano que comienza a aprender una nueva tarea. La diferencia es que la curva de aprendizaje es muchísimo menor, y por lo tanto en poco tiempo esa IA será toda una experta en el tema para el cual se le ha entrenado, sea cual sea. Además trabajará sin descanso, 24 horas al día los los 365 días del año y además será más barata que un humano.

No estamos hablando de scripts o programas avanzados como los que ya existen, sino de programas inteligentes diseñados para aprender ha realizar una tarea concreta a base de ensayos, análisis y toma de decisiones. Estos programas son capaces de analizar el entorno, cambios, variables, etc para decidir qué método utilizar en un momento concreto para conseguir un objetivo. ¿Os acordáis del post que publicamos sobre “Cómo entrenar a tu IA”? En este post hablábamos sobre una plataforma creada para entrenar a una IA para superar niveles de juegos arcades clásicos. Esta IA comienza cometiendo muchos errores, incapaz de superar el primer nivel del juegos. Pero al cabo de un tiempo, posiblemente minutos, es capaz de pasar ese primer nivel pero no sólo eso, lo que ha aprendido para superar este nivel lo aplicará para superar el segundo, el tercero y así hasta completar el juego. Utilicemos ahora este mismo concepto de campo de entrenamiento” aplicado a la ciberseguridad. En vez de crear una plataforma con juegos clásicos como método de entrenamiento, podríamos utilizar por ejemplo una plataforma basada en máquinas virtuales con diferentes sistemas operativos y otros programas instalados como antivirus o cortafuegos. En este entorno controlado podemos enseñar a nuestra IA a atacar o defender esos equipos. Si queremos atacar, entrenaremos nuestra IA para que aprenda a analizar el equipo objetivo. Este análisis no terminará hasta que no sea capaz de conseguir la “recompensa” (término utilizado para definir la “motivación” de una IA para llegar a su objetivo) que será por ejemplo acceder a algunos ficheros del ordenador o realizar un ataque que lo inutilice. Si queremos defenderlo, nuestra IA aprenderá a analizar los programas instalados, los procesos, la memoria y analizar todos los posibles cambios en su entorno que puedan ser una pista de un posible ataque.

Pero además podemos dar un salto más allá y expandir los vectores de ataque al mundo físico. ¿Recordáis la escena de ¨2001 Una Odisea del Espacio” donde HAL 9000 lee los labios de los astronautas Frank y Dave cuando hablan de desconectarlo?. Esto ya es una realidad, las técnicas de visión artificial son capaces o están a punto de conseguir este espectacular avance. Por lo tanto una IA entrenada en leer los labios podría analizar y reconocer conversaciones consiguiendo todo tipo de información sensible. Imaginaos ahora una IA con acceso a miles de cámaras de seguridad. Siguiendo con la visión artificial, una IA entrenada a reconocer el movimiento de los dedos de la mano en un teclado (en cualquier dispositivo), podría por ejemplo ser capaz de reconocer las teclas que estás pulsando en y de esa forma conseguir tu contraseña en un ordenador o el patrón para desbloquear tu móvil.

Y lo mismo ocurre con el audio. Esas cámaras tienen micrófonos y una IA entrenada a reconocer conversaciones sería capaz de captar todo tipo de información e incluso discriminar conversaciones dentro de un ruido caótico. Pero además, y ahora sí que vamos a divagar un poco, esta misma IA podría ser capaz de simular tu voz y acceder a un sistema de seguridad basado en ella o aún peor, podría ser capaz de hacerse pasar por ti en una llamada por teléfono por ejemplo a tu banco… pero bueno esto quizás es imaginar demasiado ¿o quizás no?.

La IA revolucionará todas las técnicas que utilizamos para identificar y solucionar las vulnerabilidades en seguridad (por ejemplo necesitaremos nuevas herramientas de pentesting). Esta revolución será tan grande que afectará no solo al mundo de la seguridad, sino que tendrá también repercusión en todos los campos de la Informática que obligará a revisar, modificar e incluso cambiar protocolos, diseños, hardware, etc. Uno de estos elementos que desaparecerán o evolucionaran a otro nivel, son los los famosos captchas. Con su filosofía actual, no podrán ser capaces de distinguir a una máquina de un humano. A nivel de hardware, es posible que los nuevos cortafuegos que instalemos en nuestro sistema llegarán a nuestras manos con una configuración básica, mínima pero preparados para empezar a aprender desde cero sobre toda nuestra infraestructura y por lo tanto, defenderla mejor invirtiendo un tiempo inicial de entrenamiento. Finalmente tendríamos un dispositivo inteligente hecho a medida para defendernos que a la vez no parará de aprender de nosotros para ir evolucionando hacia la protección perfecta.

Antes comencé este artículo diciendo que la seguridad informática a día de hoy es un juego entre humanos. En pocos años pasará a ser un juego de maquinas, más parecido al clásico juego “Core Wars” pero esta vez el campo de batalla no será una simple matriz en la memoria de un ordenador. El nuevo campo de batalla será Internet.

Yo ya he desempolvado hace tiempo mis libros de Cálculo y Álgebra … 😉

Entradas relacionadas:

Cómo entrenar a tu IA

by cybercaronte - on Dic 5th 2016 - No Comments

https://farm6.staticflickr.com/5441/31406720546_d78b9ba4ab.jpg Fotos: Web OpenAI

¿Tienes una IA pero no sabes cómo probarla? 

Pues ya no tienes que preocuparte, OpenAI te ofrece su nueva plataforma llamada Universe la cual te permite comprobar y entrenar una IA utilizando juegos, páginas web ó incluso aplicaciones como medio de pruebas.

La base de su funcionamiento es sencillo: hacer que un agente (la IA) utilice un ordenador igual como lo haría un ser humano, es decir, mirando la pantalla (en su caso identificando pixeles) y utilizando el ratón y el teclado. Por lo tanto sólo tenemos que elegir en qué entorno queremos probar nuestra IA y dejamos que vaya adquiriendo experiencia poco a poco. Como hemos comentado antes, los agentes utilizan las interfaces comunes, por lo tanto el agente de la IA funcionará controlando un escritorio remoto observando los pixeles proyectados en la pantalla y generando respuestas tanto en el teclado como en el ratón. El sistema está basado en servidores VNC y la librería propia de Universe permite al agente conectar con ellos.

https://farm6.staticflickr.com/5607/30635483973_03a238fb25.jpg

 

Estos son los entornos que podemos elegir para realizar nuestras pruebas:

  • Juegos Atari
  • Juegos Flash
  • Juegos con recompensas (juegos con puntuación por ejemplo)
  • Tareas con navegadores (navegar, leer, hacer click, etc).
  • Mini World of Bits (tareas sencillas muy específicas como leer un texto, identificar formas, etc)
  • Tareas con navegadores más reales (reservar un hotel por ejemplo

Esta infraestructura permite que cualquier aplicación, juegos, página web, etc que pueda integrarse en un contenedor Docker (este es el entorno ideal) ó en una máquina virtual (este no funciona tan bien como Docker) sea susceptible de ser integrada dentro de Universe. Esto abre otro mundo de posibilidades, como el subir tu propia aplicación, juego, página web, etc y que lo prueben los agentes de OpenAI, un verdadero centro de pruebas realmente útil para tareas de testing.

La instalación es bastante sencilla, sólo necesitas Docker y Universe

$ git clone https://github.com/openai/universe && pip install -e universe

Luego instalamos el port de VNC para poder controlar el teclado y el ratón, además incluimos el tipo de entorno, en el ejemplo son juegos flash:

$ docker run --privileged --cap-add=SYS_ADMIN --ipc=host \ -p 5900:5900 -p 15900:15900 quay.io/openai/universe.flashgames

Finalmente sólo tenemos que conectarnos con nuestro visor VNC al puerto 5900.

Pero claro, para poder hacer las pruebas tenemos que crear nuestro propio agente de IA. Tenemos varias opciones utilizando Frameworks como por ejemplo TensorFlow ó Theano (OpenAI te ofrece la opción de comenzar con un agente inicial creado con Theano). Este agente de pruebas utiliza la librería NumPy para el control de los pixels (o en otras palabras, ver la pantalla), y además genera los eventos necesarios para controlar el ratón y el teclado a través de VNC.

Este es un ejemplo de un agente que activará el juego flash “Dusk Drive” (es un juego de coches) y pulsará la tecla “hacia adelante” (que se realiza con la flecha arriba del teclado) constantemente:

 

import gym
import universe # register Universe environments into Gym

env = gym.make('flashgames.DuskDrive-v0') # any Universe environment ID here
# If using docker-machine, replace "localhost" with your Docker IP
env.configure(remotes="vnc://localhost:5900+15900")
observation_n = env.reset()

while True:
  # agent which presses the Up arrow 60 times per second
  action_n = [[('KeyEvent', 'ArrowUp', True)] for _ in observation_n]
  observation_n, reward_n, done_n, info = env.step(action_n)
  env.render()

 

Puedes simplemente estar como observador viendo como juega la AI o puedes unirte también para jugar en modo cooperativo.

Para que veáis que la cosa va en serio, estos son sólo algunas de las aplicaciones y juegos que dan soporte a OpeanAI para este proyecto:

Portal, Fable Anniversary, World of Goo, RimWorld, Slime Rancher, Shovel Knight, SpaceChem, Wing Commander III, Command & Conquer: Red Alert 2, Syndicate, Magic Carpet, Mirror’s Edge, Sid Meier’s Alpha Centauri, y Wolfram Mathematica.

Un proyecto realmente espectacular sobre el cual tendremos que hacer un seguimiento exhaustivo. Además, seguro que más de uno ya está pensando en cómo sacar partido a esta plataforma para montar un entorno de pentesting para temas de seguridad ¿verdad? 😉

Entradas relacionadas: