Американски учени са разработили алгоритъм, способен да идентифицира авторите на програмен код, като използва знания от областта на стилометрията. Новата технология потенциално може да помогне в решаване на широк спектър от проблеми – от засичане на плагиатството до борбата с киберпрестъпността.
Рейчъл Грийнстад, професор в университета Дрексел, Пенсилвания и Айлин Калискан, доцент в университета Джордж Вашингтон, са създали система за машинно обучение, която е в състояние да разпознае програмистите, като анализира изходния код, написан от тях, или компилирани двоични файлове. Изследването е публикувано в документ на симпозиума по сигурност Usenix по-рано този месец във Вашингтон.
За да тестват алгоритъма, изследователите използвали примерни програми, написани в рамките на Google Code Jam – годишен международен конкурс по програмиране, който се провежда под егидата на интернет гиганта. Изкуственият интелект успял правилно да идентифицира авторите в 96% от случаите, като анализирал осем примерни кода, написани от 100 различни програмисти.
Увеличаването на броя на участниците до 600 леко намалило ефективността на алгоритъма – 83% от авторите са били правилно идентифицирани от системата. Но и този резултат е удивително висок.
Цифров „пръстов отпечатък” на програмиста
В хода на изследванията Грийнстад и Калискан установяват няколко любопитни модела на поведение на програмистите. Така например, оказва се, че по-опитните разработчици са по-лесни за идентифициране по програмния код, отколкото начинаещите. Както отбелязват авторите, това може да се дължи на факта, че начинаещите програмисти често прибягват до заимстване на чужд код, наличен в тематичните уеб ресурси.
Установена е също така връзка между сложността на решаваната задача и простотата на идентифициране на автора на кода. При анализ на изходния код при решаване на относително прости проблеми, алгоритъмът правилно дефинира авторството в 90% от случаите. При решаване на по-сложни проблеми, ефикасността на AI се е увеличила до 95%.
Как работи системата
Системата с изкуствен интелект работи на базата на знания в областта на стилометрията, която се свежда до статистически анализ на езиковия стил. Известно е, че стилът на писане на всеки индивид е уникален – с определен набор от думи, използвани от автора, и особености в синтаксиса и граматиката. Всичко това създава уникален стилистичен „отпечатък”, който позволява да бъде идентифициран точно авторът на текста при достатъчен брой работни образци.
На първия етап от работата си, алгоритъмът определя характерните черти на фрагмента на изходния код. Изследователите са успели да намалят списъка с оценъчни характеристики на 50 – само тези, които наистина помагат да се разграничи един програмист от друг. Учените смятат за несъществено, например, това как е форматиран изходният код.
Въз основа на събраните данни се конструира т.нар. „абстрактно синтактическо дърво”, което отразява цялостната структура на кода, а не на произволни компоненти. Важно е да се отбележи, че за правилното функциониране на метода са необходими няколко образци на код от един и същ автор.
Приложение и възможни последици
Учените вярват, че резултатите от тяхната работа могат да бъдат използвани за идентифициране на случаите на безскрупулни кражби на код. Например, преподавателите в технически университети ще могат да анализират кода, предоставен от студентите-програмисти и с голяма сигурност да установят дали кодът е писан самостоятелно или е взет наготово.
Софтуерните компании пък ще могат да наблюдават спазването от програмистите на договорните клаузи за избягване на случаи, при които бивши служители използват разработки, които са собственост на компанията, за целите на други проекти.
AI алгоритъмът ще помогне и на компаниите за информационна сигурност, които ще могат по-лесно да идентифицират авторите на злонамерен софтуер. Но в същото време, въоръжени с такъв инструмент, авторитарните режими ще направят много по-труден живота на разработчици на решения, които заобикалят държавната цензура в интернет.
Разработчиците, които редовно допринасят за развитието на свободния софтуер, също могат да пострадат, губейки възможността да останат анонимни. Според Грийнстад, умишленото объркване на изходния код не помага за запазване на анонимността – дори и след тази обработка, кодът съдържа уникалния авторски почерк.
„Хората трябва да разберат, че при подобни ситуации няма гарантиран начин да се скрие самоличността”, каза Грийнстад. Но в друго изследване, с автор е Луси Симко – колега на Калискан, се посочва, че програмистите все още могат да променят собствените си код, така че да заблудят алгоритъма, без да притежават специални умения за това.
Не мисла !
“преподавателите в технически университети ще могат да анализират кода, предоставен от студентите-програмисти и с голяма сигурност да установят дали кодът е писан самостоятелно или е взет наготово”
А дали някой ще проверява кода, написан от преподавателите? ;))))