Код стилометрии
Стилометрия кода (также известная как атрибуция авторства программы или анализ авторства исходного кода ) — это применение стилометрии к компьютерному коду для приписывания авторства анонимному двоичному или исходному коду . Часто это включает в себя анализ и исследование отличительных закономерностей и характеристик программного кода, а затем сравнение их с компьютерным кодом, авторство которого известно. [1] В отличие от криминалистики программного обеспечения , стилометрия кода определяет авторство для целей, отличных от нарушения прав интеллектуальной собственности , включая обнаружение плагиата , расследование авторских прав и проверку авторства. [2]
История
[ редактировать ]В 1989 году исследователи Пол Оман и Кертис Кук определили авторство 18 различных программ Паскаля , написанных шестью авторами, с помощью «маркеров», основанных на типографских характеристиках. [3]
В 1998 году исследователи Стивен МакДонелл, Эндрю Грей и Филип Саллис разработали систему атрибуции авторов на основе словаря под названием IDENTIFIED (интегрированное извлечение на основе словаря не зависящей от языка информации о токенах для судебно-медицинской идентификации, экспертизы и дискриминации), которая определяла авторство. исходного кода компьютерных программ, написанных на C++ . Исследователи отметили, что авторство можно определить, используя степень гибкости стиля написания исходного кода, например: [4]
- Как алгоритм в исходном коде решает данную задачу
- Способ компоновки исходного кода (интервалы, отступы, характеристики границ, стандартные заголовки и т. д.).
- Способ реализации алгоритма в исходном коде
ИДЕНТИФИЦИРОВАННАЯ система приписывала авторство, сначала объединяя все соответствующие файлы в один файл исходного кода, а затем подвергая его анализу показателей путем подсчета количества вхождений для каждого показателя. Кроме того, система была независимой от языка благодаря способности создавать новые файлы словарей и метасловари. [4]
В 1999 году группа исследователей под руководством Стивена МакДонелла проверила эффективность трех различных методов распознавания авторства программ на 351 программе, написанной на C++ семью разными авторами. Исследователи сравнили эффективность использования нейронной сети прямого распространения (FFNN) , обученной на алгоритме обратного распространения ошибки , множественном дискриминантном анализе (MDA) и рассуждениях на основе прецедентов (CBR) . В конце эксперимента и нейронная сеть, и MDA имели точность 81,1%, а CBR достигла точности 88,0%. [5]
В 2005 году исследователи из Лаборатории безопасности информационных и коммуникационных систем Эгейского университета представили независимый от языка метод атрибуции авторства программы, в котором они использовали байтов на уровне n -граммы для классификации программы по автору. Этот метод сканировал файлы, а затем создавал таблицу различных n -грамм, найденных в исходном коде, и количества раз, когда они встречаются. Кроме того, система может работать с ограниченным количеством обучающих примеров от каждого автора. Однако чем больше исходных кодов программ присутствовало у каждого автора, тем надежнее указание автора. В эксперименте, проверяющем их подход, исследователи обнаружили, что классификации с использованием n точность -грамм достигает 100%, хотя этот показатель резко снижается, если размер профиля превышает 500, а размер n -грамм равен 3 или меньше. [3]
В 2011 году исследователи из Университета Висконсина создали систему атрибуции авторства программ, которая идентифицировала программиста на основе двоичного кода программы, а не исходного кода. Исследователи использовали машинное обучение и обучающий код, чтобы определить, какие характеристики кода будут полезны при описании стиля программирования. В эксперименте, проверяющем этот подход на наборе программ, написанных 10 разными авторами, система достигла точности 81%. При тестировании с использованием набора программ, написанных почти 200 разными авторами, система работала с точностью 51%. [6]
В 2015 году группа исследователей-докторантов из Принстонского университета , Университета Дрекселя , Университета Мэриленда и Геттингенского университета , а также исследователей из Исследовательской лаборатории армии США разработала систему атрибуции авторства программы, которая могла бы определить автора программы по выборка программ, написанных 1600 программистами с точностью 94 процента. Методика состояла из четырех этапов: [7]
- Дизассемблирование - Программа дизассемблируется для получения информации о ее характеристиках.
- Декомпиляция — программа преобразуется в вариант C-подобного псевдокода посредством декомпиляции для получения абстрактных синтаксических деревьев .
- Уменьшение размерности . Отбираются наиболее актуальные и полезные функции для идентификации автора.
- Классификация . Классификатор случайного леса указывает авторство программы.
В этом подходе анализировались различные характеристики кода, такие как пробелы, использование табуляции и пробелов, а также имена переменных, а затем использовался метод оценки, называемый анализом синтаксического дерева, который переводил пример кода в древовидные диаграммы, которые отображал структурные решения, задействованные в написании кода. При разработке этих диаграмм приоритет отдавался порядку команд и глубине функций, встроенных в код. [8]
Хакерская атака Sony Pictures в 2014 году
[ редактировать ]Представители американской разведки смогли определить, что кибератака на Sony Pictures в 2014 году была спонсирована Северной Кореей после оценки программного обеспечения, методов и сетевых источников. Атрибуция была сделана после того, как эксперты по кибербезопасности заметили сходство между кодом, использованным в атаке, и вредоносным программным обеспечением, известным как Shamoon , которое использовалось в 2013 году . атаках Северной Кореи на южнокорейские банки и телерадиокомпании в [9]
Ссылки
[ редактировать ]- ^ Клэберн, Томас (16 марта 2018 г.). «К вашему сведению: инструменты искусственного интеллекта могут отличать анонимных программистов от их двоичных исполняемых файлов» . Регистр . Проверено 2 августа 2018 г.
- ^ Деанонимизация программистов с помощью стилометрии кода . 12 августа 2015 г. ISBN. 9781939133113 . Проверено 2 августа 2018 г.
{{cite book}}
:|website=
игнорируется ( помогите ) - ^ Jump up to: а б Францескоу, Грузия; Стамататос, Эфстатиос; Грицалис, Стефанос (октябрь 2005 г.). «Поддержка процесса расследования киберпреступлений: эффективная дискриминация авторов исходного кода на основе информации на уровне байтов» . Электронный бизнес и телекоммуникационные сети . Коммуникации в компьютерной и информатике. Том. 3. С. 283–290. дои : 10.1007/978-3-540-75993-5_14 . ISBN 978-3-540-75992-8 – через ResearchGate.
- ^ Jump up to: а б Грей, Эндрю; Макдоннелл, Стивен; Саллис, Филип (январь 1998 г.). «IDENTIFIED (интегрированное извлечение на основе словаря независимой от языка информации о токенах для судебно-медицинской идентификации, экспертизы и дискриминации): система на основе словаря для извлечения показателей исходного кода для криминалистики программного обеспечения» . Слушания. 1998 Международная конференция «Программная инженерия: образование и практика» (кат. № 98EX220) . стр. 252–259. дои : 10.1109/SEEP.1998.707658 . hdl : 10292/3472 . ISBN 978-0-8186-8828-7 . S2CID 53463447 – через ResearchGate.
- ^ МакДонелл, Стивен; Грей, Эндрю; МакЛеннан, Грант; Саллис, Филип (февраль 1999 г.). «Криминалистика программного обеспечения для различения авторов программ с использованием рассуждений на основе прецедентов, нейронных сетей прямого распространения и множественного дискриминантного анализа» . Нейронная обработка информации . 1 . ISSN 1177-455X – через ResearchGate.
- ^ Розенблюм, Натан; Чжу, Сяоцзинь; Миллер, Бартон (сентябрь 2011 г.). «Кто написал этот код? Определение авторов бинарников программ» . Материалы 16-й Европейской конференции по исследованиям в области компьютерной безопасности . Эсорикс'11: 172–189. ISBN 978-3-642-23821-5 – через цифровую библиотеку ACM.
- ^ Брейбой, Джойс (15 января 2016 г.). «По мере развития исследований по установлению личности злонамеренные программисты потеряют анонимность» . Армия США . Проверено 2 августа 2018 г.
- ^ Гринштадт, Рэйчел (27 февраля 2015 г.). «Стирание кибер-отпечатков пальцев: стиль кодирования идентифицирует анонимных программистов» . Судебно-медицинский журнал . Проверено 2 августа 2018 г.
- ^ Бруннстрем, Дэвид; Финкл, Джим (18 декабря 2014 г.). «США рассматривают «пропорциональный» ответ на хакерскую атаку Sony» . Рейтер . Проверено 2 августа 2018 г.