1. Новости
Заметки пользователей
15.08.2018 08:23
PDF
909
0

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

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

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

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

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

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

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

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

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

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