Идентификация автора исходного кода методами машинного обучения
Ключевые слова:
автор исходного кода, глубокое обучение, нейронная сеть, 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).
Опубликован
Как цитировать
Раздел
Copyright (c) 2019 Анна Владимировна Куртукова, Александр Сергеевич Романов
Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Авторы, которые публикуются в данном журнале, соглашаются со следующими условиями: Авторы сохраняют за собой авторские права на работу и передают журналу право первой публикации вместе с работой, одновременно лицензируя ее на условиях Creative Commons Attribution License, которая позволяет другим распространять данную работу с обязательным указанием авторства данной работы и ссылкой на оригинальную публикацию в этом журнале. Авторы сохраняют право заключать отдельные, дополнительные контрактные соглашения на неэксклюзивное распространение версии работы, опубликованной этим журналом (например, разместить ее в университетском хранилище или опубликовать ее в книге), со ссылкой на оригинальную публикацию в этом журнале. Авторам разрешается размещать их работу в сети Интернет (например, в университетском хранилище или на их персональном веб-сайте) до и во время процесса рассмотрения ее данным журналом, так как это может привести к продуктивному обсуждению, а также к большему количеству ссылок на данную опубликованную работу (Смотри The Effect of Open Access).