Estilometría de código


La estilometría de código (también conocida como atribución de autoría de programa o análisis de autoría de código fuente ) es la aplicación de estilometría al código de computadora para atribuir la autoría a código binario o fuente anónimo . A menudo implica desglosar y examinar los patrones y características distintivos del código de programación y luego compararlos con el código de computadora cuya autoría se conoce. [1] A diferencia del análisis forense de software , la estilometría del código atribuye la autoría para fines distintos a la infracción de propiedad intelectual , incluida la detección de plagio., investigación de derechos de autor y verificación de autoría. [2]

En 1989, los investigadores Paul Oman y Curtis Cook identificaron la autoría de 18 programas diferentes de Pascal 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 autor basado en diccionario llamado IDENTIFIED (Extracción integrada basada en diccionario de información de tokens no dependiente del idioma para identificación forense, examen y discriminación) que determinaba la autoría. de código fuente en programas de computadora escritos en C ++ . Los investigadores señalaron que la autoría se puede identificar mediante grados si hay flexibilidad en el estilo de escritura del código fuente, como: [4]

El sistema IDENTIFICADO atribuyó la autoría fusionando primero todos los archivos relevantes para producir un solo archivo de código fuente y luego sometiéndolo a un análisis de métricas contando el número de ocurrencias para cada métrica. Además, el sistema era independiente del idioma debido a su capacidad para crear nuevos archivos de diccionario 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 efectividad del uso de una red neuronal de retroalimentación (FFNN) que fue entrenada 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 tenían 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 de atribución de autoría de programas independiente del lenguaje en el que utilizaban n-gramas de nivel de bytes.clasificar un programa a un autor. Esta técnica escaneó los archivos y luego creó una tabla de diferentes n-gramas que se encuentran en el código fuente y la cantidad de veces que aparecen. Además, el sistema podría funcionar con un número limitado de ejemplos de formación de cada autor. Sin embargo, cuantos más programas de código fuente estuvieran presentes para cada autor, más confiable será la atribución del autor. En un experimento que probaba su enfoque, los investigadores encontraron que la clasificación usando n-gramos alcanzó una tasa de precisión de hasta el 100%, aunque la tasa disminuyó drásticamente si el tamaño del perfil excedía 500 y el tamaño de n-gramo era 3 o menos. [3]