stringtranslate.com

Estilometría del código

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]

Historia

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]

  1. Desmontaje - Se desmonta el programa para obtener información sobre sus características.
  2. Descompilación : El programa se convierte en una variante de pseudocódigo tipo C a través de la descompilación para obtener árboles de sintaxis abstracta .
  3. Reducción de dimensionalidad : se seleccionan las características más relevantes y útiles para la identificación del autor.
  4. Clasificación : Un clasificador de bosque aleatorio atribuye la autoría del programa.

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]

El ataque informático a Sony Pictures en 2014

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]

Referencias

  1. ^ Claburn, Thomas (16 de marzo de 2018). «Para su información: las herramientas de inteligencia artificial pueden desenmascarar a los codificadores anónimos a partir de sus ejecutables binarios». The Register . Consultado el 2 de agosto de 2018 .
  2. ^ Desanonimizar a los programadores mediante la estilometría de código. 12 de agosto de 2015. ISBN 9781939133113. Recuperado el 2 de agosto de 2018 . {{cite book}}: |website=ignorado ( ayuda )
  3. ^ ab Frantzeskou, Georgia; Stamatatos, Efstathios; Gritzalis, Stefanos (octubre de 2005). "Apoyo al proceso de investigación de delitos cibernéticos: discriminación eficaz de los autores de código fuente en función de la información a nivel de bytes". Comercio electrónico y redes de telecomunicaciones . Comunicaciones en informática y ciencias de la información. Vol. 3. págs. 283–290. doi :10.1007/978-3-540-75993-5_14. ISBN 978-3-540-75992-8– a través de ResearchGate.
  4. ^ ab Gray, Andrew; MacDonnell, Stephen; Sallis, Philip (enero de 1998). "IDENTIFIED (Extracción integrada basada en diccionario de información de token no dependiente del lenguaje para identificación, examen y discriminación forense): un sistema basado en diccionario para extraer métricas de código fuente para análisis forense de software". Actas. Conferencia internacional de 1998 Ingeniería de software: educación y práctica (Cat. No.98EX220) . págs. 252–259. doi :10.1109/SEEP.1998.707658. hdl : 10292/3472 . ISBN . 978-0-8186-8828-7. S2CID  53463447 – vía ResearchGate.
  5. ^ MacDonell, Stephen; Gray, Andrew; MacLennan, Grant; Sallis, Philip (febrero de 1999). "Ingeniería forense de software para discriminar entre autores de programas mediante razonamiento basado en casos, redes neuronales de propagación hacia adelante y análisis discriminante múltiple". Procesamiento de información neuronal . 1 . ISSN  1177-455X – vía ResearchGate.
  6. ^ Rosenblum, Nathan; Zhu, Xiaojin; Miller, Barton (septiembre de 2011). "¿Quién escribió este código? Identificación de los autores de los binarios de los programas". Actas de la 16.ª Conferencia Europea sobre Investigación en Seguridad Informática . Esorics'11: 172–189. ISBN 978-3-642-23821-5– vía Biblioteca Digital ACM.
  7. ^ Brayboy, Joyce (15 de enero de 2016). «Los codificadores maliciosos perderán el anonimato a medida que madure la investigación para encontrar la identidad». Ejército de EE. UU . . Consultado el 2 de agosto de 2018 .
  8. ^ Greenstadt, Rachel (27 de febrero de 2015). "Buscando huellas digitales cibernéticas: el estilo de codificación identifica a programadores anónimos". Revista Forense . Consultado el 2 de agosto de 2018 .
  9. ^ Brunnstrom, David; Finkle, Jim (18 de diciembre de 2014). "Estados Unidos considera una respuesta 'proporcional' al ataque informático a Sony". Reuters . Consultado el 2 de agosto de 2018 .