Проблемы нарушения авторских прав и бесконтрольного плагиата программных продуктов являются следствием стремительной информатизации общества. Решения данных проблем не могут быть тривиальными и подразумевать лишь исследование экспертами исходного кода без применения специализированных инструментов. Это делает особо важной задачу разработки автоматизированной системы, способной точной идентифицировать автора программного обеспечения (ПО).
Система для идентификации автора исходного кода может быть полезной сразу в нескольких предметных областях. Первая из них — область разработки коммерческого ПО. Такая система позволит компаниям-разработчикам программных продуктов защищать свои авторские права на написанные их сотрудниками исходные коды программ, что, в свою очередь, станет своеобразной «подушкой безопасности» от серьезных убытков, возникающих вследствие судебных разбирательств, предметами которых являются споры об интеллектуальной собственности.
Вторая область применения — информационная безопасность и форензика (компьютерная криминалистика). Анонимность в сети Интернет, ставшая возможной благодаря развитию криптографических технологий, является первопричиной активного роста количества киберпреступлений. Различные вредоносные программы способны выводить из строя даже самые защищенные автоматизированные системы. Сама потенциальная возможность идентификации автора-вирусописателя может притормозить или, по крайней мере, замедлить развитие киберпреступности.
Образовательный процесс также может быть улучшен с помощью системы идентификации автора исходного кода. В данном случае, речь идет о ее применение в качестве «Антиплагиата» для исходных кодов программ, которые пишут студенты технических специальностей. Таким образом, плагиат среди студентов будет выявлен, а следовательно, процесс оценки студенческих работ станет более корректным.
Суть предлагаемого решения — это разработка методики и алгоритмического обеспечения на основе нейронных сетей для решения задачи идентификации автора исходного кода, а также создание интеллектуальной системы на их основе. С целью создания такой системы возникает необходимость в выполнении ряда задач, а именно в:
разработке собственной методики идентификации автора исходного кода на основе полученных результатов;
разработке экспериментальной базы, включающей в себя корпуса, написанные на различных языках программирования, содержащие языковые комбинации (применение автором 2 и более языков), содержащие обфусцированные исходные коды;
разработке программной системы для идентификации автора исходного кода;
разработке рекомендаций для конечных пользователей по применению системы для решения практических задач.
Следует отметить, что разрабатываемая система не имеет аналогов на международном рынке, однако существуют аналоги применяемой методики. Наиболее известные из них:
Подход Yang X., Li Q., Guo Y. на основе метода роя частиц и нейронной сети. Точность для языка Java — 91 %.
Подход Alsulami B., Dauber E. на основе абстрактных синтаксических деревьев и нейронной сети с архитектурой BiLSTM. Точность для языка C++ — 85 %.
Подход Caliskan-Islam A., Harang R. на основе случайного леса и абстрактных синтаксических деревьев. Точность для языка Python — 90 %.
Немаловажный факт — перечисленные аналоги гарантируют заявленную точность только для одного языка программирования и могут быть не устойчивы в сложных случаях (обфускация исходных кодов или наборы со смашенными языками программирования), что является их безусловным недостатком.
Принципиальная инновационность разрабатываемой интеллектуальной системы состоит в отсутствии полнофункциональных аналогов разрабатываемой интеллектуальной системы, а также отсутствии высокоточных методик, не зависящих от языка программирования. Разработка характеризуется высокой точностью идентификации от 90 % для различных языков программирования, минимально необходимым количеством образцов и независимостью от языка программирования.
Интеллектуальная система для идентификации автора исходного кода на основе нейронных сетей будет выполнена в удобном для пользователя формате веб-сервиса. Данный сервис будет осуществлять автоматизированное выполнение всех необходимых для определения автора-программиста этапов. Предварительный вид системы в процессе обучения представлен на изображении ниже.