ИИ научился распознавать программистов по «фирменному почерку»

Софт Кадры Интеграция
мобильная версия
, Текст: Дмитрий Степанов
Американские ученые, применив знания из области стилометрии, научили искусственный интеллект идентифицировать авторов исходного кода. Данная технология потенциально способна помочь в решении широкого круга задач: от выявления плагиата до борьбы с киберпреступностью.

Цифровой «отпечаток пальца» программиста

Рейчел Гринстед (Rachel Greenstadt), профессор Дрексельского университета, Пенсильвания, США и Айлин Калискан (Aylin Caliskan), доцент Университета Джорджа Вашингтона, Вашингтон, округ Колумбия, США, разработали систему машинного обучения, которая способна «деанонимизирвать» программистов при помощи анализа исходного кода или скомпилированных бинарных файлов.

Для тестирования алгоритма исследовательницы воспользовались образцами программ, написанных в рамках Google Code Jam – ежегодного международного соревнования по программированию, проводимого под эгидой Google. В результате искусственный интеллект смог правильно определить автора в 96% случаев, проанализировав по восемь образцов кода, написанного 100 разными программистами. Увеличение числа участников до 600 несколько снизило эффективность алгоритма – 83% авторов были корректно опознаны системой.

В ходе работы Гринстед и Калискан выявили несколько любопытных закономерностей. Так, оказалось, что более опытных разработчиков идентифицировать по коду программы проще, чем новичков. Как отмечают авторы, это может быть связано с тем, что начинающие программисты часто прибегают к заимствованию фрагментов чужого года, найденного на тематических ресурсах в Сети.

programmer600.jpg
Американки научили искусственный интеллект «деанонимизировать» программистов

Также была выявлена зависимость между сложностью решаемой задачи и простотой идентификации автора решения. В результате анализа листингов исходного кода при решении относительно простых задач, алгоритм правильно определил авторство в 90% случаев. При решении более сложных задач эффективность ИИ возростала до 95%.

Как это работает

Работа девушек основана на стилометрии – статистическом анализе языкового стиля. Исследователям в данной области давно известно, что стиль письма каждого индивидуума уникален: набор слов, применяемых автором, особенности синтаксиса и грамматики – все это формирует собственный неповторимый стилистический «отпечаток пальцев», позволяющий с высокой точностью идентифицировать автора текста при наличии достаточного количества образцов работ.

На первом этапе своей работы алгоритм выявляет характерные черты фрагмента исходного кода. Исследовательницам удалось сузить перечень оцениваемых характеристик до 50 – остались только те, которые действительно помогают отличить одного программиста от другого. Несущественными ученые посчитали, к примеру, то, как отформатирован исходный код.

На основе собранных данных строится так называемое абстрактное синтаксическое дерево, отражающее общую структуру кода, а не его произвольные компоненты.

Важно отметить, что для правильного функционирования метод нуждается в нескольких образцах работ одного и того же автора.

Применение находки и возможные последствия

Ученые считают, что результаты их работы могут быть использованы для выявления случаев недобросовестного заимствования кода. Например, преподаватели технических вузов получат возможность проанализировать код, предоставленный студентами-программистами, и с большой долей уверенности сказать, написан ли код самостоятельно или позаимствован из чужих работ.

Софтверные компании смогут контролировать соблюдение сотрудниками-программистами условий контракта, чтобы избегать случаев, когда уволившиеся работники используют наработки, ранее перешедшие в собственность компании, в сторонних проектах.

Специалисты сферы информационной безопасности также нашли бы применение технологии – определить разработчика вредоносного ПО при помощи подобной системы ИИ стало бы намного легче.

В то же самое время взятие такого инструмента на вооружение спецслужбами авторитарных режимов потенциально способно усложнить жизнь разработчикам решений для обхода государственной цензуры в интернете.

Могут пострадать и разработчики, которые регулярно вносят свой вклад в развитие свободного программного обеспечения, утратив возможность сохранять анонимность. По словам Гринстед, обфускация (намеренное запутывание) исходного кода не слишком помогает в деле сохранения анонимности – даже после такой обработки код сохраняет уникальный авторский «отпечаток».

«Люди должны понимать, что не существует гарантированного способа скрыть личность в подобного рода ситуациях», – отметила Гринстед.

В другой работе за авторством Люси Симко (Lucy Simko), коллеги Калискан, рассказывается, что программисты все же могут видоизменить собственный код таким образом, чтобы обмануть алгоритм, не обладая при этом специальными навыками.