Una investigación reciente muestra que la estilometría –análisis estadístico del estilo lingüístico– también se puede aplicar en lenguajes de programación. Es decir, los fragmentos de códigos de desarrolladores de software, también son una forma de huellas dactilares. Y un grupo de profesores descubrieron que el código no es del todo anónimo, por lo que pueden identificar a cualquier programador.
Rachel Greenstadt, profesora asociada de informática en la Universidad de Drexel, y Aylin Caliskan, ex estudiante de doctorado de Greenstadt, descubrieron que el código, al igual que otras formas de expresión estilística, no es anónimo.
Cómo descifrar al autor del código
En primer lugar, el algoritmo que diseñaron las profesoras, identifica todas las características encontradas en una selección de código.
Aunque, cada lenguaje de programación cuenta con una sintaxis especifica, no podemos dejar pasar que lo que hacemos con esta, en cuanto a estructura y semántica, se ve influenciado con el programador.
Sin embargo, hasta ahora es difícil detectar explicitamente, que desarrollador escribió un bloque de código –al menos no sin conocerlo o haber trabajado antes.
Pero, gracias al algoritmo de aprendizaje automático, Greenstadt y Caliskan, redujeron las variables para incluir solo las que distinguen a los desarrolladores entre sí, reduciendo la lista a 50 aspectos.
Los investigadores crearon «árboles sintácticos abstractos«, que reflejan la estructura subyacente del código, en lugar de sus componentes arbitrarios.
Las personas deben ser conscientes de que, en general, es muy difícil ocultar por completo su identidad en este tipo de situaciones.
Rachel Greenstadt, Universidad de Drexel
Los estudios de Caliskan y un equipo de otros investigadores, tienen antecedentes desde el 2017, donde demostraron en un documento publicado, que es posible identificar a un programador usando solo su código binario compilado.
El compilador es el encargado de traducir el código de cualquier lenguaje de programación, a un lenguaje que puede ser entendido por la maquina. El compilador, convierte el código en una serie de 1s y 0 (binario) que puede leer una máquina.
Para descompilar el binario, los investigadores implementaron el lenguaje de programación C++, conservando elementos del estilo único de un desarrollador.
Para llevar a cabo el experimento binario, Caliskan y los otros investigadores usaron muestras de código de la competencia anual Code Jam de Google.
El algoritmo de aprendizaje automático identificó correctamente un grupo de 100 programadores individuales el 96 por ciento de las veces, usando ocho muestras de código de cada uno. Incluso cuando el tamaño de la muestra se amplió a 600 programadores, el algoritmo aún realizó una identificación precisa el 83 por ciento de las veces.
Por ahora, los investigadores enfatizan que el código de anonimización es aún un proceso misterioso, aunque hasta ahora sus métodos han demostrado que funcionan.