Ключевые слова: авторство, исходный код, коммиты, генерация, нейронная сеть
Идентификация автора исходного кода программы на основе неоднородных данных для решения задач кибербезопасности
УДК 004.89
DOI: 10.26102/2310-6018/2022.38.3.016
Статья посвящена идентификации автора неоднородного исходного кода программы на основе гибридной нейронной сети. Решения данной проблемы особенно актуальны для областей информационной безопасности, образовательного процесса и защиты авторского права. В статье представлен анализ современных методов решения поставленной задачи. Авторами предлагается собственная методика на основе гибридной нейронной сети, зарекомендовавшей себя в ранних исследованиях, направленных на оценку эффективности данного подхода в простых и сложных случаях. Данная работа включает в себя эксперименты по ранее не рассмотренным случаям идентификации автора исходного кода на основе неоднородных данных. Рассматриваются случаи, актуальные для корпоративной разработки. Среди них анализ исходных кодов, представленных в виде коммитов, и обучение модели на наборах данных, включающих в себя два и более языка программирования. Также исследовано набирающее популярность направление определения авторства искусственно сгенерированного исходного кода. Для каждого случая сформирован набор данных и проведен эксперимент. Оценка эффективности авторской методики для всех трех сложных случаев осуществлена при помощи перекрестной проверки по 10 блокам. Средняя точность для смешанных наборов данных составила 87 % для двух языков программирования и 76 % для трех и более языков, соответственно. Точность методики для решения задачи определения авторства искусственно сгенерированных исходных кодов в среднем составила 81,5 %. Идентификация автора исходного кода программы на основе коммитов осуществлялась с точностью 84 %. Эксперименты показали, что во всех трех случаях эффективность методики может быть повышена путем использования больших объемов обучающих данных.
1. Куртукова А.В., Романов А.С. Идентификация автора исходного кода методами машинного обучения. Труды СПИИРАН. 2019;18(3):741–765.
2. Kurtukova A., Romanov A., Shelupanov A. Source Code Authorship Identification Using Deep Neural Networks. Symmetry. 2020;12:2044.
3. Abuhamad M., AbuHmed T., Mohaisen A., Nyang D. Large-Scale and Language-Oblivious Code Authorship Identification. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. 2018;101–114.
4. Zhen L., Chen G., Chen C., Zou Y., Xu S. RoPGen: Towards Robust Code Authorship Attribution via Automatic Coding Style Transformation. 2022 IEEE 44th International Conference on Software Engineering (ICSE). 2022;1906–1918.
5. Holland C., Khoshavi N., Jaimes L.G. Code authorship identification via deep graph CNNs. In Proceedings of the 2022 ACM Southeast Conference (ACM SE '22). 2022;144–150.
6. Bogdanova A., Romanov V. Explainable source code authorship attribution algorithm. Journal of Physics: Conference Series. 2021;2134:012011. DOI: 10.1088/1742-6596/2134/1/012011.
7. Bogdanova A. Source code authorship attribution using file embeddings. Companion Proceedings of the 2021 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity. 2021;31–33.
8. Bogomolov E., Kovalenko V., Rebryk Y., Bacchelli A., Bryksin T. Authorship attribution of source code: a language-agnostic approach and ap-plicability in software engineering. In Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 2021;932–944.
9. Romanov A., Kurtukova A., Fedotova A., Meshcheryakov R. Natural Text Anonymization Using Universal Transformer with a Self-attention. Proceedings of the III International Conference on Language Engineering and Applied Linguistics. 2019;22–37
10. Caliskan-Islam A. Deanonymizing programmers via code stylometry. Proceedings of the 24th USENIX Security Symposium. 2015;255–270.
11. GitHub. Доступно по: https://GitHub.com/ (дата обращения: 14.08.2022).
12. GitLab. Доступно по: https://gitlab.com/ (дата обращения: 14.08.2022).
13. Rothe S., Narayan S., Severyn A. Leveraging pre-trained checkpoints for sequence generation tasks. Transactions of the Association for Computational Linguistics. 2020;8:264–280.
14. Du Z. All NLP tasks are generation tasks: A general pretraining framework. arXiv preprint arXiv:2103.10360. 2021.
15. Floridi L., Chiriatti M. GPT-3: Its nature, scope, limits, and consequences. Minds and Machines. 2020;30(4):681–694.
16. Lee J. S., Hsiang J. Patent claim generation by fine-tuning OpenAI GPT-2. World Patent Information. 2020;62:101983.
17. Душейко А. Генерация лидов новостных текстов с помощью нейронной сети ruGPT-3: магистерская диссертация по направлению подготовки: 45.04.03 Фундаментальная и прикладная лингвистика. 2022.
18. Pisarevskaya D., Shavrina T. WikiOmnia: generative QA corpus on the whole Russian Wikipedia. arXiv preprint arXiv:2204.08009. 2022.
19. Li Z. RoPGen: towards robust code authorship attribution via automatic coding style transformation. 2022 IEEE/ACM 44th International Conference on Software Engineering (ICSE). IEEE. 2022;1906–1918.
20. Cruz-Benito J. Automated source code generation and auto-completion using deep learning: Comparing and discussing current language model-related approaches. AI. 2021;2(1):1–16.
21. Open AI. Доступно по: https://openai.com/blog/openai-codex (дата обращения 14.08.2022).
22. GitHub Copilot. Доступно по: https://copilot.GitHub.com (дата обращения 14.08.2022).
23. AlphaCode. Доступно по: https://deepmind.com/blog/article/Competitive-programming-with-AlphaCode (дата обращения: 14.08.2022).
24. Sber AI ruGPT-3. Доступно по: https://developers.sber.ru/portal/tools/rugpt-3 (дата обращения: 14.08.2022).
25. PolyCoder. Доступно по: https://venturebeat.com/2022/03/04/researchers-open-source-code-generating-ai-they-claim-can-beat-openais-codex/ (дата обращения: 14.08.2022).
26. Frantzeskou G., Stamatatos E., Gritzalis S. Identifying authorship by bytelevel n-grams: The source code author profile (SCAP) method. Int. J. Digit. Evid. 2007;1:1–18.
27. Wisse W., Veenman C.J. Scripting DNA: Identifying the JavaScript Programmer. Digit. Investig. 2015;15:61–71.
Ключевые слова: авторство, исходный код, коммиты, генерация, нейронная сеть
Для цитирования: Романов А.С., Куртукова А.В., Шелупанов А.А., Федотова А.М. Идентификация автора исходного кода программы на основе неоднородных данных для решения задач кибербезопасности. Моделирование, оптимизация и информационные технологии. 2022;10(3). URL: https://moitvivt.ru/ru/journal/pdf?id=1227 DOI: 10.26102/2310-6018/2022.38.3.016
Поступила в редакцию 04.09.2022
Поступила после рецензирования 18.09.2022
Принята к публикации 24.09.2022
Опубликована 30.09.2022