Идентификация автора исходного кода методами машинного обучения
Ключевые слова:
автор исходного кода, глубокое обучение, нейронная сеть, SVM, HNNАннотация
Статья посвящена анализу проблемы определения автора исходного кода, которая представляет интерес для исследователей в области информационной безопасности, компьютерной криминалистики, оценки качества образовательного процесса, защиты интеллектуальной собственности.
Представлен подробный анализ современных решений проблемы. Предлагаются две новые методики идентификации на основе алгоритмов машинного обучения: машины опорных векторов, фильтра быстрой корреляции и информативных признаков; гибридной сверточно-рекуррентной нейронной сети.
Эксперименты проводились на базе исходных кодов, написанных на наиболее популярных языках программирования. В экспериментальную базу вошли экземпляры исходных кодов, написанных на Java, C++, Python, PHP, JavaScript, C, C# и Ruby. Данные были получены с веб-сервиса для хостинга IT-проектов Github. Общее количество исходных кодов превышает 150 тысяч образцов, средняя длина каждого из которых составляет 850 символов. Размер корпуса — 542 автора.
С помощью перекрестной проверки по 10 блокам оценена точность разработанных методик для различного количества авторов. Для наиболее популярного языка программирования Java проведен дополнительный ряд экспериментов с количеством авторов от 2 до 50 и приведены графики зависимости точности идентификации от размера корпуса.
Анализ результатов показал, что методика на основе гибридной нейронной сети способна достигать точности 97%, что является наилучшим результатом на сегодняшний день. Методика на основе машины опорных векторов позволила добиться точности 96%. Гибридная нейронная сеть оказалась точнее машины опорных векторов в среднем на 5%.
Литература
2. Alsulami B. et al. Source Code Authorship Attribution using Long Short-Term Memory Based Networks // Proceedings of the 22nd European Symposium on Research in Computer Security. 2017. pp. 65–82.
3. Wisse W., Veenman C.J. Scripting DNA: Identifying the JavaScript Programmer // Digital Investigation. 2015. vol. 15. pp. 61–71.
4. Gull M., Zia T., Ilyas M. Source Code Author Attribution Using Author’s Programming Style and Code Smells // International Journal of Intelligent Systems and Applications. 2017. vol. 9. no. 5. pp. 27–33.
5. Caliskan-Islam A. et al. De-anonymizing programmers via code stylometry // Proceedings of the 24th USENIX Security Symposium. 2015. pp. 255–270.
6. Dauber E. et al. Poster: Git Blame Who?: Stylistic Authorship Attribution of Small, Incomplete Source Code Fragments // 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion). 2018. pp. 356–357.
7. Wang N., Ji S., Wang T. Integration of Static and Dynamic Code Stylometry Analysis for Programmer De-anonymization // Proceedings of the 11th ACM Workshop on Artificial Intelligence and Security. 2018. pp. 74–84.
8. Abuhamad M., AbuHmed T., Mohaisen A., Nyang D. Large-Scale and Language-Oblivious Code Authorship Identification // Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. 2018. pp. 101–114.
9. Mohsen A.M., El-Makky N.M., Ghanem N. Author Identification using Deep Learning // 2016 15th IEEE International Conference on Machine Learning and Applications (ICMLA). 2016. pp. 898–903.
10. Созинова И.С., Романов А.С., Мещеряков Р.В. Определение поискового спама с использованием метода опорных векторов // Труды СПИИРАН. 2014. Т. 5. № 36. С. 78–91.
11. Wu T.F., Lin C.J., Weng R.C. Probability estimates for multi-class classification by pairwise coupling // Journal of Machine Learning Research. 2004. vol. 5. pp. 975–1005.
12. Романов А.С., Шелупанов А.А., Мещеряков Р.В. Разработка и исследование математических моделей, методик и программных средств информационных процессов при идентификации автора текста // Томск: В-Спектр. 2011. 188 с.
13. LeCun Y., Bengio Y., Hinton G. Deep learning // Nature. 2015. vol. 521. no. 7553. pp. 436–444.
14. Schmidhuber J. Deep Learning in Neural Networks: An Overview // Neural Networks. 2015. vol. 61. pp. 85–117.
15. Zhang X., Zhao J., LeCun Y. Character-level Convolutional Networks for Text Classification // Advances in neural information processing systems. 2015. pp. 649–657.
16. Najafabadi M.M. et al. Deep learning applications and challenges in big data analytics // Journal of Big Data. 2015. vol. 2. no. 1. pp. 21.
17. Chen X.W., Lin X. Big Data Deep Learning: Challenges and Perspectives // IEEE Access. 2014. vol. 2. pp. 514–525.
18. Gulli A., Pal S. Deep learning with Keras // Packt Publishing Ltd. 2017. 490 p.
19. Fei H., Tan F. Bidirectional Grid Long Short-Term Memory (BiGridLSTM): A Method to Address Context-Sensitivity and Vanishing Gradient // Algorithms. 2018. vol. 11. no. 11. pp. 172.
20. Szegedy C. et al. Going Deeper with Convolutions // Proceedings of the IEEE conference on computer vision and pattern recognition. 2015. pp. 1–9.
21. Zeiler M.D. Adadelta: an adaptive learning rate // arXiv preprint arXiv:1212.5701. 2012.
22. Nwankpa C., Ijomah W., Gachagan A., Marshall S. Activation Functions: Comparison of trends in Practice and Research for Deep Learning // arXiv preprint arXiv:1811.03378. 2018.
23. Github. URL: https://github.com/ (дата обращения: 20.02.2019).
Identification Author of Source Code by Machine Learning Methods
Abstract
The paper is devoted to the analysis of the problem of determining the source code author , which is of interest to researchers in the field of information security, computer forensics, assessment of the quality of the educational process, protection of intellectual property.
The paper presents a detailed analysis of modern solutions to the problem. The authors suggest two new identification techniques based on machine learning algorithms: support vector machine, fast correlation filter and informative features; the technique based on hybrid convolutional recurrent neural network.
The experimental database includes samples of source codes written in Java, C ++, Python, PHP, JavaScript, C, C # and Ruby. The data was obtained using a web service for hosting IT-projects – Github. The total number of source codes exceeds 150 thousand samples. The average length of each of them is 850 characters. The case size is 542 authors.
The experiments were conducted with source codes written in the most popular programming languages. Accuracy of the developed techniques for different numbers of authors was assessed using 10-fold cross-validation. An additional series of experiments was conducted with the number of authors from 2 to 50 for the most popular Java programming language. The graphs of the relationship between identification accuracy and case size are plotted. The analysis of result showed that the method based on hybrid neural network gives 97% accuracy, and it’s at the present time the best-known result. The technique based on the support vector machine made it possible to achieve 96% accuracy. The difference between the results of the hybrid neural network and the support vector machine was approximately 5%.
Опубликован
Как цитировать
Раздел
Copyright (c) 2019 Анна Владимировна Куртукова, Александр Сергеевич Романов

Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Авторы, которые публикуются в данном журнале, соглашаются со следующими условиями: Авторы сохраняют за собой авторские права на работу и передают журналу право первой публикации вместе с работой, одновременно лицензируя ее на условиях Creative Commons Attribution License, которая позволяет другим распространять данную работу с обязательным указанием авторства данной работы и ссылкой на оригинальную публикацию в этом журнале. Авторы сохраняют право заключать отдельные, дополнительные контрактные соглашения на неэксклюзивное распространение версии работы, опубликованной этим журналом (например, разместить ее в университетском хранилище или опубликовать ее в книге), со ссылкой на оригинальную публикацию в этом журнале. Авторам разрешается размещать их работу в сети Интернет (например, в университетском хранилище или на их персональном веб-сайте) до и во время процесса рассмотрения ее данным журналом, так как это может привести к продуктивному обсуждению, а также к большему количеству ссылок на данную опубликованную работу (Смотри The Effect of Open Access).