Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Стилометрия кода (также известная как приписывание авторства программы или анализ авторства исходного кода ) - это применение стилометрии к компьютерному коду для приписывания авторства анонимному двоичному или исходному коду . Он часто включает в себя разбиение и изучение отличительных паттернов и характеристик программного кода, а затем их сравнение с компьютерным кодом, авторство которого известно. [1] В отличие от криминалистики программного обеспечения , стилометрия кода приписывает авторство целям, не связанным с нарушением прав интеллектуальной собственности , включая обнаружение плагиата., расследование авторских прав и проверка авторства. [2]

История [ править ]

В 1989 году исследователи Пол Оман и Кертис Кук определили авторство 18 различных программ на языке Pascal , написанных шестью авторами, с использованием «маркеров» на основе типографских характеристик. [3]

В 1998 году исследователи Стивен МакДонелл, Эндрю Грей и Филип Саллис разработали систему атрибуции авторов на основе словаря под названием IDENTIFIED (Интегрированное извлечение на основе словаря не зависящей от языка токен-информации для судебной идентификации, экспертизы и дискриминации), которая определила авторство. исходного кода в компьютерных программах, написанных на C ++ . Исследователи отметили, что авторство можно определить по степени гибкости стиля написания исходного кода, например: [4]

  • Как алгоритм в исходном коде решает данную проблему
  • Расположение исходного кода (интервалы, отступы, характеристики границ, стандартные заголовки и т. Д.)
  • Как алгоритм реализован в исходном коде

Система IDENTIFIED приписывала авторство, сначала объединяя все соответствующие файлы для создания единого файла исходного кода, а затем подвергая его анализу метрик, подсчитывая количество вхождений для каждой метрики. Кроме того, система не зависела от языка из-за ее способности создавать новые файлы словарей и мета-словари. [4]

В 1999 году группа исследователей под руководством Стивена МакДонелла проверила эффективность трех различных методов распознавания авторства программ на 351 программе, написанной на C ++ 7 разными авторами. Исследователи сравнили эффективность использования нейронной сети с прямой связью (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]

  1. Дизассемблирование - программа разбирается, чтобы получить информацию о ее характеристиках.
  2. Декомпиляция - программа преобразуется в вариант C-подобного псевдокода посредством декомпиляции для получения абстрактных синтаксических деревьев .
  3. Снижение размерности - выбираются наиболее актуальные и полезные функции для идентификации автора.
  4. Классификация - классификатор случайного леса указывает авторство программы.

Этот подход анализировал различные характеристики кода, такие как пустое пространство, использование вкладок и пробелов, а также имена переменных, а затем использовал метод оценки, называемый анализом синтаксического дерева, который переводил образец кода в древовидные диаграммы, которые отображает структурные решения, участвующие в написании кода. При разработке этих диаграмм приоритетность отдавалась порядку команд и глубине функций, которые были вложены в код. [8]

Хакерская атака Sony Pictures 2014 г. [ править ]

Сотрудники разведки США смогли определить, что кибератака на Sony Pictures в 2014 году была спонсирована Северной Кореей, после оценки программного обеспечения, методов и сетевых источников. Атрибуция была произведена после того, как эксперты по кибербезопасности заметили сходство между кодом, использованным в атаке, и вредоносным программным обеспечением Shamoon , которое использовалось в атаках Северной Кореи на южнокорейские банки и телекомпании в 2013 году . [9]

Ссылки [ править ]

  1. ^ Claburn, Томас (16 марта 2018). «К вашему сведению: инструменты AI могут разоблачать анонимных кодеров из их двоичных исполняемых файлов» . Реестр . Проверено 2 августа 2018 года .
  2. ^ «Деанонимизация программистов с помощью стилометрии кода» . USENIX . 12 августа 2015 года . Проверено 2 августа 2018 года .
  3. ^ а б Францеску, Грузия; Стамататос, Эфстафиос; Грицалис, Стефанос (октябрь 2005 г.). «Поддержка процесса расследования киберпреступлений: эффективная дискриминация авторов исходного кода на основе информации байтового уровня» . Электронный бизнес и телекоммуникационные сети . Коммуникации в компьютерных и информационных науках. 3 : 283–290. DOI : 10.1007 / 978-3-540-75993-5_14 . ISBN 978-3-540-75992-8 - через ResearchGate.
  4. ^ a b Грей, Эндрю; Макдоннелл, Стивен; Саллис, Филипп (январь 1998 г.). «IDENTIFIED (интегрированное извлечение на основе словаря не зависящей от языка информации о токенах для судебной идентификации, экспертизы и дискриминации): система на основе словаря для извлечения показателей исходного кода для судебной экспертизы программного обеспечения» . Труды программной инженерии: образование и практика : 252–259. DOI : 10.1109 / SEEP.1998.707658 . hdl : 10292/3472 . ISBN 978-0-8186-8828-7. S2CID  53463447 - через ResearchGate.
  5. ^ Макдонелл, Стивен; Грей, Эндрю; МакЛеннан, Грант; Саллис, Филипп (февраль 1999 г.). «Программная экспертиза для различения авторов программ с использованием аргументации на основе конкретных случаев, нейронных сетей с прямой связью и множественного дискриминантного анализа» . Обработка нейронной информации . 1 . ISSN 1177-455X - через ResearchGate. 
  6. ^ Розенблюм, Натан; Чжу, Сяоцзинь; Миллер, Бартон (сентябрь 2011 г.). «Кто написал этот код? Определение авторов двоичных файлов программы» . Труды 16-й Европейской конференции по исследованиям в области компьютерной безопасности : 172–189. ISBN 978-3-642-23821-5 - через ACM Digital Library.
  7. ^ Brayboy, Джойс (15 января 2016). «Вредоносные кодировщики потеряют анонимность по мере развития исследований по выявлению личности» . Армия США . Проверено 2 августа 2018 года .
  8. ^ Greenstadt, Rachel (27 февраля 2015). «Удаление кибер-отпечатков пальцев: стиль кодирования определяет анонимных программистов» . Судебно-медицинский журнал . Проверено 2 августа 2018 года .
  9. ^ Бруннстрем, Дэвид; Финкль, Джим (18 декабря 2014 г.). «США считают« пропорциональным »ответ на хакерскую атаку Sony» . Рейтер . Проверено 2 августа 2018 года .