vk_logo twitter_logo facebook_logo googleplus_logo youtube_logo telegram_logo telegram_logo

ИИ научился распознавать программистов по исходному коду

Дата публикации: 15.08.2018
Количество просмотров: 453
Автор:

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

Специалисты по статистическому анализу лингвистического стиля (стилометрии) давно знают, что письмо – это уникальный, индивидуализированный процесс. Выбранный человеком словарь, характерный синтаксис и грамматические решения служат его своеобразной подписью. Автоматизированные инструменты теперь могут точно так же идентифицировать автора сообщения на форуме, если у них есть достаточное количество данных для анализа. Но новые исследования показывают, что стилометрия может также применяться к искусственным языковым образцам, например, программному коду. Оказывается, разработчики программного обеспечения также оставляют "отпечатки пальцев".

Рэйчел Гринстадт из Университета Дрекселя и Айлин Калискан из Университета Джорджа Вашингтона обнаружили, что код, как и другие формы стилистического выражения, не оставляет шанса остаться анонимным. На конференции DefCon ученые представят ряд исследований, которые они провели с использованием методов машинного обучения, чтобы деанонимизировать авторов образцов кода. Часть работы финансировалась и проводилась в сотрудничестве с Исследовательской лабораторией армии США (United States Army Research Laboratory). Результаты могут быть полезны, например, в споре о плагиате, но также могут иметь определенные последствия для конфиденциальности тысяч разработчиков, которые работают с открытым исходным кодом.

Основной метод компьютерной стилоскопии – поиск характерных образцов кода, по которым можно "вычислить" автора (таких образцов начитывается около 50). На их базе формируется "абстрактное дерево синтаксиса", которое отражает базовую структуру кода и дает возможность идентификации автора.

Принцип деанонимизации программиста
Принцип деанонимизации программиста

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

Зависимость результата от количества данных для тренировки деанонимайзера
Зависимость результата от количества данных для тренировки деанонимайзера

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

От редакции: если у вас есть чем поделиться с коллегами по отрасли, приглашаем к сотрудничеству
Ссылка на материал, для размещения на сторонних ресурсах
/news/newsline/101878/ii-nauchilsya-raspoznavat-programmistov-po-ishodnomu-kodu.html

Обсудить на форуме

Оставлять комментарии могут только зарегистрированные пользователи

Зарегистрироваться