В ходе работы было подтверждено, что применение маппингов в смарт-контрактах может повысить уровень конфиденциальности и безопасности, позволяя отслеживать использование токенов и проверять их подлинность.
Список литературы
1. Верер М., Здун У. Смарт-контракты: шаблоны безопасности в экосистеме ethereum и solidity // Международный семинар 2018 года по программной инженерии, ориентированной на блокчейн (IWBOSE). IEEE, 2018. С. 2 - 8.
2. Al-Naji F. H., Zagrouba R. CAB-IoT: Continuous authentication architecture based on Blockchain for internet of things //Journal of King Saud University-Computer and Information Sciences. 2022. Т. 34. №. 6. С. 2497 - 2514.
3. Исхаков А. Ю., Мещеряков Р. В., Ходашинский И. А. Двухфакторная аутентификация на основе программного токена //Вопросы защиты информации. 2013. №. 3. С. 23 - 28.
4. Crafa S., Di Pirro M., Zucca E. Достаточно ли солиден solidity? //Финансовая криптография и безопасность данных: международные семинары FC 2019, ГОЛОСОВАНИЕ и WTSC, Сент-Китс, Сент-Китс и Невис, 18 -22 февраля 2019, Пересмотренные избранные статьи 23. Springer International Publishing, 2020. С. 138 - 153.
Жданов Антон Александрович, студент, zhdanov447@gmaiLcom. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Шульга Дмитрий Константинович, студент, gindra2001@,gmail.com. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Елфимов Илья Олегович, студент, [email protected]. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Селищев Валерий Анатольевич, канд. техн. наук, доцент, [email protected]. Россия, Тула, Тульский государственный университет
OPTIMIZATION METHOD OF TWO-FACTOR AUTHENTICATION METHOD FOR DATA PRIVACY USING
BLOCKCHAIN TECHNOLOGY
A.A. Zhdanov, D.K. Shulga, I.O. Yelfimov, V.A. Selischev
Process of two-factor authentication using blockchain technology is considered, as well as the issues of confidentiality during user authentication in the system. The method of two-factor authentication as a program code is proposed, together with block diagrams of authentication procedure description.
Key words: token, two-factor authentication, method, blockchain, mapping.
Zhdanov Anton Alexandrovich, student, [email protected]. Russia, Saint-Petersburg, National Research University ITMO,
Shulga Dmitry Konstantinovich, student, [email protected], Russia, Saint-Petersburg, National Research University ITMO,
Elfimov Ilya Olegovich, student, [email protected]. Russia, Saint-Petersburg, National Research University ITMO,
Selischev Valery Anatolievich, candidate of technical sciences, docent, sel648val@rambler. ru, Russia, Tula, Tula State University
УДК 004.492.3
DOI: 10.24412/2071-6168-2023-12-508-509
ИССЛЕДОВАНИЕ АДАПТИВНОГО АЛГОРИТМА ОБНАРУЖЕНИЯ КОМПРОМЕТАЦИЙ WEB-СЕССИЙ С ИСПОЛЬЗОВАНИЕМ МЕТОДОВ МАШИННОГО ОБУЧЕНИЯ
И.Д. Крылов, А.А. Жданов, Д.К. Шульга, И.О. Елфимов, В.А. Селищев
Рассматривается защита процедуры аутентификации посредством отслеживания компрометаций действий пользователя при использовании браузера. Предложен алгоритм отслеживания отпечатков браузера пользователей на основе машинного обучения как дополнительный метод аутентификации.
Ключевые слова: аутентификация, отпечаток браузера, алгоритм, машинное обучение, программный
код.
Угрозы аутентификации. Процедура аутентификации в информационных системах на данный момент остается одной из самых критичных функций с позиции угроз информационной безопасности. Если аутентификация пользователя в системе скомпрометирована, обеспечение безопасности может быть неэффективной с точки зрения временных и финансовых затрат.
Наряду с традиционными методами обеспечения безопасности аутентификации существует также ряд подходов, которые могут незаметно для пользователей повышать их безопасность. Одним из таких подходов может быть использование технических характеристик устройств пользователей, которые позволяют осуществлять идентификацию с некоторой точностью. Результаты идентификации могут быть использованы для обнаружения аномальной активности.
В данном исследовании рассматривается одна из характеристик устройств, которая косвенно может быть принята для идентификации пользователей, а именно, отпечатки браузера. Отпечатки могут использоваться для выявления аномалий в поведении пользователя, который находится на ресурсе, необходимом для защиты. К ресурсам могут относиться государственные или финансовые сервисы, которые выглядят привлекательной целью для разных групп злоумышленников.
Существует гипотеза о том, что отпечатки можно применять как дополнительный идентификатор пользователя и не давать использовать учетную запись, если отпечаток изменился. В действительности такой подход слабо реализуем, потому что пользователи обновляют браузер, меняют разрешение экрана, а также заменяют компоненты системы. Таким образом, если использовать отпечатки браузера, необходимо научиться понимать, когда отпечаток изменился в рамках легитимных действий пользователя или изменение отпечатка произошло не без помощи злоумышленника.
Отпечаток браузера - совокупность его параметров, собранная сторонними модулями, которые позволяют идентифицировать конкретный браузер или устройство в интернете.
Отпечатки браузера содержат множество данных, которые могут быть использованы для идентификации конкретного пользователя. В таком случае становится возможно использовать идентификатор устройства совместно с сессией пользователя на этапах проверки сессии. Некоторые из этих данных включают в себя [1]:
- версию и тип браузера; каждый браузер имеет свой собственный идентификатор, который позволяет идентифицировать его версию и тип;
- операционную систему, в которой отпечатки браузера содержат информацию об операционной системе, на которой запущен браузер;
- разрешение экрана;
- поддержку языковых настроек;
- установленные шрифты;
- версию плагинов и расширений браузера;
- уникальные хэши, зависящие от оборудования, используемого пользователем.
Для преодоления данной угрозы предлагается разработать адаптивный алгоритм, который сможет находить подозрительные смены отпечатков браузера для конкретных пользователей.
С помощью алгоритма, рассматриваемого в данной работе, появляется возможность снизить риски от следующих угроз:
- утечки сессионных файлов cookie (аутентифицированной web-сесии пользователя) в результате неаккуратной обработки;
- кражи сессионных файлов cookie (аутентифицированной web-сесии пользователя) в результате компрометации устройства;
- намеренной передачи сессионных файлов cookie (аутентифицированной web-сесии пользователя) в результате социальной инженерии или подкупа.
Применяемый метод сбора отпечатков. Для разрабатываемого алгоритма необходимо создать методы сбора отпечатков, которые можно подразделять на пассивные и активные [2]. Пассивные методы сбора работают практически незаметно для пользователя, без создания дополнительных запросов и установления соединения для целей идентификации. Активные методы сбора отпечатков, напротив, могут выполнять дополнительные запросы, использовать дополнительные ресурсы компьютера пользователя для идентификации и т.д.
К пассивным способам сбора отпечатков можно отнести сбор заголовка User-Agent, который браузер пользователя передает в каждом HTTP-запросе к Web-ресурсу, а также сетевой отпечаток, по которому можно выявить особенности TCP-соединения, которое использует пользователь. К пассивным отпечаткам относят отпечаток TLS-соединения, по которому возможно выявить особенности и закономерности в устанавливаемом TLS-соединении, которые могут различаться от браузера к браузеру, а также при изменении операционной системы.
К активным способам сбора отпечатков можно отнести методы сбора информации о пользователе, которые требуют дополнительного сетевого взаимодействия или обращения к вычислительным ресурсам пользователя.
Перечислим некоторые из таких способов:
- установление соединения WebRTC для определения альтернативного IP-адреса пользователя;
- выполнение дополнительных DNS-запросов для установления используемого пользователем DNS-
сервера;
- осуществление дополнительных HTTP-запросов на различные IP- адреса для идентификации среды исполнения или обнаружения угроз;
- рендеринг изображения в браузере посредством WebGL, которое может иметь артефакты, специфичные для используемой комбинации видеопроцессора и драйверов;
- исполнение JavaScript-сценариев, которое может собирать признаки, специфичные для окружения пользователя, получать доступные на устройстве шрифты, пробовать определить доступные расширения и т.д.;
- получение геолокации пользователя для определения его местоположения.
Рассмотрим активный сбор отпечатков посредством исполнения JavaScript-сценариев. Для проведения исследования оптимальным является сбор отпечатка браузера, который пользователь не может избежать. Этого можно достичь, если требовать периодический сбор отпечатка в рамках Web-сессии, по истечении времени с предыдущего сбора или вследствие каких-либо изменения, например, поменявшегося IP-пользователя. Также сбор отпечатка может быть необходим для пользовательских сценариев, предполагающих функционал повышенной опасности с позиции обеспечения информации безопасности, например, работы с финансовой информацией, управления ролями пользователей. Обеспечивать соблюдение требований сбора отпечатка браузера можно посредством временной деактивации Web-сессии, не удовлетворяющей условиям периодичности сбора.
Для целевого алгоритма предполагается использовать код, который допускается располагать на страницах сбора отпечатков браузера (рис. 1).
function postConect{params) { fetch('/ар i/col lect'., { method! 'POST', headers: {
'Content-Type': 'application/json',
h
body; 3SON.5tringify(paraffl5)j
});
}
var fprints - {
"navigator_platfo™" : navigator, platform, "navigator_vendor": navigator.vendor, "navigatorproductSub": navigator.productSub, "navigator^userAgent*: navigator.userAgent,
"intl_tifnetone": Intl.DateTimeFormate).resolvedOptions().timeZone, "intllocale": Intl,DateTimeFormat().resolvedOptions().locale, "зсгееп_со1ог" : screen.colorDepth, "screen_width": screen.width, "screen_height": screen.height,
"navigatorlanguages": navigator.languages.join(','),
postCollect(fprints);
Рис. 1. Листинг кода сбора отпечатка браузера
Выполняемый JavaScript-сценарий обращается к нескольким объектам, доступным для среды, и осуществляет доступ к атрибутам данных объектов:
- navigator.platform - для определения платформы выполнения JavaScript-сценария;
- navigator.vendor - для определения производителя браузера, в котором выполняется JavaScript-сценарий;
- navigator.productSub - для определения номера сборки браузера, в котором выполняется JavaScript-
сценарий;
- navigator.userAgent - для сбора информации о заголовке User-Agent;
- intl.timezone - для определения параметра системы интернационализации, отвечающего за текущую временную зону пользователя;
- intl.locale - для определения параметра системы интернационализации, отвечающего за текущий используемый язык пользователя;
- screen.colorDepth - для определения глубины цвета экрана используемого пользователем;
- screen.width - для определения ширены экрана пользователя в пикселях;
- screen.height - для определения высоты экрана пользователя в пикселях;
- navigator.languages - для определения языков, которые пользователь отметил как доступные для него в
браузере.
Код объединяет все полученные данные в общий объект и отправляет их на сервер приложения посредством выполнения HTTP POST-запроса. Приведем пример HTTP-запроса, который отправляется в момент сбора отпечатков браузера (рис. 2).
х Headers Payload Preview Response Initiator Timing
» General
Request URL: https://fp. /api/collect
Request Method: POST
Status Code: #200 OK
Remote Address: -.443
Referrer Policy: strict-0 ri g in - whe n - с ross - 0 rig i n
▼ Response Headers □ Raw
Connection: keep-alrve
Content-Length: 2
Content-Type: text/plain; charset=utf-B
Date: Sun, 14 May 2023 14:19:20 GMT
Server: nginx/1.18.0 (U bun tu)
▼ Request Headers □ Raw
Accept: V*
Accept-En coding: gzip, deflate bf
i "f A r* T-. E n-.'- Г.1-Ш1 rim-nCprt.l 1 "■ r) Я Ùrvrt — 0 7
Рис. 2. Пример HTTP-запроса, отправляемого на сервер
После сбора отпечатков происходит процесс их отправки на сервер (рис. 3).
к Headers Poytoad Preview Response Initiator Timing * Request Pjylojd view source
»(nBviintor_plitfoni: "kin ¿2", mvii»tor_vendor: "Cocg1c Inc.", n*vii*tor_pr«iuctbub: "Î00JO10-",-)
iritl_lec«le: "rg"
naui£aïor_lanffja|es: "-ru-RUJrjJen-USJen'-novi|jtorjiljt-for«: -win)!-
Mvl|itor_u»trA(entt "Ko;ili»/5.e (WindûMI HI 19.0; Hinti; x&i) Д0М(ЖЖШМ7.Эв (KMTML, lite Cf ravi(3T0r_venclor: "G00|lt Inc."
tcr«n„îslgr: 24
scrttn.htignt: ювэ icretn^ridth: 1929
Рис. 3. Пример собираемых отпечатков браузера
Процесс предобработки отпечатков. Некоторые собираемые отпечатки для получения полезной информации нужно особым образом интерпретировать. Значение User-Agent является строкой, у которой нет строгой структуры, которая может отличаться от браузера к браузеру. В рамках исследования рассматривается подход к интерпретации значений отпечатков, подразумевающий отправку на сервер данных в исходном виде, при этом предобработка может происходить на стороне сервера. Данный подход имеет возможность внесения исправлений в процесс интерпретации, потому что наблюдается сохранение исходных данных. Однако большое количество данных передается по сети, поэтому необходимо дополнительное пространство для их хранения.
В рамках исследования проработка данных требуется только для одного из отпечатков, а именно, для парсинга значения параметра navigator.userAgent. В качестве основы для процесса используется библиотека user-agents, содержащая внутри себя все User-Agent из популярных браузеров, которая на основе регулярных выражений и эвристик выдает информацию о используемом браузере в структурированном виде [3]. Приведем листинг кода, в рамках которого для всех собранных отпечатков происходит парсинг значения User-Agent, и полученная структурированная информация сохраняется для дальнейшей обработки (рис. 4).
import user_agents for obj in fpobjs:
ua - user_agents.parse(obj[ 'riavigatorjjserAgent ' ]) obj [ ' ua_browser_famiiy1 ] - ua.browser.family
obj['uabrowserversion'] ■ "fjoin(map(str, ua.browser.version)) obj[ ' ua_os_fairtily ' ] - ua,os.family
obj[1ua_os_version1] - join(map(str, ua.os.version))
obj['uadevicefamily'] ■ ua.device.family
obj[1ua_device_brand'] - ua.device.brand
obj['ua_device_model4] - ua.device.mqdel
print(json.dumps(obj, indent-4))
Рис. 4. Листинг кода предобработки отпечатка
В рамках предобработки нужно проводить валидацию на корректность значений в атрибутах, чтобы избежать ситуаций, когда в одном значении может оказаться значение другого типа.
После предобработки и нормализации значений наступит вычисление разницы между текущим и предыдущим отпечатками. Вычисление происходит путем сравнения соответствующих атрибутов и кодирования результата сравнения в специальной форме. Атрибуты сравниваются на равенство числовых и строковых значений, увеличение числовых значений и уменьшение числовых значений, в результате получим признаки, закодированные в форме one-hot кодирования.
Таким образом, значением каждого признака будет либо 1, в случае истины при сравнении, либо 0. Приведем пример некоторых полученных признаков, вместе с их значениями:
- equal_navigator_platform: 0;
- equal_navigator_productSub: 1;
- decrease_screen_height: 1;
- equal_ua_browser_family: 0;
- increase_ua_browser_version: 1;
- equal_ua_os_family: 0;
- decrease_ua_os_version: 0;
- equal_ua_device_model: 1;
- equal_is_mobile: 1.
Описание процесса сбора данных и обучения модели. Для сбора данных, необходимых для обучения модели по обнаружению компрометаций сессий пользователей с использованием отпечатков браузера, был применен подход, включающий несколько устройств и последовательный сбор данных на них. В данном подходе учтены изменения в настройках устройств, использование людьми и обновления браузеров.
Процесс сбора данных можно разделить на следующие этапы:
511
1. Инициализация устройств: несколько устройств были инициализированы для сбора отпечатков браузера; на каждом устройстве установлены различные браузеры с разными версиями, также в каждом браузере была получена уникальная Web-сессия.
2. Сбор отпечатков браузера: на каждом устройстве в нескольких браузерах были собраны отпечатки.
3. Использование устройств людьми: после сбора отпечатков браузера устройства поступили в пользование людям. В этом случае пользователи могли менять настройки браузеров, посещать различные веб-сайты, взаимодействовать с разными типами контента и выполнять различные действия, что создавало разнообразие пользовательского поведения.
4. Обновление браузеров: некоторые из браузеров за время исследования успели обновиться путем автоматизированного или ручного обновления. Обновление добавило дополнительную вариативность в отпечатки браузера, учитывая различия между старыми и обновленными версиями браузеров.
5. Повторный сбор отпечатков браузера: после использования устройств людьми и обновления браузеров был выполнен повторный сбор отпечатков браузера на каждом из них. Данное действие необходимо для включения изменений, произошедших после использования и обновления. В данном случае отпечатки собирались заново с учетом новых настроек браузера, изменений в пользовательском поведении и обновленных версий браузеров.
Таким образом, были собраны отпечатки браузеров, связанные с конкретной сессией, изменения, произошедшие в отпечатках размечены как легитимные.
Далее необходимо получить изменения отпечатков, которые могут произойти в результате вредоносной активности. Чтобы воспроизвести подобную ситуацию, использовались те же устройства, но на этот раз Web-сессия копировалась между устройствами и браузерами. Таким образом эмитировалось выполнение нелегитимных действий, было собрано 20 примеров изменения отпечатков браузера.
Для увеличения количества возможных примеров было решено применить аугментацию данных. Аугментация данных - процесс создания новых примеров путем применения различных трансформаций или модификаций к существующим данным. Аугментация может быть полезна для расширения объема обучающего набора данных, улучшения обобщающей способности модели и устойчивости к различным вариациям входных данных.
Процесс аугментации данных может включать в себя определенные шаги.
Выбор подходящих методов аугментации: существует множество методов и техник аугментации данных, которые могут быть применены к отпечаткам браузера. Были выбраны подходящие методы аугментации, которые могут изменить отпечатки браузера, сохраняя при этом их реалистичность и практическую ценность.
Применение аугментации к данным: после выбора методов аугментации необходимо применить их к существующим данным. Может быть сделано путем применения соответствующих трансформаций к уже собранным отпечаткам браузера.
Таким образом, в листинге исходного кода, который использовался в качестве функций аугментации данных: первая функция mutate_version_and_intl изменяла используемую версию в браузере, а также влияла на настройки локализации; вторая функция change_screen влияла на параметры экрана, чтобы спутать функции и их использование между отпечатками (рис. 5).
def гаи tate_ve г s ion_and_int1(pa ra ms)т i-f random.random() > O b.
pararas['ua_browser_version'j - rando«.choiee<different_browser_ver) 1-f random.randoa() > fi ".:
pararas['ua_os_versiûn'] • random.сhoi«(different_as_ver) i-f random.raîidon() > ©.5: pararas['navigator_platform") - randora.choice(different_navlgator_platform)
i-f random.rando*О > в.S:
pararas['ua_broH5er_family'] - random.choice(ííiffírent_browser_fa«ily) if random.randomO > e.S: pararas [ 'navigator_languages' j » raiMfoa.chaice{ [ r u-Rll, i-.i, f-i-IJS, r-r ', 4 en. US,enr, -ru', ■ru-RUJen-US,fr.FRt-fríhe-IL>he>ru>tn", 'ги-Ви,еп-йВ,ги,еп-и5,еп', 'ru-RU,en-(iB,*n-US,ru,fln', "ru-ru", "ru-RU,en-(iB,kk-XZ,klc,tr-TR,tr,rii,en-US,en+, ■ru,en,en-GB,en-US", 'ru-RU', 'en-US,rij-RUFru,en', 'ru,en", "en-US']> if random.rardomO > е.5:
pararas['intl_locale'] ■ rando<ii.choice(['ru-RLT , Vu', 'en-US']) return params
dot change_fcreen(params): if random.random() > 0.5:
params['screen_eolor'] - random.cho!ce([12, 24]) If random.random() > 0.9: params['screen_widtti'] - random.choice([192e, 1024, 1536, MM, 399, 36в,
лгг, 136В, íeae, иве, 375, 4п]>
if random.randoflO > е.5: params['strreenjieight'] - random.choice([960, 864, 768, 900, 812, 844, 720, 915, 1366, lese, lese, 667, £92]}
Рис. 5. Листинг исходного кода функций аугментации
Для обучения модели бинарного классификатора был выбран метод машинного обучения градиентный бустинг. Градиентный бустинг - алгоритм машинного обучения, который использует комбинацию слабых моделей обучения для создания более сильной и точной модели. В отличие от других методов, градиентный бустинг основан на итеративном построении моделей, где каждая последующая исправляет ошибки, допущенные предыдущими моделями [4].
Процесс градиентного бустинга начинается с построения начальной модели, которая может быть простой и не очень точной. Затем вычисляются остатки между предсказанными и фактическими значениями. Следующая модель строится таким образом, чтобы минимизировать остатки или градиенты, используя градиентный спуск. Каждая последующая модель учитывает остатки предыдущих и пытается улучшить общую точность предсказаний.
Важной особенностью градиентного бустинга является то, что он использует деревья решений в качестве базовых моделей. Каждая новая модель добавляется к ансамблю, учитывая ошибки предыдущих моделей. Деревья строятся таким образом, чтобы наилучшим образом учесть остатки и создать более точное предсказание. При этом применяются методы, такие как глубина дерева, скорость обучения и случайный выбор признаков, чтобы достичь оптимального баланса между точностью и переобучением.
С помощью библиотеки Catboost было выполнено обучение модели бинарного классификатора. Приведем листинг кода обучения модели, в рамках которого происходит инициализация переменных с данными для обучения и устанавливается соответствие между индексом признака и его названием (рис. 6).
from catboost import CatBoostClassifierj Pool
train_data = Pool{data=x_train± label=y_train)
model = CatBoostClassifier(iterations=10)
model.fit(train_data)
model.set_feature_names(cd_keys)
Рис. 6. Листинг кода обучения модели
Обучение бинарного классификатора на основе градиентного бустинга - метод машинного обучения, позволяющий построить модель, способную классифицировать объекты на два класса.
Процесс обучения начинается с создания первого дерева решений, которое предсказывает вероятность принадлежности объекта к одному из двух классов. Затем вычисляются ошибки предсказания этой модели для каждого объекта обучающей выборки. На следующем шаге строится второе дерево решений, которое приближает ошибки первого дерева. Таким образом, модель постепенно улучшается с каждым добавленным деревом.
Градиентный бустинг является проверенным методом классификации, способным улучшить качество предсказаний путем комбинирования множества слабых моделей. Широко применяются в различных областях, включая анализ данных, распознавание образов, рекомендательные системы и другие задачи машинного обучения. Приведем прогресс обучения модели бинарного классификатора (рис. 7).
Learning rate set to e.S
в learn: e 1194027 total: 1.75ms remaining: 15.3ms
learn: e 0640163 total: 4.15ms remaining; 16.6ms
learn: e 0332321 total: 6.89ms remaining: 16.1ms
learn: e 0277960 total: 9.Sims remaining; 14.3ms
learn: e 0226314 total: 13.3ms remaining! 13.3ms
learn: e 02Э3619 total: 15.4ms remaining: ie.2ms
6 learn: e 018B450 total: 13ms remaining: 7.71ms
7 learn: e 0172614 total: 20.5ms remaining: 5.12ms
3 learn: 0 0165357 total; 23.1ms remaining: 2.56ms
9 learn: s 0160650 total: 26ms remaining: 0us
Рис. 1. Прогресс обучения модели
Вопросы технических методов защиты аутентификации остаются актуальными всегда. Поэтому необходима разработка новых методов защиты данного процесса. По результатам исследования предлагается техническая мера, способная на основе вероятностного подхода определять скомпрометированные Web-сессии. Описываемый подход направлен против угроз кражи или утечки данных Web-сессии и характерен как для внутренних, так и внешних злоумышленников.
Список литературы
1. Подшибякина В. В. Цифровой отпечаток браузера // Информационные технологии в процессе подготовки современного специалиста. 2020. С. 122 - 126.
2. Durey A., Laperdrix P., Rudametkin W., Rouvoy R. FP-Redemption: Studying Browser Fingerprinting Adoption for the Sake of Web Security. // Detection of Intrusions and Malware, and Vulnerability Assessment 2021. P. 237 - 257.
3. Саломатин А.А., Исхаков А.Ю. Применение интегрированного показателя отпечатков браузера в задаче адаптивной аутентификации субъектов доступа // Информационные и математические технологии в науке и управлении. 2020. №. 4 (20). С. 84 - 92.
4. Салахутдинова К.И., Лебедев И.С., Кривцова И.Е. Алгоритм градиентного бустинга деревьев решений в задаче идентификации программного обеспечения // Научно-технический вестник информационных технологий, механики и оптики. 2018. Т. 18. №. 6. С. 1016 - 1022.
Крылов Илья Дмитриевич, студент, nikplay2000@,mail.ru, Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Жданов Антон Александрович, студент, [email protected]. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Шульга Дмитрий Константинович, студент, gindra2001@,gmail.com. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Елфимов Илья Олегович, студент, ilva.elfimow@,vandex.ru. Россия, Санкт-Петербург, Национальный исследовательский университет ИТМО,
Селищев Валерий Анатольевич, канд. техн. наук, доцент, [email protected]. Россия, Тула, Тульский государственный университет
RESEARCH OF AN ADAPTIVE ALGORITHM FOR DETECTING COMPROMISES WEB SESSION USING MACHINE LEARNING METHODS
I.D. Krylov, A.A. Zhdanov, D.K. Shulga, I.O. Elfimov, V.A. Selishchev
Protection of authentication procedure by tracking compromised user actions while using a browser is considered. An algorithm for tracking users' browser fingerprints based on machine learning as an additional authentication method is proposed.
Key words: authentication, browser fingerprint, algorithm, machine learning, program code.
Krylov Ilya Dmitrievich, student, [email protected], Russia, Saint-Petersburg, National Research University
ITMO,
Zhdanov Anton Aleksandrovich., student, [email protected], Russia, Saint-Petersburg, National Research University ITMO,
Shulga Dmitry Konstantinovich, student, [email protected], Russia, Saint-Petersburg, National Research University ITMO,
Elfimov Ilya Olegovich, student, [email protected], Russia, Saint-Petersburg, National Research University ITMO,
Selischev Valery Anatolievich, candidate of technical sciences, docent, sel648val@rambler. ru, Russia, Tula, Tula State University
УДК 004.052.42; 519.1
DOI: 10.24412/2071-6168-2023-12-514-515
МЕТОДЫ ФОРМАЛЬНОГО ОПИСАНИЯ КОДА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ В ЗАДАЧАХ АВТОМАТИЧЕСКОГО АНАЛИЗА ПОВЕДЕНИЯ ПРОГРАММ
С.И. Плаксин
Рассматриваются методы генерации формального описания кода программного обеспечения. Проводится их обзор и определяется их возможность применения для использования при поиске вложенных циклов. В качестве оптимального метода выбирается гибридный анализ программы, позволяющий совершить полное покрытие кода и учитывать параллелизм в программе.
Ключевые слова: уязвимости, граф выполнения программы, статический анализ кода, динамический анализ кода, вложенные циклы.
Современные программы становятся все масштабнее и сложнее, что усложняет восприятие их структуры в особенности для новых разработчиков. Отсутствие полноценного понимания программы может приводить к ошибкам и нежелательным структурам. Вложенные циклы, особенно если они имеют большую глубину вложенности, могут значительно замедлить выполнение программы. Для их поиска могут использоваться представление программного кода в виде графа и последующего анализа циклов в нём [1]. Однако данный метод не позволяет обрабатывать программы с динамической памятью из-за применения статического анализа. Что является проблемой и затрудняет поиск таких циклов в многопоточных программах.
Важным является разработка алгоритма точного поиска вложенных циклов в программах, использующих распараллеливание. Для чего потребуется сначала выбрать метод анализа программы для поиска в нём вложенных циклов. Среди методов анализа программного обеспечения можно выделить основные:
Статический анализ [2]. Этот метод подразумевает анализ исходного кода программы без фактического его выполнения. В общем виде задача статического анализа алгоритмически неразрешима по теореме Райса [3]. В следствии чего допускается неточность получаемых результатов, таких как ложных срабатываний и пропуска уяз-вимостей. Такой анализ может производится на любом этапе разработки программы.
Сначала на основе кода программы строится промежуточное представление (модель кода). Модель кода может быть представлена в зависимости от используемого анализатора в виде исходного кода, графа потока управления CFG (Control Flow Graph) [4] (рис. 1), дерева синтаксического разбора, трёхадресного кода, машинного кода и т.д. Для построения модели кода используется лексический и синтаксический анализ для создания дерева разбора AST (Abstract Syntax Tree), аналогично компиляторам. Лексический анализатор преобразует исходный текст программы в поток лексем за счёт разбиения его на минимальные смысловые элементы. Синтаксический анализ проверяет является ли данный поток лексем грамматике используемого языка программирования. В результате строится AST, который проверяется на более сложные и комплексные отношения семантическим анализом. В результате дерево разбора можно привести в другие формы, одной из которых является CFG. Граф потока управления является основной моделью кода для многих алгоритмов статического анализа.
Затем к представлению применяются алгоритмы статического анализа, задачей которых является дополнение модели кода полезной информации, которая упростит последующий анализ. Анализ делится на внутрипроце-дурный и межпроцедурный, но на практике приходится решать обычно задачи межпроцедурного анализа из-за редкости нахождения уязвимости или структуры полностью в отдельной функции. Существует несколько общих подходов для решения таких задач: