Ім'я файлу: Курсовая_ПРИКЛАД .docx
Розширення: docx
Розмір: 985кб.
Дата: 08.06.2023
скачати

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

ДОНБАСЬКА ДЕРЖАВНА МАШИНОБУДІВНА АКАДЕМІЯ

КАФЕДРА

КОМП'ЮТЕРНИХ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ

курсова робота

з дисципліни
«Теорія алгоритмів та графів»
ТЕМА: «Алгоритми рішення «задачі комівояжера»»
Варіант: 17
Виконав:

студент групи КН 21-1

______________

(підпис)
Керівник:

Малигіна С.В. ________________

(підпис)


Дата захисту роботи

Оцінка

Підписи викладачів












м. Краматорськ 2021 р.

ЗАВДАННЯ
на курсову роботу з дисципліни "Теорія алгоритмів та графів"
Група КН 21-1 варіант № 17
ПІБ Касьянов І.О. (ПІБ студента)
Завдання на виконання курсової роботи

1. Виконати роботу на тему: «Алгоритми ідентифікації користувачів».

2. Зміна та уточнення теми за згодою керівника курсової роботи можливі тільки до ______________________ р

3. Готова робота здається на перевірку не пізніше ніж за два дні до захисту.
Завдання отримав: ______________ ПІБ. студента

(подпись студента)

Завдання видав:_____________ ( ПІБ керівника )

(подпись руководителя)
Дата видачі ____ 2023 р

АНОТАЦІЯ
Ця курсова робота присвячена розробці алгоритму ідентифікації користувачів на основі аналізу тривалості утримання клавіш, часу між натисканням клавіш та довільного тексту. Ідентифікація користувачів є важливим аспектом у сфері безпеки інформаційних систем, оскільки дозволяє розрізняти між легітимними користувачами та потенційними загрозами.

У цій роботі буде розглянуто різні методи аналізу даних клавіатурного вводу користувачів для побудови алгоритму ідентифікації. Першим кроком буде збір вихідних даних, що включає час натискання та відпускання кожної клавіші, а також текст, введений користувачем. Далі буде проведений аналіз тривалості утримання клавіш, щоб виявити індивідуальні особливості користувачів.

Наступним кроком буде вивчення часу між натисканням клавіш для кожного користувача. Цей параметр може також містити корисну інформацію для ідентифікації, оскільки різні користувачі можуть мати свої унікальні паузи між натисканням клавіш.

Завершуючий етап роботи буде присвячений аналізу довільного тексту, введеного користувачем. Це може включати аналіз використання різних символів, частоту вживання певних слів або фраз, а також стилістику тексту. Ці характеристики можуть бути використані для подальшої ідентифікації користувача.

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

РЕФЕРАТ



Курсова робота з дисципліни «Теорія алгоритмів» на тему: «Алгоритми ідентифікації користувачів.»» студента групи КН 21-1 (), містить 30 сторінки машино друкувального тексту, 5 рисунків, 8 таблиць, 6 літературних джерел.
Об’єкт дослідження — Алгоритми ідентифікації користувачів.

Мета роботи — розробка алгоритму дослідження КП користувача за тривалістю утримання клавіш, за часом між натисненням клавіш, за довільним текстом.

Методи дослідження — математичне моделювання, комп’ютерна реалізація алгоритму КП.

Результати — розроблено інформаційне та програмне забезпечення комп’ютерного аналізу розробка алгоритму дослідження КП користувача. Проведено огляд алгоритмів, виконано комп’ютерну реалізацію за допомогою алгоритмічної мови програмування


Python, АЛГОРИТМ ДОСЛІДЖЕННЯ КП КОРИСТУВАЧА, АЛГОРИТМИ ІНДЕТИФІКАЦІЇ КОРИСТУВАЧІВ, ПСЕВДО-КОД




ЗМІСТ

РЕФЕРАТ 4

Python, АЛГОРИТМ ДОСЛІДЖЕННЯ КП КОРИСТУВАЧА, АЛГОРИТМИ ІНДЕТИФІКАЦІЇ КОРИСТУВАЧІВ, ПСЕВДО-КОД 4

ВСТУП 6

Огляд різних методів аутентифікації й класифікації: вивчення існуючих підходів. 7

1.1 Атрибутна та парольна аутентифікація та її особливості 7

1.3 Механіз динамічної аутентифікації 12

1.4 Клавіатурний почерк: навчання та ідентифікація основаних на ньому систем 14

1.5 Математична модель клавіатурного почерку користувача 15

1.5.1 Функція процесу набору тексту 16

ПЕРЕЛІК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 33





































Вим

Лист

№ докум.

Підпис

Дата

Розроб.






















Перевір.

.






















Т. контр.










КН-21-1_

Н. контр.









ВСТУП


У сучасному світі, коли все більше процесів та послуг здійснюється через мережу Інтернет, забезпечення безпеки віртуального простору є надзвичайно важливим завданням. Ідентифікація користувача є ключовим аспектом забезпечення безпеки, оскільки це дозволяє відрізняти легітимних користувачів від несанкціонованих осіб та запобігати несанкціонованому доступу до конфіденційних даних. У цьому контексті алгоритми ідентифікації користувачів стали важливим напрямком досліджень у галузі кібербезпеки.

Один з ефективних способів захисту полягає у використанні систем управління доступом та захисту інформації, що базуються на унікальній інформації, яка характеризує кожного користувача. Для цього існують різноманітні методи аутентифікації, такі як парольні, атрибутні та біометричні методи, що застосовуються для ідентифікації користувачів у мережі.

1. Парольні – засновані на унікальній інформації (пароль, пін-код тощо);

2. Атрибутні – засновані на використанні унікального предмету (ключ, токен

тощо);

3. Біометричні – засновані на унікальності біологічних та психологічних даних

користувача (відбиток пальця, почерк, голос, сітківка ока тощо).

Метою даної курсової роботи є розробка алгоритму ідентифікації користувачів за тривалістю утримання клавіш, за часом між натисненням клавіш та за довільним текстом. Використання цих параметрів пов'язано з тим, що вони є унікальними для кожного користувача і можуть бути використані для побудови індивідуального "підпису" користувача. Розробка такого алгоритму має практичне значення для захисту від несанкціонованого доступу до різноманітних систем, що використовують авторизацію за паролем.

У даній роботі будуть розглянуті питання теоретичного і практичного характеру, пов'язані з розробкою і використанням алгоритмів ідентифікації користувачів на основі аналізу їх поведінки під час набору тексту. Також будуть проведені дослідження з порівнянням розробленого алгоритму з існуючими методами ідентифікації користувачів, що дозволить зробити висновки про ефективність та перспективи подальшого вдосконалення даного методу.


Огляд різних методів аутентифікації й класифікації: вивчення існуючих підходів.




1.1 Атрибутна та парольна аутентифікація та її особливості


Аутентифікація - це процедура перевірки справжності суб'єкта доступу. В контексті комп'ютерної безпеки, аутентифікація використовується для перевірки того, що користувач, який намагається отримати доступ до системи або ресурсів, є тим, за кого він себе видає. Зазвичай аутентифікація включає в себе процес надання ідентифікаційних даних, таких як ім'я користувача та пароль, після чого система перевіряє їх правильність та відповідність збереженим в ній даним.

Атрибутна аутентифікація базується на перевірці володіння певними атрибутами або характеристиками користувача для підтвердження його ідентичності. Ці атрибути можуть включати фізичні речі, такі як ключі, картки доступу або біометричні дані (відбитки пальців, розпізнавання обличчя і т.д.). Основна ідея полягає в тому, що користувач повинен мати при собі певний атрибут, який дозволяє йому отримати доступ до системи. Прикладом може бути використання картки доступу для входу в приміщення.



Рисунок 1.1 – Приклад Атрибутної аутентифікації
Особливості атрибутної аутентифікації:

Висока ступінь безпеки: Оскільки атрибути, є унікальними для кожної особи, цей метод аутентифікації забезпечує високий рівень безпеки.

Відсутність необхідності запам'ятовувати паролі: Користувачам не потрібно запам'ятовувати складні паролі, оскільки доступ до системи надається на основі їх атрибутів.

Можливість швидкого доступу: Атрибути можуть бути швидко перевірені або скановані, що дозволяє користувачеві швидко отримати доступ до системи.

Парольна аутентифікація - це процес перевірки ідентифікації користувача на основі введення пароля. Вона використовується для підтвердження того, що особа, яка намагається отримати доступ до певного облікового запису або ресурсу, є правомірним користувачем. Цей метод аутентифікації є широко поширеним у багатьох системах, таких як електронні поштові скриньки, соціальні мережі та онлайн-банкінг.

Під час парольної аутентифікації користувач надає ідентифікатор (наприклад, ім'я користувача) і пароль, який він асоціює зі своїм обліковим записом. Система порівнює ці дані з збереженими аутентифікаційними даними, зазвичай зашифрованими паролями, які раніше були налаштовані для цього користувача. Якщо введені дані співпадають зі збереженими, аутентифікація вважається успішною, і користувачу надається доступ до облікового запису або ресурсу.



Рисунок 1.2 – Приклад Парольної аутентифікації
Особливості парольної аутентифікації:

Легкість використання: Паролі вважаються простим і зручним методом аутентифікації, оскільки користувачі можуть легко створювати та запам'ятовувати паролі.

Потреба в безпечності паролів: Важливо, щоб паролі були складними та надійними, щоб запобігти несанкціонованому доступу. Користувачам рекомендується використовувати довгі паролі, що містять комбінацію великих і малих літер, цифр та спеціальних символів.

Ризик підміни паролю: Якщо хтось інший дізнається пароль користувача, він може отримати доступ до системи від імені користувача. Тому важливо зберігати паролі в надійному місці та регулярно змінювати їх.

Обидва методи аутентифікації мають свої переваги і недоліки, і вибір конкретного методу залежить від потреб безпеки та зручності в конкретній ситуації. У деяких випадках може бути доцільним застосування комбінації обох методів для забезпечення більш високого рівня безпеки.
1.2 Біометрична аутентифікація та її особливості

Для підвищення рівня безпеки інформації, аутентифікація може базуватися на біометричних параметрах або поведінкових характеристиках, таких як відбитки пальців, голос, сітківка ока, динаміка особистого підпису, стиль роботи з клавіатурою, тембр голосу і т.д. Такі методи аутентифікації зазвичай забезпечують більш високий рівень безпеки, оскільки біометричні параметри є унікальними для кожної людини і не можуть бути скопійовані або підроблені. Однак залишається можливість помилок і ложних спрацювань системи, що потребує постійного вдосконалення та відповідного контролю.



Рисунок 1.3 – Приклад Біометричної аутентифікації
У методі біометричної аутентифікації зазвичай виділяють дві великі групи:


1. методи статичної біометрії використовують статичні або не змінні фізичні характеристики людини, такі як відбитки пальців, форма обличчя, форма тіла, структура рогівки ока та інші;

2. методи динамічної біометрії використовують динамічні характеристики, такі як голос, ходьба, рухи очей, динаміка особистого підпису та інші. Динамічна біометрія може також включати аналіз поведінки користувача, такий як стиль роботи з клавіатурою та мишею;

Біометрична аутентифікація, відмінно від паролів, не дає абсолютну точність визначення користувача. Хоча пароль або еквівалентний еталону, або ні, системи біометричної аутентифікації розпізнають користувача з певним рівнем впевненості.

Однак, система біометричної аутентифікації може не впізнати легального користувача або надати доступ нелегальному. Оцінка біометричних систем проводиться за двома характеристиками:

1.відмова у доступі (FRR) - з якою ймовірністю система не впізнає зареєстрованого користувача;

2.помилковий доступ (FAR) - ймовірність помилкового допуску нелегального користувача.

Один з напрямків біометрії - аутентифікація користувачів за клавіатурним почерком - застосовується у системах, де використовується клавіатурний ввід або управління через клавіатуру. Це може бути в комп'ютерних системах та мережах, системах державної важливості тощо.

1.3 Механіз динамічної аутентифікації



Системи біометричної ідентифікації та аутентифікації особистості, що використовуються в динамічних ситуаціях, базуються на використанні динамічних параметрів та характеристик особистості (таких як походка, рукописний почерк та спосіб набору тексту на клавіатурі) як основних ознак для ідентифікації та підтвердження особи.

У біометричних системах, що базуються на аналізі унікальних характеристик динаміки рухів, існує значна спільність. Це дозволяє використовувати загальну схему для опису всіх біометричних систем цього типу та відображає основні етапи обробки інформації (див. рис. 1.4).



Рис. 1.4. Схема системи ідентифікації особистості за особливостями динаміки рухів.

Для динамічних біометричних систем аутентифікації, які використовують рукописний і клавіатурний почерк, відповідні характеристики особистості перетворюються на вектор інформативних біометричних параметрів, що представлений у N-вимірній ортогональній системі координат. Компоненти цього вектора формуються шляхом прямих вимірювань параметрів почерку (клавіатурного) або за допомогою обчислення лінійних ортогональних функціоналів Фур'є, Уолша, Хаара на основі повного виконання користувачем парольної фрази. У загальному випадку компоненти вектора можуть мати внутрішню взаємозв'язок.

Механізм аутентифікації ґрунтується на складності задачі керування людськими рухами. Формально цю задачу можна уявити як спрощену модель з трьома виходами та множиною вхідних сигналів для керування м'язами. Первинна оцінка складності задачі може бути здійснена за кількістю вхідних сигналів у моделі або кількістю задіяних м'язів для певного типу руху. Наприклад, під час письма рукою задіяні м'язи більшості пальців руки та м'язи передпліччя. Загалом, кількість задіяних м'язів може перевищувати п'ятдесят, але, ймовірно, головний вплив мають приблизно десять м'язів. Таким чином, керуючи рукою під час письма, людина в реальному часі стикається з керуванням принаймні десятьма вимірами.

Під час використання клавіатури (сліпе друкування тексту), додатково задіяні ще близько двадцяти м'язів плеча та плечового поясу кожної руки. Таким чином, при сліпому друкуванні обома руками потенційно можуть бути задіяні сорок м'язів. Якщо врахувати, що найбільший вплив мають лише 20% від загальної кількості м'язів, отримаємо число, що дорівнює двадцять восьми, тобто приблизно двадцять восьмивимірну задачу керування.


1.4 Клавіатурний почерк: навчання та ідентифікація основаних на ньому систем


Клавіатурний почерк є поведінковою біометричною характеристикою, яку описують наступні параметри:

  1. Швидкість ввода - кількість введених символів, поділена на час друкування.;

  2. Динаміка ввода - характеризується інтервалом між натисканням клавіш та тривалістю утримання їх;

  3. Частота винекнення помилок при вводі;

  4. Використання клавіш - наприклад, які функціональні клавіши натискаються для вводу заголовних літер;

  5. Сила натискання на клавіши.

Визначення ідентичності користувача за допомогою клавіатурного почерку можливе за допомогою набору ключової фрази та довільного тексту. Основна відмінність між цими двома методами полягає в тому, що в першому випадку ключова фраза встановлюється користувачем під час реєстрації в системі (пароль), тоді як у другому випадку використовуються ключові фрази, що генеруються системою кожного разу під час ідентифікації користувача. Обидва методи передбачають два режими роботи - навчання та ідентифікація.

Навчання і ідентифікація в контексті клавіатурного почерку можуть працювати наступним чином:

Навчання:

  1. Користувач реєструється в системі і задає ключову фразу (пароль) або інші параметри клавіатурного почерку, які будуть використовуватись для ідентифікації.

  2. Під час навчання система збирає дані про клавіатурний почерк користувача, такі як швидкість введення, динаміка вводу, частота помилок та інші параметри.

  3. Зібрані дані використовуються для побудови моделі клавіатурного почерку користувача, яка може бути основою для подальшої ідентифікації.

Ідентифікація:

  1. Під час ідентифікації користувача система збирає дані про його клавіатурний почерк під час вводу тексту.

  2. Зібрані дані порівнюються з попередньо побудованою моделлю клавіатурного почерку користувача.

  3. Застосовуються алгоритми порівняння, які оцінюють ступінь відповідності між збереженою моделлю та поточним клавіатурним почерком користувача.

  4. На основі цього порівняння система вирішує, чи ідентифікується користувач успішно, чи ж це невідповідність і відхиляє доступ.

Загалом, навчання включає процес створення моделі клавіатурного почерку користувача на основі його вхідних даних, а ідентифікація використовує цю модель для порівняння та розпізнавання клавіатурного почерку під час реального використання.

1.5 Математична модель клавіатурного почерку користувача



1.5.1 Функція процесу набору тексту


Процес набору тексту користувачем на клавіатурі можна уявити як функцію ϑ(t), де t представляє час:



де γ(t) – складова, характеризуюча підсвідомі

процеси мислення при наборі тексту;

θ(t) – складова свідомих процесів мислення;

λ(t) – механічні характеристики клавіатури, влпиваючі на

процес набору тексту.

Основним завданням системи біометричної ідентифікації користувача на основі клавіатурного почерку є виділення і подальша ідентифікація компоненту γ(t) з функції ϑ(t), яка визначає вхідні дані для системи ідентифікації після вимірювання тимчасових характеристик клавіатурного почерку користувача. Для досягнення цього, необхідно виділити компоненти ϴ(t) і λ(t) з вихідної функції ϑ(t). Оскільки неможливо побудувати механічну модель рухів людини при наборі тексту, єдиним прийнятним рішенням є збір статистичних даних щодо клавіатурного почерку великої кількості користувачів.

Імовірність аутентифікації користувача на основі часу утримання клавіш, залежно від довжини ключової фрази, є стабільнішою характеристикою клавіатурного почерку оператора, ніж час між натисканнями клавіш, який збільшується зі зростанням довжини ключової фрази. Це пояснюється тим, що процес натискання клавіш на клавіатурі є підсвідомим процесом мислення. Характер даної функції практично не змінюється для широкого кола операторів, незалежно від їх кваліфікації та досвіду роботи з клавіатурою. Тому складова γ(t) найточніше характеризується часом утримання клавіш при введенні тексту користувачем. Час утримання клавіші розраховується за формулою (1):
(1)

. – час утримання клавіші;

– час відпускання клавіші;

. – час натискання клавіші.

Після аналізу характеристик клавіатурного почерку було запропоновано використовувати час утримання клавіш для виявлення підміни законного користувача. У шаблоні клавіатурного почерку користувача рекомендується зберігати середні значення часу утримання клавіш. З використанням такого шаблону стає можливим ідентифікувати користувача в системі аутентифікації. Наступною частиною тексту буде аналіз відомих методів ідентифікації та аутентифікації користувачів за допомогою клавіатурного почерку: статистичних методів, методів заснованих на застосуванні нейронних мереж,

розпізнаванні образів і генетичних алгоритмах.

Статистичні методи включають обчислення відхилень між характеристиками поточного клавіатурного почерку користувача, який намагається отримати доступ до інформаційної системи, і характеристиками клавіатурного почерку, збереженими в системі для даного користувача. Для порівняння можуть використовуватися різні методи, такі як t-тест, Евклідова відстань, Хеммінгова відстань та інші. Joyce і Gupta досягли точності аутентифікації з FAR (частота помилкового відкидання) 0.25% і FRR (частота неправильного прийняття) 16.36% в своїй роботі, використовуючи Хеммінгову відстань (2) і відстань Махаланобіса (3) для вимірювання відхилень між характеристиками клавіатурного почерку:
(2)
(3)

і – номер клавіші;

N – кількість аналізованих клавіш;

Аі – тимчасова характеристика для клавіші з шаблону оператора, який

претендує на доступ;

Ві – тимчасова характеристика для клавіші з шаблону, що зберігається в базі

шаблонів і відповідного оператору;

σ – середньоквадратичне відхилення Аі від Ві.

Guven і Sogukpinar базуючись на векторному аналізі досягли точності

ідентифікації оператора в 95%. Аналіз робіт зазначених дослідників дозволив

зробити висновок, що головною проблемою статистичних методів є недолік даних на стадії навчання, тобто при отриманні шаблону почерку оператора.

Метод, заснований на нейронних мережах, вперше був застосований Обайдатом і Маккіароло для аутентифікації і ідентифікації користувачів за часом між натисканнями клавіш. Вони досягли точності ідентифікації оператора на рівні 96.8%, використовуючи нейронну мережу, засновану на сумі творів. Йонг і його колеги запропонували використовувати динамічну нейронну мережу. Аналіз даних досліджень показав, що основною перевагою нейронних мереж є їх здатність обробляти одночасно кілька параметрів почерку. Проте виявлено основні недоліки застосування нейронних мереж при розпізнаванні клавіатурного почерку: тривалість процедур навчання та аутентифікації, випадки, коли нейронна мережа не може навчитися через особливості вхідних даних. Оскільки цей метод використовується тільки як "чорний ящик", неможливо визначити достатній обсяг і склад вхідних даних для успішної роботи та отримання шаблону почерку. Крім того, при додаванні шаблону нового користувача до системи потрібно знову навчати всю нейронну мережу.

Для методу розпізнавання образів, Гіот та його колеги запропонували використовувати метод опорних векторів для розпізнавання клавіатурного почерку. Вони досягли рівня ідентифікації на рівні 95%. Основною перевагою цього методу є висока точність, яка досягається завдяки ігноруванню помилок і похибок у вимірюванні часу утримання клавіш. Недоліком методу є те, що ідентифікація проводиться не за всіма шаблонами, а лише за тією частиною шаблонів, яка знаходиться на кордонах.

Revett та інші дослідники, використовуючи генетичні алгоритми, досягли ймовірності виникнення помилок FAR на рівні 0.43% і FRR на рівні 4.75%. Основною перевагою використання генетичних алгоритмів є їх здатність легко взаємодіяти з великими базами даних і обробляти багатовимірні, недиференціальні, безперервні і непараметричні дані. Однак, виділено головні недоліки генетичних алгоритмів, такі як висока трудомісткість, що обмежує їх сферу застосування, низька стійкість до відхилень у тимчасових характеристиках почерку та невозможність гарантувати знаходження оптимального рішення.

1.5.2 Реалізація механізмів систем постійного клавіатурного моніторингу з метою виявлення підміни користувача

На основі проведеного аналізу пропонується використовувати наступну архітектуру біометричної підсистеми для виявлення підміни законного користувача (див. рисунок 1.5). Ця архітектура забезпечує процес отримання шаблону почерку і порівняння почерків.



Рисунок 1.5 – Спрощена архітектура біометричної системи виявлення підміни

законного оператора

Як видно на малюнку, підсистема складається з декількох блоків:

  1. Блок отримання і запису клавіатурного почерку користувача відповідає за отримання тимчасових міток подій натискання і відпускання клавіш та визначення до якої клавіші вони відносяться. Для вимірювання часу виникнення подій використовується таймер. В даному блоку також присутній фільтр для виявлення довгих натискань на клавіші. Важливим аспектом є точність визначення моменту виникнення подій клавіатури. Тому системи повинні бути стійкими до помилок вимірювання часу.

  2. Блок обробки вибірки подій клавіатури відповідає за обчислення усереднених значень часу утримання клавіш. Це означає, що він аналізує зібрані дані про час утримання кожної клавіші і обчислює середнє значення цього часу. Таким чином, блок обробки вибірки подій клавіатури надає узагальнену інформацію про тривалість утримання клавіш у користувача.

  3. Блок зберігання клавіатурного почерку дозволяє зберегти шаблонні значення клавіатурного почерку користувачів в базу шаблонів.

  4. Блок порівняння поточного клавіатурного почерку і шаблонного відповідає за порівняння почерків та прийняття рішення щодо аутентифікації і ідентифікації користувача на основі результатів порівняння. Цей блок використовує отримані усереднені значення часу утримання клавіш і порівнює їх зі збереженими шаблонами почерку в системі. На підставі порівняння блок приймає рішення щодо того, чи відповідає поточний почерк шаблону, і визначає, чи є користувач аутентичним або ідентифікує його.

1.5.3 Розроблення математичної моделі часу утримання клавіш
Аналіз клавіатурного почерку ґрунтуються на припущенні, що клавіатурний

почерк представляється у вигляді усереднених значень подій клавіатури. У системах

Microsoft Windows виділяють три види подій клавіатури:

  1. Подія KeyDown, яка відбувається один раз. Спрацьовує під час натискання

фізичної клавіші. Подія нижчого рівня – реагує на натискання будь-якої клавіші на клавіатурі. Повертає код натиснутою клавіші.

  1. Подія KeyUp, яка виникає один раз після того, як користувач відпускає

фізичну клавішу. В усьому іншому подія аналогічна до KeyDown.


  1. Подія KeyPress, яка може виникати кілька разів, коли користувач утримує

натиснуту клавішу. Ця подія виникає при натисканні клавіші, що призводить до введення знаку.

У системах розпізнавання клавіатурного почерку, статистичні дані включають значення часу подій клавіатури. Однією з важливих ознак клавіатурного почерку є час утримання клавіш, який вимірює часовий інтервал між подіями KeyDown(A) і KeyUp(A), де А представляє собою одну з клавіш клавіатури. Цей метод вимагає збору статистики, що складається з вибірки тимчасових значень, де кожен елемент вибірки відповідає часу утримання клавіші.

У ймовірно-статистичному підході необхідно будувати середньостатистичні шаблони, використовуючи зразки, пред'явлені системі під час навчання. При цьому враховується, що клавіатурний почерк людини підлягає впливу багатьох факторів, таких як програмні і апаратні затримки, які також є випадковими величинами, рух нервових імпульсів по нейронам, час реакції м'язів на сигнали, що передаються мозком, та інші. Таким чином, клавіатурний почерк підпорядковується впливу багатьох незалежних випадкових факторів. Цей ефект можна описати формулою Гауса. Для зменшення впливу випадкових помилок необхідно здійснити кілька вимірювань досліджуваної величини.

Розглянемо застосування формули Гауса в процесі обробки результатів вимірювання характеристик клавіатурного почерку. Припустимо, що ми вимірюємо час утримання якоїсь конкретної клавіші, позначимо цю величину X. В результаті проведених вимірювань ми отримали вибірку значень величини (4):

(4)

Цей ряд значень величини X складає нашу вибірку часу утримання клавіші. За допомогою цієї вибірки ми робимо оцінку результатів вимірювань, яка представляє собою усереднене значення часу утримання клавіші, що очікується від користувача при натисканні на клавішу. Цю оцінку позначаємо як 𝑋̅. Проте, оскільки ця оцінка не є точним значенням вимірюваної величини часу утримання клавіші, необхідно оцінити помилку вимірювання. Припустимо, що ми здатні визначити оцінку помилки ΔХ. Тоді ми можемо записати результат вимірювань у вигляді (5):

(5)

Таким чином, для вирішення цієї задачі, ми повинні знайти оцінку результатів вимірювань 𝑋̅, його помилку ΔХ та надійність Р. Це можна зробити за допомогою математичної статистики. Запропоновано оцінювати середнє значення всіх елементів вибірки, що була зібрана для конкретної клавіші, як оцінку результатів вимірювань ЧУК (6):

(6)

Де N – число вимірювань.

Значить, для вибірки з N вимірювань часу утримання, найбільш ймовірним значенням вимірюваної величини буде її середнє арифметичне значення. Отримане середнє значення ЧУК прагне до істинного значення μ вимірюваної величини 𝑋̅ при збільшенні числа вимірювань, тобто коли кількість вимірювань 𝑁 збільшується до нескінченності (𝑁 → ∞).

Середньоквадратичної помилкою середнього арифметичного називається величина:



Точність оцінки зростає при збільшенні числа вимірювань. Помилка SX̅ дозволяє оцінити точність, з якою розраховано середнє значення часу утримання клавіш. Отже, можна визначити, скільки разів повинна бути натиснута конкретна клавіша, для того щоб зібрати статистику, що характеризує усереднений часу утримання клавіш. Відповідно, для того щоб визначити клавіатурний почерк користувача, потрібно зібрати дані про середні значення часу утримання всіх використовуваних клавіш.


  1. РОЗРОБКА ПРОГРАМИ

2.1 Обґрунтування вибору засобів реалізації

Для проведення дослідження властивостей аутентифікації користувача за допомогою клавіатурного почерку при введенні логіна та пароля, ми використали систему динамічної парольної аутентифікації, яка базується на векторі біометричних параметрів користувача, описаному у попередньому розділі.

Для аналізу введених повідомлень, таких як логіни та паролі, було необхідно створити візуальне сприйняття, що симулює реальний процес аутентифікації. Для реалізації такої моделі ми обрали використання візуального інтерфейсу програми з використанням Tkinter. Для цього вибору ми використали мову програмування Python, яка є основною мовою для розробки алгоритму та інтерфейсу. Вона має кілька значних переваг, таких як простота використання, широкий спектр бібліотек та інструментів для роботи з текстом, обробки даних та створення графічного інтерфейсу.

2.2 Структура програмного продукту
Структура програми описана псевдо-кодом:
Імпорт модулів

Створення класу Form1:

Визначення конструктора:

Ініціалізація вікна програми

Створення та розміщення елементів інтерфейсу на формі

Встановлення обробників подій
Створення методу create_files:

Отримання шляху до поточної директорії та файлів

Перевірка і створення файлів (якщо не існують)
Створення методу on_key_press:

Обробка події натискання клавіші
Створення методу on_key_release:

Обробка події відпускання клавіші

Запис часу між натисканнями в чергу
Створення методу show_results:

Відображення результатів введення в діалоговому вікні
Створення методу get_results:

Формування списку результатів введення
Створення методу reset:

Скидання всіх даних та елементів інтерфейсу в початковий стан
Створення методу save_results:

Збереження результатів у файли

Скидання даних та елементів інтерфейсу
Створення методу get_press_results:

Формування списку результатів натискання клавіш
Створення методу predict:

Зчитування даних з файлів з результатами та тестовими даними

Перевірка результатів введення на відповідність авторським даним

Відображення результату перевірки в діалоговому вікні

Збереження результатів
Створення методу save_to_file:

Збереження вмісту в файл
Створення методу reset_files:

Скидання тестових файлів
Створення методу reset_file:

Скидання даних у файлі
Створення методу read_file_lines:

Зчитування рядків з файлу
Створення методу on_close:

Закриття програми
Якщо модуль є головним:

Створення екземпляра класу Form1

Запуск головного циклу програми
2.3 Зовнішній вигляд програми та опис її функціонування

Щоб запустити програмний продукт, треба відкрити відповідний файл із розширенням .exe. Після цього кроку перед нами предстає інтерфейс додатку, показаний на рисунку 3.2, який має наступні елементи:

  • Заголовок вікна: "Перевірка".

  • Розміри вікна: 400 на 400 пікселів.

  • Є три кнопки з підписами: "Вивести результати вводу", "Скинути", "Перевірити".

  • Є поле введення тексту textBox1.

  • Є дві мітки (label1 та label2) без початкових значень.

  • Є кнопка "Зберегти" для збереження результатів.

  • Після запуску програми автоматично створюються два файли: "time_betweenResults.txt" та "time_pressResults.txt".


Рисунок 2.1 – Програма на початку роботи


Тестування програмного продукту

Для отримання інформації про ваш клавіатурний стиль необхідно запустити програму. У вікні, яке відкриється, будь ласка, введіть свій пароль або логін кілька разів без зволікання і після кожного введення натисніть кнопку "Зберегти". Чим більше спроб буде збережено, тим краще алгоритм зможе аналізувати ваш почерк, що сприятиме більш точному розпізнаванню автора.


Рисунок 2.2 – Результати вводу


Рисунок 2.3 – Збереження


Рис.2.4. Вигляд даних щодо інтервалу між натискання клавіш

Для подальшої перевірки, чи ввід є авторським, потрібно ввести пароль, який ми раніше вводили, і натиснути кнопку "Перевірити". Відкриється вікно з результатом, яке покаже, чи є ввід авторським або ні.Приклад авторського на рис. 2.5, не авторський на рис.2.6



Рисунок 2.5 – Результат що ввід розпізнаний як не авторський



Рисунок 2.6 – Результат що ввід розпізнаний як авторський

ВИСНОВКИ

Аналізуючи отримані результати, можна заявити, що мені вдалося успішно виконати всі поставлені завдання. Я дослідив можливості аутентифікації користувача за його клавіатурним почерком при введенні парольних даних. Провів аналіз властивостей та параметрів клавіатурного почерку під час введення коротких, добре відомих фраз. Практично підтвердив, що такі дані вводяться на підсвідомому рівні з використанням м'язової пам'яті.

Крім того, було запропоновано й реалізовано використання дослідної частини моєї роботи для створення моделі фільтрації авторського вводу від неавторського. Було обґрунтовано математично функцію розподілу областей, які належать "своїм" даним та "чужим" даним. Розроблений метод фільтрації був реалізований та протестований. В результаті тестування було підтверджено, що створена модель ефективно розділяє області авторського вводу від неавторського.

ПЕРЕЛІК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ


  1. Прохоров А. Пропуск, который всегда с собой: Снова о характеристиках биометрических устройствах контроля доступа/ КомпютерПресс ­ №3.­2001. [Електронний ресурс]. – Режим доступу до ресурсу: http://www.compress.ru/Archive/CP/2001/3/5/10.html.

  2. DataLossDB Open security foundation [Електронний ресурс]. – Режим доступу

  3. до ресурсу: http://www.datalossdb.org/

  4. И.А. Ходашинский, М.В. Савчук, И.В. Горбунов, Р.В. Мещеряков Технология усиленной аутентификации пользователей информационных процессов https://journal.tusur.ru/storage/47805/236.pdf?1467958915

  5. Brown, M. User identification via keystroke characteristics of typed names using neural networks // S. J. Rogers // International Journal of Man - Machine Studies, 1998. – 999-1014 с.

  6. Crawford, H. (n.d.). Keystroke dynamics: Characteristics and opportunities, Privacy Security and Trust (PST), Eighth Annual International Conference on, IEEE, 2010. – 205-212 с.

  7. Bergadano, F., Gunetti, D. & Picardi, C. User authentication through keystroke dynamics, ACM Transactions on Information and System Security (TISSEC), 2002. – 367-397.



ДОДАТКИ

Додаток А

Код программи для дослідження КП:

import os
import re
import time
import tkinter as tk
from tkinter import messagebox
from collections import deque


class Form1(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.title("Перевірка")
self.geometry("400x400")
self.protocol("WM_DELETE_WINDOW", self.on_close)

self.ftime = {'w1': 0.0, 'w2': 0.0}
self.watch = time.time()
self.ColDic = {}
self.qd1 = deque()

self.label1 = tk.Label(self, text="Розпізнавання")
self.label1.pack(pady=10)
self.label2 = tk.Label(self, text="")
self.label2.pack()

self.textBox1 = tk.Text(self, height=5)
self.textBox1.bind("", self.on_key_press)
self.textBox1.bind("", self.on_key_release)
self.textBox1.pack(pady=10)
self.textBox1.focus_set()

self.button1 = tk.Button(self, text="Вивести результати вводу", command=self.show_results)
self.button1.pack(pady=5)
self.button2 = tk.Button(self, text="Скинути", command=self.reset)
self.button2.pack(pady=5)
self.button3 = tk.Button(self, text="Перевірити", command=self.predict)
self.button3.pack(pady=5)

self.button4 = tk.Button(self, text="Зберегти", command=self.save_results)
self.button4.pack(pady=5)

self.create_files()

self.save_counter = 0 # Лічильник збережень

def create_files(self):
directory = os.path.dirname(os.path.abspath(__file__))
between_results_file = os.path.join(directory, "time_betweenResults.txt")
press_results_file = os.path.join(directory, "time_pressResults.txt")

try:
# Створення файлу "time_betweenResults.txt" (якщо не існує)
if not os.path.isfile(between_results_file):
with open(between_results_file, "w"):
print("Файл 'time_betweenResults.txt' успішно створено.")

# Створення файлу "time_pressResults.txt" (якщо не існує)
if not os.path.isfile(press_results_file):
with open(press_results_file, "w"):
print("Файл 'time_pressResults.txt' успішно створено.")

except Exception as e:
print("Сталася помилка при створенні файлів:", str(e))

def on_key_press(self, event):
d1 = time.time() - self.watch
self.qd1.append(d1)

def on_key_release(self, event):
d2 = time.time() - self.watch
work = str(event.keycode) + str(len(self.ColDic) + 1)
self.ftime['w1'] = d2 - self.qd1.popleft()
d1 = self.qd1[0] if self.qd1 else 0.0
self.ftime['w2'] = d1 if self.ftime['w2'] == 0.0 else d1 - self.workUp
self.ColDic[work] = self.ftime
self.workUp = d2

def show_results(self):
messagebox.showinfo("Результати вводу", self.get_results())

def get_results(self):
results = []
for key, value in self.ColDic.items():
results.append(f"{key}\t{value['w1']}\t{value['w2']}")
return "\n".join(results)

def reset(self):
self.ColDic.clear()
self.qd1.clear()
self.watch = time.time()
self.workUp = -3
self.textBox1.delete("1.0", tk.END)
self.textBox1.focus_set()

def save_results(self):
self.save_to_file("time_betweenResults.txt", self.get_results())
self.save_to_file("time_pressResults.txt", "\n".join(self.get_press_results()))
self.reset()

self.save_counter += 1
messagebox.showinfo("Збережено", f"Результати збережено ({self.save_counter} збережень)")

def get_press_results(self):
results = []
for value in self.ColDic.values():
results.append(str(value['w1']))
return results

def predict(self):
strArr1 = self.read_file_lines("time_betweenResults.txt")
strArr2 = self.read_file_lines("time_pressResults.txt")

if strArr1 is None or strArr2 is None:
messagebox.showinfo("Помилка", "Не вдалося прочитати файли з результатами.")
return

strArr1 = [re.sub(r"\t", " ", s).strip() for s in strArr1]
strArr2 = [re.sub(r"\t", " ", s).strip() for s in strArr2]

if len(strArr1) == 0 or len(strArr2) == 0:
messagebox.showinfo("Помилка", "Файли з результатами порожні.")
return

res_bet_author = [[float(s) for s in re.split(r"\s+", line)] for line in strArr1]
res_pres_author = [[float(s) for s in re.split(r"\s+", line)] for line in strArr2]

strArr3 = self.read_file_lines("time_betweenResults.txt")
strArr4 = self.read_file_lines("time_pressResults.txt")

if strArr3 is None or strArr4 is None:
messagebox.showinfo("Помилка", "Не вдалося прочитати файли з тестовими даними.")
return

strArr3 = [re.sub(r"\t", " ", s).strip() for s in strArr3]
strArr4 = [re.sub(r"\t", " ", s).strip() for s in strArr4]

if len(strArr3) == 0 or len(strArr4) == 0:
messagebox.showinfo("Помилка", "Тестові файли порожні.")
return

res_bet = [[float(s) for s in re.split(r"\s+", line)] for line in strArr3]
res_pres = [[float(s) for s in re.split(r"\s+", line)] for line in strArr4]

if len(res_bet_author) == 0 or len(res_pres_author) == 0:
messagebox.showinfo("Помилка", "Файли з результатами не містять даних.")
return

proverka_bet = [False] * len(res_bet_author[0])
proverka_pres = [False] * len(res_pres_author[0])

for i in range(1, len(res_bet_author[0])):
if res_bet_author[0][i] <= res_bet[0][i] <= res_bet_author[1][i]:
proverka_bet[i] = True

for i in range(len(res_pres_author[0])):
if res_pres_author[0][i] <= res_pres[0][i] <= res_pres_author[1][i]:
proverka_pres[i] = True
r = sum(proverka_bet)
w = sum(proverka_pres)

if w >= 3 and r >= 3:
messagebox.showinfo("Результат перевірки", "Ввід розпізнано як авторський")
else:
messagebox.showinfo("Результат перевірки", "Ввід розпізнано як авторський")

self.save_results()

def save_to_file(self, filename, content):
try:
with open(filename, "w") as file:
file.write(content)
print("Файл успішно збережено:", filename)
except Exception as e:
print("Сталася помилка при збереженні файлу:", str(e))

def reset_files(self):
self.reset_file("time_between_test.txt")
self.reset_file("time_press_test.txt")

def reset_file(self, filename):
try:
with open(filename, "w"):
pass
print("Файл успішно скинуто:", filename)
except Exception as e:
print("Сталася помилка при скиданні файлу:", str(e))

def read_file_lines(self, filename):
try:
with open(filename, "r") as file:
return file.readlines()
except Exception as e:
print("Сталася помилка при читанні файлу:", str(e))
return None

def on_close(self):
self.destroy()


if __name__ == "__main__":
app = Form1()
app.mainloop()




скачати

© Усі права захищені
написати до нас