Una IA es capaz de identificar al programador que haya escrito una aplicación
Investigadores han desarrollado un sistema de aprendizaje automático capaz de identificar a un programador a partir del código que ha escrito.
13 agosto, 2018 20:40Noticias relacionadas
- Tomar curvas peligrosas con la moto será menos peligroso con esta IA avisándonos
- El cofundador de Siri se une al equipo de Sherpa, el asistente inteligente español
- En Japón ya tienen "consignas para redes sociales", que te bloquean la cuenta el tiempo que quieras desconectar
- Por primera vez, un servicio de música online promete la calidad de sonido de los máster
¿Quién ha escrito esa aplicación que usas a diario, ese programa que es vital para tu trabajo, o esa extensión que te ayuda en la Web? Lo más probable es que no lo sepas; no es un dato que la mayoría de la gente busque siquiera.
Incluso si lo buscas, probablemente sólo te encontrarás con el nombre de la empresa. Y es que, hoy en día, cualquier proyecto que se precie implica la participación de muchas personas; pero eso no significa que no podamos saber quién ha desarrollado qué.
La programación es un arte, y como tal, hay muchas interpretaciones posibles; no hay sólo una manera de hacer las cosas, y la creatividad es muy importante. Al mismo tiempo, los programadores suelen ser criaturas de costumbres; para qué reinventar la rueda cada vez que quieras fabricar un coche, ¿verdad?
Identificar a un programador ya es posible usando aprendizaje automático
El problema que ha sido revelado en unas pruebas del Code Jam de Google es que eso significa que es posible identificar a los programadores de un programa; a partir de pequeños detalles en el comportamiento del programa, la sintaxis usada, o el formateado.
El sistema de aprendizaje automático desarrollado por investigadores de la Universidad Drexel y la Universidad George Washington es capaz de eliminar el anonimato de los programadores detrás de cualquier aplicación. Y todo, fijándose en la manera en la que escriben el código fuente.
Aunque parezca que todo el código fuente es igual, en realidad hay pequeñas diferencias dependiendo del programador. Sin embargo, el sistema desarrollado no se fija en detalles como el formato. En vez de eso, crea unos árboles abstractos de sintaxis, que representan la estructura del código escrito; es como si, al analizar un libro, se fijase en la estructura de las frases y no en la sangría de cada línea.
El sistema tiene un porcentaje de éxito del 83%, muy elevado teniendo en cuenta que estos pequeños detalles no suelen ser aparentes a simple vista. Sin embargo, hay que tener en cuenta que el sistema funciona partiendo de ejemplos de código de ese programador; por lo tanto, no es capaz de identificar a un programador sin nada en lo que fijarse. En este caso concreto, el sistema identificó a programadores un 83% de las ocasiones, basándose en una base de datos de 600 programadores con ocho ejemplos cada uno.
¿Se acabó el anonimato en la programación?
El sistema ya ha recibido sus primeras críticas, porque puede suponer el fin del anonimato para los programadores.
La IA podría usarse para identificar a creadores de malware, que comparten su código en sitios de la Deep Web. De esta manera, sería más fácil atrapar a responsables de algunos de los peores ataques de los últimos años.
Pero al mismo tiempo, también podrían acabar con el anonimato de programadores que hayan creado herramientas open-source liberadas anónimamente; personas que, por muchas razones, no querrían la fama (por ejemplo, que la herramienta fuese usada para circunvalar la censura en algunos países).