La estilometría de código (también conocida como atribución de autoría de programas o análisis de autoría de código fuente ) es la aplicación de la estilometría al código informático para atribuir la autoría a un código binario o fuente anónimo . A menudo implica descomponer y examinar los patrones y características distintivos del código de programación y luego compararlos con el código informático cuya autoría se conoce. [1] A diferencia de la investigación forense de software , la estilometría de código atribuye la autoría para fines distintos a la infracción de la propiedad intelectual , incluida la detección de plagio , la investigación de derechos de autor y la verificación de autoría. [2]
En 1989, los investigadores Paul Oman y Curtis Cook identificaron la autoría de 18 programas Pascal diferentes escritos por seis autores utilizando “marcadores” basados en características tipográficas . [3]
En 1998, los investigadores Stephen MacDonell, Andrew Gray y Philip Sallis desarrollaron un sistema de atribución de autores basado en diccionarios llamado IDENTIFIED (Integrated Dictionary-based Extraction of Non-language-dependent Token Information for Forensic Identification, Examination, and Discrimination) que determinaba la autoría del código fuente en programas informáticos escritos en C++ . Los investigadores observaron que la autoría se puede identificar utilizando grados de flexibilidad en el estilo de escritura del código fuente, como: [4]
El sistema IDENTIFIED atribuía la autoría fusionando primero todos los archivos relevantes para producir un único archivo de código fuente y luego sometiéndolo a un análisis de métricas contando la cantidad de ocurrencias de cada métrica. Además, el sistema era independiente del lenguaje debido a su capacidad para crear nuevos archivos de diccionarios y metadiccionarios. [4]
En 1999, un equipo de investigadores dirigido por Stephen MacDonell probó el rendimiento de tres técnicas diferentes de discriminación de autoría de programas en 351 programas escritos en C++ por 7 autores diferentes. Los investigadores compararon la eficacia de utilizar una red neuronal de propagación hacia adelante (FFNN) que se entrenó en un algoritmo de retropropagación , análisis discriminante múltiple (MDA) y razonamiento basado en casos (CBR) . Al final del experimento, tanto la red neuronal como el MDA tuvieron una tasa de precisión del 81,1%, mientras que el CBR alcanzó un rendimiento de precisión del 88,0%. [5]
En 2005, investigadores del Laboratorio de Seguridad de Sistemas de Información y Comunicación de la Universidad del Egeo introdujeron un método independiente del lenguaje de atribución de autoría de programas, en el que utilizaban n -gramas a nivel de bytes para clasificar un programa según su autor. Esta técnica escaneaba los archivos y luego creaba una tabla de los diferentes n -gramas encontrados en el código fuente y la cantidad de veces que aparecían. Además, el sistema podía funcionar con un número limitado de ejemplos de entrenamiento de cada autor. Sin embargo, cuantos más programas de código fuente estuvieran presentes para cada autor, más fiable sería la atribución del autor. En un experimento que probó su enfoque, los investigadores descubrieron que la clasificación mediante n -gramas alcanzaba una tasa de precisión de hasta el 100%, aunque la tasa disminuía drásticamente si el tamaño del perfil superaba los 500 y el tamaño de los n -gramas era 3 o menos. [3]
En 2011, investigadores de la Universidad de Wisconsin crearon un sistema de atribución de autoría de programas que identificaba a un programador basándose en el código binario de un programa en lugar del código fuente. Los investigadores utilizaron el aprendizaje automático y el código de entrenamiento para determinar qué características del código serían útiles para describir el estilo de programación. En un experimento en el que se probó el enfoque en un conjunto de programas escritos por 10 autores diferentes, el sistema alcanzó una tasa de precisión del 81 %. Cuando se probó con un conjunto de programas escritos por casi 200 autores diferentes, el sistema funcionó con una tasa de precisión del 51 %. [6]
En 2015, un equipo de investigadores postdoctorales de la Universidad de Princeton , la Universidad de Drexel , la Universidad de Maryland y la Universidad de Goettingen , así como investigadores del Laboratorio de Investigación del Ejército de los EE. UU., desarrollaron un sistema de atribución de autoría de programas que podía determinar el autor de un programa a partir de un conjunto de programas escritos por 1600 programadores con una precisión del 94 por ciento. La metodología constaba de cuatro pasos: [7]
Este enfoque analizaba diversas características del código, como el espacio en blanco, el uso de tabulaciones y espacios y los nombres de las variables, y luego utilizaba un método de evaluación llamado análisis de árbol sintáctico que traducía el código de muestra en diagramas con forma de árbol que mostraban las decisiones estructurales involucradas en la escritura del código. El diseño de estos diagramas priorizaba el orden de los comandos y la profundidad de las funciones que se encontraban en el código. [8]
Los funcionarios de inteligencia de Estados Unidos pudieron determinar que el ciberataque de 2014 a Sony Pictures fue patrocinado por Corea del Norte después de evaluar el software, las técnicas y las fuentes de la red. La atribución se realizó después de que los expertos en ciberseguridad notaron similitudes entre el código utilizado en el ataque y un software malicioso conocido como Shamoon , que se utilizó en los ataques de 2013 contra los bancos y las empresas de radiodifusión de Corea del Sur por parte de Corea del Norte. [9]
{{cite book}}
: |website=
ignorado ( ayuda )