Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/7745| Title: | Підсистема автентифікації користувачів на основі протоколу Шнорра |
| Authors: | Панаско, Олена Миколаївна Савченко, Віталій Олексійович |
| Keywords: | підсистема;схема шнорра;автентифікація;ідентифікація;системи розпізнавання осіб;алгоритми |
| Issue Date: | 2022 |
| Abstract: | Розробка та програмна реалізація підсистеми автентифікації у клієнт-серверному середовищі з використанням мови програмування Python, а також аналіз результатів її роботи. |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/7745 |
| Appears in Collections: | 125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Б_125_Савченко_Панаско.pdf Restricted Access | 1.21 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ І РОБОТОТЕХНІКИ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ ТА
КІБЕРБЕЗПЕКИ
До захисту допущено
завідувач кафедри РТСК
д.т.н., професор
_______________ В.В. Палагін
"_____" _____________ 2022 року
Пояснювальна записка
до дипломного проекту (роботи)
бакалавра
(освітньо-кваліфікаційний рівень)
на тему «Підсистема автентифікації користувачів на основі протоколу
Шнорра»
Виконав: студент 4 курсу, групи БІ-81
Спеціальності 125 – «Кібербезпека» ,
(шифр і назва спеціальності)
освітньої програми «Безпека інформаційних і
комунікаційних систем»
(назва освітньої програми)
Савченко В.О.
(прізвище та ініціали)
Керівник Панаско О.М.
(прізвище та ініціали)
Рецензент Чепинога А.В.
(прізвище та ініціали)
Черкаси – 2022 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій і робототехніки
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень бакалавр
Спеціальність 125 – Кібербезпека
Освітня програма – Безпека інформаційних і комунікаційних систем
ЗАТВЕРДЖУЮ
Завідувач кафедри В.В. Палагін
“_____” ___________________ 2022 року
ЗАВДАННЯ
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ
Савченка Віталія Олексійовича ___________________
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Підсистема автентифікації користувачів на основі протоколу
Шнорра
керівник проекту (роботи) Панаско Олена Миколаївна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від «18» лютого 2022 року № 58/04
2. Термін здачі студентом закінченої роботи “ 25 ” травня 2022 року _________
3. Вихідні дані до роботи: наукові та навчальні джерела з галузі Cryptography та
Cybersecurity; відомості про методи та механізми автентифікації користувачів в
інформаційно-комунікаційних системах; алгоритми автентифікації з відкритим ключем;
криптографічний протокол Schnorr Identification Protocol, запропонований німецьким
математиком Claus Schnorr; принципи організації клієнт-серверної взаємодії в
комп’ютерних мережах; засоби реалізації мережевої взаємодії за допомогою сокетів;
можливості мови програмування Python для реалізації криптографічних алгоритмів і
мережевих програм; вимоги до забезпечення захисту інформації від несанкціонованого
доступу в сучасних інформаційних системах.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
аналіз понять ідентифікації та автентифікації користувачів; огляд сучасних алгоритмів
автентифікації з відкритим ключем; дослідження принципу роботи та математичної
моделі схеми Шнорра; порівняльний аналіз алгоритмів автентифікації; вибір та
обґрунтування засобів програмної реалізації; розробка архітектури клієнт-серверної
підсистеми; програмна реалізація алгоритму автентифікації.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів)
1. Структурна схема підсистеми автентифікації користувачів на основі протоколу
Schnorr Identification Protocol (взаємодія клієнта та сервера).; 2. Схема алгоритму
автентифікації за схемою Шнорра із відображенням основних етапів виконання
протоколу; 3. Ілюстрації програмної реалізації підсистеми, що демонструють роботу
клієнтської та серверної частини, реалізованих мовою Python; 4. Охорона праці.
.6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Підпис, дата
Прізвище, ініціали та посада
Розділ завдання завдання
консультанта
видав прийняв
Охорона праці Кожем’якін О.С.
старший викладач кафедри
безпеки життєдіяльності
7. Дата видачі завдання 18 лютого 2022 року
КАЛЕНДАРНИЙ ПЛАН
Термін
№ Назва етапів дипломного проекту
виконання етапів Примітка
з/п (роботи)
проекту (роботи)
1. Аналіз технічного завдання та пошук
18.02.22 – 09.03.22
літератури
2. Обґрунтування актуальності теми,
визначення мети, завдань, об’єкта та
10.03.22 – 24.03.22
предмета дослідження, характеристика
структури роботи.
3. Аналіз процесів ідентифікації та
автентифікації, огляд існуючих механізмів
25.03.22 – 10.04.22
автентифікації та сфер їх застосування в
інформаційно-комунікаційних системах.
4. Дослідження алгоритмів автентифікації з
відкритим ключем, зокрема аналіз принципу
11.04.22 – 25.04.22
роботи та властивостей протоколу Schnorr
Identification Protocol.
5. Розробка та програмна реалізація підсистеми
автентифікації у клієнт-серверному
середовищі з використанням мови 26.04.22 – 10.05.22
програмування Python, а також аналіз
результатів її роботи.
7. Виконання розділу охорони праці 11.05.22 – 26.05.22
8. Оформлення пояснювальної записки 27.05.22 – 01.06.22
9. Оформлення презентації 02.06.22 – 09.06.22
Студент Савченко В.О.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Панаско О.М.
( підпис ) (прізвище та ініціали)
ВСТУП
В наш час, коли цифрові технології впроваджуються у всі сфери людського
життя, людям доводиться адаптуватися: переносити особисті дані, важливу інфо-
рмацію на обчислювальні пристрої. І цілком нормально приховувати певну інфо-
рмацію від окремих осіб. Для цього в цифровому просторі використовуються ме-
тоди або схеми автентифікації.
Одною з таких схем автентифікації є схема Шнорра ‒ тип криптографічного
протоколу, що забезпечує цілісність інформації та розмежування доступу. Схема
Шнорра була представлена німецьким математиком Клаусом Шнором як видо-
зміна схем Ель-Гамаля та Фіата – Шаміра. Основною перевагою методу Шнорра є
менший розмір підпису. Схема була покрита патентом до 2008 року, тому не на-
була широкого використання, хоча є досить криптостійкою.
Інтенсивність розвитку інформаційних систем, захисту інформації від НСД,
зумовлюють необхідність удосконалення знань що стосуються систем контролю
доступом, тому обрана тема дипломної роботи є досить актуальною.
Метою дипломної роботи є реалізація підсистеми, що виконує автентифіка-
цію в мережі, між клієнтом і сервером за схемою Шнорра.
Новизна роботи полягає в використанні для автентифікації схеми Шнорра,
адже серед інших алгоритмів, що використовуються для автентифікація схема
Шнорра в порівнянні з іншими алгоритмами є маловідомою та не розповсюдже-
ною, через відносно не давньої можливості для вільної реалізації, і якщо взяти до
уваги той факт що система є досить криптостійкою, то це зумовлює зацікавле-
ність в реалізації підсистеми на основі даного протоколу.
Предметом дослідження є – підсистема, що являє собою дві програми, для
сервера та клієнта, що виконують автентифікацію за схемою Шнорра. Обмін да-
ними відбувається за допомогою сокетів. Підсистема виконана мовою Python.
Для досягнення мети поставлено такі завдання:
• Аналіз відомої інформації та технічних рішень, що стосуються алго-
ритмів автентифікації та схеми Шнорра;
• Визначення механізму обміну інформацією в мережі;
• Реалізація підсистеми за допомогою програмних рішень Python;
• Оформлення пояснювальної записки.
Представлена робота складається із вступу, 3 розділів та списку використа-
них джерел, що містить 16 найменувань на 2 сторінках.
Загальний обсяг роботи – 60 сторінок, з них 56 сторінок основного тексту.
2
РОЗДІЛ 1.
АВТЕНТИФІКАЦІЯ, МЕТОДИ АВТЕНТИФІКАЦІЇ ТА СФЕРА ЗАСТОСУ-
ВАННЯ
1.1 Поняття автентифікації та ідентифікації
Однією з основних проблем забезпечення ІБ є загроза витоку, розкрадання
або втрати важливої персональної інформації. Найбільш очевидною причиною
цих негативних явищ є навмисний з боку неавторизованих у системі користувачів
несанкціонований доступ до конфіденційної (персональної) інформації та пода-
льші небажані маніпуляції з нею. У зв'язку з цим вирішення завдання захисту в
комп'ютерних системах має велике значення.
Для захисту інформаційних систем від таких загроз застосовуються механі-
зми ідентифікації та автентифікації об'єктів (інформація, інформаційні ресурси) та
суб'єктів (користувачі та процеси) ІКС, оскільки основа захисту інформації розра-
хована на роботу з проіменованими суб'єктами та об'єктами ІКС.
Ідентифікація – процес присвоєння суб'єктам та об'єктам ІКС унікального
ідентифікаційного номера (ідентифікатора), який використовуватиметься для по-
рівняння із заданим переліком існуючих ідентифікаторів. Іншими словами, іден-
тифікація – це процес, у якому відбувається визначення повноважень суб'єкта за
його допуску до ІКС, контролю встановлених повноважень у процесі сеансу ро-
боти, реєстрація дій та інших [3].
Автентифікація – перевірка власності суб'єкту доступу, пред'явленого ним
ідентифікатора та підтвердження його особи [3].
1.2 Огляд існуючих механізмів автентифікації, в ІКС
Автентифікація може бути однофакторною або багатофакторною. Фактор
автентифікації – це узагальнено, атрибут, яким засвідчується справжність корис-
3
тувача. Як фактор можуть виступати матеріальні об'єкти (апаратні пристрої, час-
тини тіла) або нематеріальні сутності (кодові слова, файли). Найпростіший випа-
док аутентифікації – використання одного фактора [1].
Існують наступні методи однофакторної автентифіцкації:
1. Паролі;
2. PKI автентифікація;
3. Апаратні токени;
4. Біометрія.
Сутність багатофакторної автентифікації, у тому, щоб взаємно компенсува-
ти недоліки кількох методів автентифікації, як мінімум двох, у яких розрізняють-
ся ключові ризики. Найчастіше практично використовується двофакторна автен-
тифікація. Наприклад, систему, побудовану на апаратних ключах, які користувачі
мають при собі, можна посилити за рахунок механізму паролів, які користувачі
повинні пам'ятати. Тоді зловмисник із токеном не знатиме пароля, а зломщик, що
вкрав пароль, не матиме токена. Звичайно, найпоширеніший і загальновідомий
варіант двофакторної автентифікації – це два паролі, постійний та одноразовий.
Справжнім визнається той користувач, який знає постійний пароль і має при собі
смартфон, куди приходить тимчасовий пароль - так що пристрій зв'язку де-факто
грає роль апаратного токена.
Однак, тут також є свої недоліки, варто мати на увазі, що двофакторна авте-
нтифікація не вирішує проблем того ж парольного захисту в корені ‒ вона лише
ускладнює завдання зловмисника за рахунок введення ще одного фактора. Клю-
чова вразливість ‒ відсутність прямого зв'язку з особистістю користувача залиша-
ється на місці. Оскільки можливість видати себе за іншу людину зберігається,
зломщики шукають (і знаходять) обхідні шляхи. Наприклад, при віддаленій авте-
нтифікації не обов'язково дізнаватися постійний пароль: можна «довірити» корис-
тувачеві ввести його самостійно, а потім перехопити або виманити одноразовий
код. В цілому, якщо немає спеціальних вимог до системи захисту, а ризики, пов'я-
зані з компрометацією облікового запису, не надто великі, то двофакторна автен-
тифікація цілком надійна (і в будь-якому випадку перевершує більшість однофак-
4
торних варіантів) – особливо в тому випадку, якщо співробітники або клієнти на-
вчені базовим заходам безпеки. У корпоративному середовищі у потенційного
зловмисника менше можливостей для НСД, ніж, наприклад, при дистанційному
банківському обслуговуванні, тому двофакторна автентифікація може успішно
замінити біометрію (тим більше що в межах організації вона підтримується інши-
ми засобами захисту інформації) [1].
1.2.1 Парольна автентифікація
Пароль являється класичним методом перевірки чи являється особа тою за
кого себе видає. Він так міцно асоціюється з автентифікацією, що інколи вважа-
ється її сутністю. Це процедура перевірки автентичності користувача шляхом по-
рівняння введеного пароля з паролем, збереженим у базі даних користувачів.
Проте як фактор автентифікації постійний пароль давно всім набрид. Якщо він
простий, то його легко запам'ятати, але тоді він легко підбирається, у тому числі і
банальним брутфорсом. Якщо він складний, його важко підібрати, але водночас
важко запам'ятати – і тоді надійні безглузді комбінації символів просто запису-
ються на листочках і наклеюються на монітор. Крім цього, середньостатистичний
користувач сучасного інтернету зареєстрований на десятках (якщо не на сотні) рі-
зних ресурсів та сервісів, і кожен із них вимагає від нього пароль. Один пароль на
всі сайти зручний, але небезпечний. Окремий пароль для кожного сайту безпеч-
ний, але незручний, оскільки користувач потребує або чудової пам'яті, або схо-
вища для кодових слів (яке знову ж таки можна зламати). Одним словом, постій-
ний пароль давно вже підходить лише для некритичних активів або облікових за-
писів, обмежених у правах. Спроба вирішити проблему постійних паролів – кон-
цепція паролів тимчасових або одноразових (рис.1.1), які потрібно отримувати за-
ново для кожної спроби входу. Такий підхід ліквідує більшість недоліків постій-
них кодових слів – тимчасовий пароль не потребує ні особливої складності, ні
зберігання, ні запам'ятовування. У той самий час користувачеві зазвичай необхід-
но мати при собі будь-який пристрій, що дозволяє отримувати паролі, а система
автентифікації закономірно ускладнюється зсередини, так як зберігати в базі да-
5
них постійний пароль набагато простіше, ніж при кожному вході генерувати його,
зіставляти з обліковими записами, стежити за терміном дії тощо.
Рис.1.1 ‒ Приклад тимчасового коду підтвердження по SMS
Втім, обробку одноразових паролів можна перекласти на «підрядника»: скажімо,
Google пропонує всім охочим скористатися програмою Authenticator, яка бере ро-
боту з одноразовими паролями на себе. В цьому випадку можна не розробляти
свою систему, а скористатися вже існуючою.
Хоча дізнатися тимчасовий пароль складніше але технічно це цілком мож-
ливо – було б бажання та вигода. Наприклад, передача тимчасового коду по SMS,
яку практикують багато банків, просто перехопити шляхом аналізу радіосигналу
або за допомогою звичайного вірусу. Тому, цей спосіб доставки одноразових па-
ролів обґрунтовано вважається ненадійним, і фінансові організації переходять на
альтернативні варіанти на кшталт використання Push-повідомлень. Національний
інститут стандартів та технологій США в 2016 році закликав відмовитися від
SMS-автентифікації [1].
1.2.2 PKI автентифікація
Метод автентифікація PKI (public key infrastructure) використовує два ключі
на одну операцію: відкритий ключ для шифрування та закритий ключ для розши-
фрування. Усі мають доступ до відкритого ключа клієнта, а закритий ключ є сек-
ретним. Під час автентифікації відбувається генерація та обмін випадковими чис-
6
лами (рис 1.2). Відкритий ключ клієнта використовується сервером для шифру-
вання випадкового числа, а секретний ключ клієнта використовується для розши-
фрування отриманого числа. Недоліком цього протоколу є не регульоване розпо-
ділення відкритих ключів.
Рис.1.2 ‒ Процес автентифікації PKI
В даному методі автентифікації можуть використовуватися довірені центри
розповсюдження ключів (KDC). Кожен користувач має лише один ключ, який ви-
користовується спільно з центром розповсюдження. Щоразу, коли клієнт хоче зв'-
язатися з сервером, він генерує сеансовий ключ, шифрує ключ своїм секретним
ключем і відправляє його до центру поширення. Центр знає секретний ключ і мо-
же розшифрувати сеансовий ключ. Потім шифрує сеансовий ключ секретним
ключем сервера і відправляє йому, сервер знову розшифрувати сеансовий ключ.
Сеансовий ключ потім використовується для безпечного зв'язку між клієнтом і
сервером [5].
1.2.3 Апаратні токени
7
Апаратний токен – це пристрій, призначений спеціально для автентифікації.
У найпростішому випадку наявність токену засвідчує особу, тобто. користувач
повинен мати його при собі та тим чи іншим чином пред'явити системі, підклю-
чити до комп'ютера або піднести до зчитувача. З цією ж метою використовуються
пластикові картки з мікросхемами, вони ж смарт-карти, які за бажання можна ре-
алізувати програмно – створюючи тим самим зручнішу і практичну віртуальну
карту. У той же час токени або смарт-картки можуть бути засобом реалізації двох
попередніх факторів аутентифікації. Так, наприклад, відомі токени, які генерують
одноразові паролі для введення вручну (рис 1.3). І тут сам токен перестав бути
посвідченням, оскільки справжність користувача визначається не ним, а, по паро-
лю. Також токени та смарт-карти використовуються для зберігання даних елект-
ронного цифрового підпису та для його створення. Тоді пристрій міститиме на
собі криптопровайдер ‒ програмне забезпечення, що виконує криптографічні пе-
ретворення. Там часто зберігається і закритий ключ шифрування [6].
Рис.1.3 ‒ Види апаратних токенів
1.2.4 Автентифікація за допомогою біометричних параметрів
Засоби автентифікації, що використовують біометрію, покладаються на па-
раметри тіла людини або особливості її поведінки. Унікальних параметрів віднос-
но багато: можна сканувати відбитки пальців, як це роблять популярні моделі
смартфонів, можна розпізнавати обличчя чи голос, аналізувати ходу чи характерні
риси набору тексту на клавіатурі [4].
8
Динамічні
Відбиток
Стиль
Форма
Сітківка
Рис.1.3 ‒ Біометричні параметри
Все це обіцяє звільнення від традиційних недоліків перерахованих вище ме-
тодів: біометричні параметри не тільки унікальні, а й невіддільні від людини, що
дозволяє з більшою впевненістю говорити про справжність користувача. Крім то-
го, для проходження такої перевірки не потрібні жодні додаткові предмети або
пристрої, які можна втратити або забути вдома.
Тим не менш, поки що технології зчитування цих показників не цілком дос-
коналі, і фахівці ще не можуть рекомендувати повністю на біометрію. Відомі ви-
падки, коли дослідникам вдавалося обдурити зчитувачі за допомогою роздруківок
на 3D-принтерах або навіть фотографій у високій роздільній здатності. Однак це
проблема не самого методу автентифікації як такого, а технічних засобів його ре-
алізації, які мають властивість удосконалюватися. Здається цілком ймовірним, що
рано чи пізно біометрія почне домінувати над іншими варіантами посвідчення
особи.
Крім зчитувачів є ще дві проблеми, які можуть виникнути при біометричній
аутентифікації. З одного боку, є теоретична можливість появи «двійників», тобто.
людей з параметрами, схожими до ступеня змішування – особливо стосується
розпізнавання осіб. З іншого боку, характеристика людини може раптово зміни-
тись (наприклад, внаслідок травми), і тоді користувач втратить доступ до системи.
9
Втім, ті чи інші ризики характерні для будь-якого механізму, і присутність цих
проблем здається скоріше природним побічним ефектом, ніж небезпечною вадою
методу в цілому. На даний момент біометрична автентифікація виглядає найбільш
надійною з точки зору гарантованої справжності користувача – якщо, звичайно,
розробники зчитувачів все ж таки навчать їх відрізняти живу людину від штучної
копії пальця.
Зокрема, однією з ознак зростаючої довіри до біометрії можна назвати той
факт, що деякі банки почали використовувати біометрію для посвідчення особис-
тості навіть не співробітників, а клієнтів. Тому, якщо на будь-який спосіб захисту
можна покластися у фінансовому плані, то ступінь його надійності цілком достат-
ній, а проблеми вирішуються.
1.3 Огляд сфер застосування різних систем
1.3.1 Використання PKI
Найбільш популярне використання PKI полягає у забезпеченні безпечного,
зашифрованого зв'язку між веб-браузерами (клієнтами) та веб-сайтами. Це ро-
биться за допомогою протоколу HTTPS, який реалізується шляхом встановлення
SSL-сертифіката (рис. 1.4) на веб-сервері.
Сертифікат SSL засвідчує оригінальність і не підробність сайту, через який
браузер може перевірити, що спілкується з необхідним сайтом. Отримуючи сер-
тифікат SSL, ви отримуєте відкритий та закритий ключі. Закритий (приватний)
ключ зберігається на веб-сервері та сервер використовує його для підтвердження
своєї легітимності [7].
10
Рис.1.4 ‒ SSL Сертифікат для веб-сайту https://chdtu.edu.ua/
Завдяки використанню PKI, SSL-сертифікат: захищає цілісність повідом-
лення, захищає інформацію від атак «man-in-the-middle» та автентифікує зв'язок
обох сторін (браузер та сервер). Такий тристоронній підхід до безпеки є життєво
важливим, коли ви надсилаєте важливу інформацію, таку як паролі, дані кредит-
ної картки, особисті повідомлення тощо. Тому можна сказати, що PKI є «основою
веб-безпеки» [8].
1.3.2 Застосування апаратних токенів
Найбільш широко токени сьогодні використовуються як інструмент двофа-
кторної автентифікації співробітників в офісі та при наданні їм віддаленого дос-
тупу до інформаційних ресурсів організації.
Існують різні варіанти використання токенів:
− Проходження процедури ідентифікації та автентифікації за допомогою то-
кена.
− Безпечне зберігання ключів на токені.
11
− Зберігання ключових контейнерів програмних засобів криптографічного за-
хисту на токені.
Для першого варіанта застосування адміністратори через панель керування
токенами реєструють пристрій та «прив'язують» його до певного користувача. У
процесі прив'язки на токен записується унікальний пароль користувача (причому,
крім записаного пароля в процесі автентифікації, деякі токени можуть запитувати
PIN-код, який може змінюватися адміністратором). Таким чином, використання
токенів може в одному випадку полегшити процедуру автентифікації (це відбува-
ється, коли організація відмовляється від введення звичних паролів, наприклад,
при вході в операційну систему), в іншому - забезпечити посилену аутентифіка-
цію (тобто, крім доменного пароля, користувачеві доводиться використовувати
власний токен ). Іншими словами, використання токенів дозволяє забезпечити як
мінімум двофакторну автентифікацію працівників. У разі використання PIN-
кодів, токен служить як засіб ідентифікації користувача, а під час введення PIN-
коду відбувається його автентифікація. Причому такий спосіб автентифікації до-
зволяє не тільки авторизуватися в операційній системі, але й отримати доступ до
різних ресурсів (наприклад, ftp-серверів) та додатків.
Для безпечного зберігання ключів на токені можуть використовуватись різ-
ні алгоритми. При цьому інформація, що зберігається, може бути представлена у
вигляді:
− Статичного пароля. Такий токен зберігає в собі незмінний пароль і передає
його на запит.
− Синхронно-динамічного пароля. Відмінність таких токенів у тому, що через
певний час токен виробляє генерацію нового пароля. Для успішного засто-
сування токена він має пройти процедуру синхронізації із сервером.
− Асинхронний пароль. На токені розраховується одноразовий пароль в мо-
мент автентифікації на основі криптографічних функцій.
Крім зазначених способів зберігання інформації, токен може працювати за
принципом «виклик-відповідь». Робота таких токенів побудована із застосуван-
12
ням криптографічних алгоритмів. Зашифроване відкритим ключем повідомлення
передається сервером автентифікації токену, а токен розшифровує повідомлення
та передає його серверу, тим самим підтверджуючи свою справжність.
Досить часто токени використовуються для зберігання сертифікатів елект-
ронного підпису, оскільки їх обсяг пам'яті становить від 32 до 128 Кбайт. Серти-
фікат, отриманий в центрі, що засвідчує, з метою безпеки записується на токен.
Щоб підписати документ, користувачеві потрібно пред'явити свій токен із серти-
фікатом.
1.3.3 Застосування Біометрії
Біометричні методи автентифікації знайшли ефективне застосування у бага-
тьох галузях, включаючи військову галузь, охорону правопорядку, фінанси та
електронну комерцію.
Їх застосовують розробники мобільних пристроїв та комп'ютерів як альтер-
нативу парольного захисту.
Методи біометричної автентифікації активно впроваджують банки, здійс-
нюючи обслуговування клієнтів без пред'явлення паспорта, дозволяючи прив'язу-
вати свої біометричні дані до особистого рахунку та здійснювати покупки без ба-
нківської картки та гаджета – за розпізнаванням особи.
Системи розпізнавання осіб працюють у багатьох містах: у громадських мі-
сцях, аеропортах, вокзалах та дозволяють правоохоронним органам боротися зі
злочинністю.
13
РОЗДІЛ 2.
ОГЛЯД АЛГОРИТМІВ АВТЕНТИФІКАЦІЇ З ВІДКРИТИМ КЛЮЧЕМ. АЛ-
ГОРИТМ ШНОРРА
2.1 Огляд алгоритмів автентифікації з відкритим ключем
В даний час криптосистеми з відкритим ключом вважаються найбільш пер-
спективними. Сутність даних алгоритмів з двома ключами, відкритим та приват-
ним, полягає в підтвердженні останнього через відкритий. Розглянемо деякі з цих
алгоритми, що використовуються для автентифікації:
− Ель-Гамаля;
− RSA;
− ECDSA.
2.1.1 Ель-Гамаля
Схема Ель-Гамаля (Elgamal) ‒ криптосистема з відкритим ключем, В основі
секретності алгоритму лежить висока складність операцій обчислення цілих лога-
рифмів у порівнянні з операцією зведення в ступінь в кінцевих полях. Схема Ель-
Гамаля лежить в основі колишнього стандарту електронного підпису в США
(DSA)
Схема була запропонована Тахером Ель-Гамалем у 1985 році. Вдосконали-
вши систему Діффі-Хеллмана віг отримав два алгоритми, які використовувалися
для шифрування та забезпечення автентифікації. На відміну від RSA схема Ель-
Гамаля не була покрита патентом і тому стала дешевшою альтернативою, адже не
була потрібна оплата внесків за ліцензію. На даний час схема вважається застарі-
лою.
При використанні алгоритму Ель-Гамаля для шифрування інформації за-
шифроване повідомлення матиме вдвічі більший розмір, ніж початкове [10].
14
Генерація ключів:
1. Генерується випадкове просте число p.
2. Вибирається ціле число g - первісний корінь p.
3. Вибирається ціле ціле число x таке, що 1 < < − 1
4. Обчислюється =
5. Відкритим ключем є y, закритим ключем число x.
2.1.2 RSA
RSA ‒ криптосистема з відкритим ключем, В основі якої лежить факториза-
ція великих цілих чисел. На даний час RSA являється найбільш розвиненим мето-
дом криптографічної захисту інформації з відкритим ключем, названий так на по-
чатковій букві родини його винахідників (Рівест, Шамір і Адлеман), розроблений
в 1977 році.
Алгоритм RSA може виконувати такі завдання: забезпечення цілісності та
конфіденційності інформації, забезпечення автентифікації, забезпечення відмови
від авторства або приписування авторства.
В даний час криптографічна система RSA набула широкого поширення. Во-
на була першою системою, придатною і для шифрування, і цифрового підпису.
Зараз вона використовується у великій кількості криптографічних додатків, біль-
шість SSL/TLS сертифікати були (і залишаються) підписані ключами RSA [9].
Генерація ключів:
1. Виберем два дуже великих простих числа p і q.
2. N є результатом умноження p на q ( n = p*q ).
3. Вибераємо велике випадкове число, яке назвем d. Це число повинно бути
взаємно простим з результатом множення (p-1) * (q-1).
4. Визначаємо таке число є, для якого є істинним наступним співвідношен-
ням: (e * d) mod ((p-1) * (q-1)) = 1.
5. Відповідно відкритим ключем будуть числа е і n, а секретним ключем
числа d і n.
15
2.1.3 ECDSA
ECDSA (абревіатура від Elliptic Curve Digital Signature Algorithm) ‒ ал-
горитм з відкритим ключем для шифрування, створення цифрового підпису, чи
автентифікації, аналогічний за своєю будовою DSA, але визначений на відміну від
нього не над полем цілих чисел, а в групі точок еліптичної кривої. Алгоритм
ECDSA ґрунтується на множенні точок еліптичної кривої і працює, Ключі та під-
писи ECDSA коротші, ніж у RSA для того ж рівня безпеки. 256-розрядний підпис
ECDSA має такий же рівень безпеки, як і 3072-розрядний підпис RSA.
Алгоритм ECDSA в 1999 р. був прийнятий як стандарт ANSI, в 2000 р. ‒ як
стандарт IEEE і NIST. Також у 1998 р. алгоритм було прийнято стандартом ISO.
Стійкість алгоритму шифрування полягає в проблемі дискретного логариф-
му групи точок еліптичної кривої. На відміну від проблеми простого дискретного
логарифму та проблеми факторизації цілого числа, не існує алгоритму для
розв’язання проблеми дискретного логарифму в групі точок еліптичної кривої. З
цієї причини «сила на один біт ключа» значно вища в алгоритмі, який використо-
вує еліптичні криві [12].
Незважаючи на перевагу криптостійкості та швидкодії алгоритму ECDSA,
більшість додатків тільки почали підтримувати цей алгоритм, та не поспішають
відмовлятися від RSA. Це пов’язано з тим, що RSA вже добре досліджений та пе-
ревірений.
Генерація ключів:
1. Клієнт вибирає еліптичну криву Ep (a, b) з простим числом p.
2. Клієнт вибирає інше просте число q, щоб використовувати для обчис-
лення.
3. Клієнт вибирає секретний ключ d, ціле число.
4. Клієнт вибирає точку на кривій e1(.,….).
5. Клієнт обчислює e2 (..,....) = d * e1 (......), другу точку на кривій.
Загальний ключ клієнта - (a, b, p, q, e1, e2), його секретний ключ - d.
16
2.2 Схема Шнорра
Схема автентифікації та створення цифрового підпису Шнорра, була запро-
понована Клаусом Шнорром і вперше опублікована в статті 1989 року. Схема яв-
ляється модифікацією схем Ель-Гамаля (1985) та Фіата-Шаміра (1986), але має
менший розмір підпису. Схема є маловідомою через те, що була покрита патен-
том до 2008 року, але останнім часом викликає зацікавленість в розробників сис-
тем захисту, особливо в сфері авторизації транзакцій в криптовалютах.
Стійкість схеми, опирається на складнощі обчислення дискретних логариф-
мів. Для генерації пари ключів спочатку вибираються два простих числа, і ,
щоб число було множником числа − 1. Потім вибирається число g, що не до-
рівнює одиниці, таке, що ≡ 1 ( ). Всі ці цифри можна вільно опублікува-
ти та використовувати у групі користувачів [13].
Для генерації конкретної пари ключів вибирається випадкове число, менше
q. Воно є закритим ключем w. Потім обчислюється відкритий ключ =
− .
Протокол перевірки істинності (рис 2.1):
1. Клієнт вибирає випадкове число , менше і обчислює = ( ).
Ці обчислення є попередніми та можуть бути виконані задовго до появи
сервера. Відповідно це позитивно впливає на швидкодію.
2. Клієнт відправляє серверу число x.
3. Сервер відправляє клієнту випадкове число e із діапазону від 0 до 2. (що
таке t, я поясню пізніше.)
4. Клієнт обчислює число = ( + ) і надсилає його серверу.
5. Сервер перевіряє умову = ( ).
17
Рис. 2.1 ‒ Блок-схема автентифікації за алгоритмом Шнорра
Стійкість алгоритму залежить від параметра . Складність злому алгоритму
дорівнює приблизно 2 Шнор радить використовувати число p завдовжки близько
512 бітів, q ‒ близько 140 бітів і t ‒ 72 біти.
Протокол цифрового підпису:
Алгоритм Шнорра можна використовувати і як протокол цифрового
підпису повідомлення M. У цьому випадку використовується та сама пара ключів,
але додається одностороння хеш-функція H(M).
1. Клієнт вибирає випадкове число , менше і обчислює = . Це
стадія попередніх обчислень.
2. Клієнт об'єднує M і x та хешує результат:
1 = (, )
18
3. Клієнт обчислює число 2 = ( + ) . Підписом є значення 1 та 2,
які вsy посилає серверу.
4. Сервер обчислює число ′ = 12 . Потім він перевіряє, що хеш-
значення для конкатенації і ′ дорівнює S1:
1 = (, ′)
5. Якщо це так то перевірка підпису вірна.
2.3 Порівняння алгоритмів автентифікації
Серед інших алгоритмів, що використовуються для автентифікація схема
Шнорра є відносно маловідомою та не розповсюдженою. Це не тому, що алго-
ритм недостатньо криптостійкий чи застарілий, а через те, що був запатентований
своїм автором до 2008 року. Термін дії патенту завершився і останнім часом збі-
льшився інтерес до схеми Шнорра.
Так наприклад, під час розробки біткоїну Сатоше Накамото необхідно було
вибрати метод реалізації цифрового підпису та авторизації транзакцій. Спочатку
було обрано ECDSA, однак у 2014 р. почав впроваджуватися метод Шнорра.
Алгоритм ECDSA непоганий, він виконує поставлене перед ним завдання,
але є деякі недоліки. Наприклад, не можна за допомогою ECDSA комбінувати
ключі та підписи і не можна одночасно підтвердити кожен підпис, що особливо
корисно у транзакціях з мультипідписом [11].
Підписи Шнорра мають наступні переваги перед підписами ECDSA:
1. Підписи Шнорра мають менший підпис. Більшість підписів ECDSA ма-
ють розмір 71 або 72 байти. Усі підписи Шнорра матимуть розмір 64
байти.
2. Вони дозволяють використовувати компактніший мультипідпис. Поточні
схеми підпису m з n у біткоїні вимагають подання та перевірки m підпи-
сів. Для мультипідпису Шнорра потрібно лише один підпис для обліку
всіх сторін.
19
3. Агрегація підписів на входах. Можливість не лише об'єднати підписи
мультипідписних вхідних даних в один підпис, а й об'єднати підписи з
кількох вхідних даних в один підпис. Це може значно зменшити розмір
та вартість транзакції.
4. Підписи Шнорра доведено непохитні. Підписи ECDSA можна змінити
без доступу до закритого ключа, який їх створив.
Але і він має деякі недоліки, такі як:
1. Створення кількох підписів для кожного блоку;
2. незручність тривалого зберігання блоку, в тому що використовуються кі-
лька комунікаційних каналів для підпису;
3. багаторазове генерування випадкового числа при комбінуванні замість
того, щоб вибрати одну випадкову точку, як у ECDSA;
4. використання пари простих чисел
В таблиці 2.1 представлена зведена характеристика алгоритмів, що можуть
використовуватися для автентифікації.
Таблиця 2.1 ‒ Порівняльна таблиця алгоритмів
Алго- Довжина Призна- Криптостій- Опис
ритм ключа, біт чення кість
(ненадій-
ного; на-
дійного)
RSA 1024; 2048 Шифрування і 2,7•1028 для клю- Заснований на труднощі факто-
підпис ча 1300 біт ризації великих чисел; один із
перших асиметричних алгорит-
мів. Включено до багатьох стан-
дартів.
ElGamal 1024; 2048 Шифрування і При однаковій Заснований на завданні обчис-
підпис довжині ключа лення дискретних логарифмів у
криптостійкість кінцевому полі; дозволяє швидко
дорівняє RSA, т.б. генерувати ключі без зниження
20
2,7•1028 для клю- стійкості.
ча 1300 біт
DSA 1024; 2048 Тільки підпис Заснований на проблемі дискре-
тного логарифмування в кінце-
вому полі; прийнятий як держ.
стандарту США; застосовується
для секретних та несекретних
комунікацій;
Шнорра 140; 256 Шифрування і Криптостійкість Заснований на проблемі обчис-
підпис та швидкість ро- лення дискретних логарифмів.
боти вище, ніж у
RSA
ECDSA 160; 192 Шифрування і Криптостійкість Сучасний напрямок. Розробля-
підпис та швидкість ро- ється багатьма провідними ма-
боти вище, ніж у тематиками
RSA
Згідно наведеної вище таблиці можна зробити висновок, що за однакового
рівня безпеки довжина підписів у схемі Шнорра коротша, ніж у алгоритмі RSA.
Наприклад, при 140-бітовому числі q довжина підписів дорівнює лише 212 бітам,
тобто менше половини довжини підписів RSA.
Також кількість операцій для автентифікації чи генерації підпису в схемі
Шнорра набагато менша ніж за схемою Ель-Гамаля: (рис 2.2)
Рис. 2.2 ‒ Порівняння кількості операцій
21
РОЗДІЛ 3.
РЕАЛІЗАЦІЯ ПІДСИСТЕМИ АВТЕНТИФІКАЦІЇ КОРИСТУВАЧІВ НА
ОСНОВІ ПРОТОКОЛУ ШНОРРА
3.1 Вибір та обґрунтування засобів розробки.
Підсистема автентифікації виконана на основі протоколу Шнорра. Даний
алгоритм менш популярний в порівнянні з іншими, через те що був покритий па-
тентом до 2008 року, проте він досі залишається актуальним і криптостійким. Це
підтверджує той факт, що Шнорра була прийнята в якості південнокорейських
стандартів KCDSA та EC-KCDSA і почала впроваджуватися в сучасні системи за-
хисту. До прикладу, впровадження з 2014 року схеми Шнорра для реалізації циф-
рового підпису та авторизації транзакцій в біткоїні. Де до цього часу в односто-
ронньому порядку використовувався тільки алгоритм ECDSA.
Також основною перевагою схеми Шнорра, перед іншими алгоритмами, та-
кими як RSA та Ель-Гамаля є менший розмір підпису, що позитивно впливає на
швидкодію.
Не розповсюдженість схеми і відносна новизна для вільної реалізації зумов-
лює зацікавленість в реалізації підсистеми на основі протоколу Шнорра.
3.1.1 Мова програмування та середовище розробки
Для виконання програмної реалізації було використано мову програмування
Python. Python – це високорівнева об'єктно-орієнтована та структурна мова про-
грамування загального призначення, яка відноситься до категорії інтерпретованих
мов і не потребує компіляції. Це скриптова мова і відрізняється високим ступенем
універсальності. Завдяки цьому, оптимально підходить для безлічі платформ та
завдань, від серверних ОС до мобільних додатків під iOS/Android.
Мова Python була розроблена голландським інженером Гвідо ван Россумом
у 1991 році. На той час він працював у Національному дослідному інституті ма-
22
тематики та інформатики, де займався створенням іншої мови програмування –
ABC. Пітон був його аматорським проектом, який позиціонувався як зрозуміла і
зручна мова, що легко вивчається з нуля. Россум розробив перший робочий про-
тотип Python на своєму домашньому комп'ютері за кілька вихідних та назвав його
на честь популярного тоді телешоу «Повітряний цирк Монті Пайтона».
Особливості та можливості мови Python:
‒ Він підтримує безліч парадигм програмування, зокрема об'єктно-
орієнтоване, функціональне, імперативне, структурне, процедурне, логічне, конт-
рактне, аспектно-орієнтоване, метапрограмування тощо.
‒ Програмування на Python дозволяє розбивати програми на складові -
модулі, які можна об'єднувати в пакети.
‒ Велика стандартна бібліотека має набір модулів для роботи з ОС, різними
мережевими протоколами, архівами, мультимедійними форматами, текстовими
кодуваннями, регулярними виразами, криптографічними протоколами і т.д. Підт-
римує юніт-тестування.
Програмування на Python має широкий спектр переваг, через які й було об-
рано дану мову для реалізації підсистеми автентифікації. До них відносяться:
1. Швидкість розробки. Для написання програм на Python потрібен значно
менший обсяг коду, ніж у випадку з іншими популярними мовами (Java,
C). Це помітно прискорює розробку, дозволяючи створювати складне ПЗ
швидше, ніж на інших мовах програмування.
2. Логічний синтаксис. Логічний синтаксис цієї мови спрощує читання та
розуміння його коду, завдяки чому його досить легко освоїти. Python по
праву вважається однією з найбільш підходящих мов програмування для
початківців.
3. Різноманітність бібліотек. Крім стандартної бібліотеки, для Python є ве-
ликий вибір додаткових бібліотек. Серед найпопулярніших з них варто
відзначити SQLAlchemy (для роботи з базами даних), Pygame (для роз-
робки мультимедійних додатків та ігор), Flask та Django (для розробки
23
серверної частини ПЗ), NumPy (для розробки у сфері машинного навчан-
ня та штучного інтелекту), Pandas (для обробки big data) тощо.
4. Масштабованість. Написані на Пітоні програми та додатки легко розши-
рюються і масштабуються завдяки можливості адаптації їх високорівне-
вої логіки.
5. Універсальність. Python – це мова, що інтерпретується, яка використову-
ється для кодингу практично на всіх сучасних платформах. Він не потре-
бує компіляції та його код можна писати у звичайному текстовому доку-
менті.
6. В Python добре підходить для програмування сокетів, що використову-
ються в даній підсистемі.
7. Світова спільнота. Одним з важливих факторів бурхливої популяризації
Пітона вважається численна спільнота розробників та ентузіастів цієї мо-
ви. Його розвиток ведеться на базі регулярно оновлюваної та чітко рег-
ламентованої документації PEP (пропозицій щодо розвитку Python)
Після вибору мови програмування, потрібно обрати середовище розробки
для неї, обрано середовище PyCharm. Це ‒ інтегроване середовище розробки мови
програмування Python. Надає засоби для аналізу коду, графічний зневаджувач, ін-
струмент для запуску юніт-тестів та підтримує веб-розробку на Django.
PyCharm є одним із найпопулярніших Python IDE. Існує безліч причин для
цього, у тому числі той факт, що він розроблений JetBrains, розробником популя-
рної IDE IntelliJ IDEA, яка є однією з трьох великих Java IDE і «найрозумнішою»
JavaScript IDE WebStorm.
PyCharm має зручний редактор коду з усіма корисними функціями: підсві-
чуванням синтаксису, автоматичним форматуванням, доповненням та відступами.
PyCharm дозволяє перевіряти версії мови інтерпретатора на сумісність та викори-
стовувати шаблони коду.
Також можна виділити наступні переваги:
− Має версії для всіх ОС (Windows/Linux/MacOS)
24
− Можливість отримати безкоштовну версії з повним функціоналом, для сту-
дента університету або розробника опен-соурс проекту.
3.1.2 Програмний інтерфейсу для забезпечення обміну даними між проце-
сами ‒ Socket
В даній підсистемі потрібно реалізувати обмін даними в мережі для відда-
леної автентифікації між клієнтом та сервером. Для цього використаємо socket.
Socket – це механізм обміну даними між процесами, при цьому ці процеси
можуть перебувати на різних машинах, які з'єднані в одну мережу. Для того, щоб
спілкуватися, нам необхідно знати адресу комп'ютера, на якому запущено процес,
і номер порту, яким відбуватиметься обмін.
Суть роботи: на одному комп'ютері програма відкриває сокет, слухає якийсь
порт (у випадку з TCP і UDP), інша програма на іншому (або тому ж) комп'ютері,
вказавши IP і цей порт, підключається до слухаючої порт програми, і далі вони
обмінюються пітрібними даними, після чого закривається з'єднання.
Використання сокетів це універсальний,та простий у використанні спосіб
обміну в двосторонньому напрямку. Також до переваг socket-ів можна віднести те
що, бібліотеки для них підтримуються будь-якою операційною системою [15].
3.2 Опис програмної реалізації
Підсистема автентифікації користувачів на основі протоколу Шнорра скла-
дається з двох програм, для клієнта та сервера. Взаємодія цих двох застосунків
виконана за архітектурою клієнт-сервер. Це найпопулярніша архітектура, близько
92 % інтернет ресурсів використовують саме такий спосіб взаємодії та обміну да-
ними [16].
Модель клієнт-сервер передбачає такі основні компоненти ( рис. 3.1):
25
• Клієнт. Це робоча станція з однією вихідною точкою – кінцевий користу-
вач. До його обов'язків входить відправка запитів та отримання відповіді. Їх
кількість може бути будь-якою;
• Сервер. В одному контурі передбачена лише одна структурна одиниця. Вза-
ємодіє зі всіма клієнтами, приєднаними до нього. Обробляє поставлені за-
вдання, складає та спрямовує відповіді.
• Мережа. Це шляхи, якими спілкуються клієнт і сервер, у ролі таких шляхів
виступає глобальна мережа ‒ інтернет або приватна локальна мережа.
Рис. 3.1 ‒ Архітектура клієнт-сервер
Підсистема написана на мові Python в середовищі PyCharm з використанням
socket-ів для обміну даними.
Дані які передаються за допомогою socket-ів представлені на рис. 3.2:
26
Рис. 3.2 ‒ Функціональна схема обміну даними через Socket
3.2.1 Програмна реалізація клієнтської частини
Для реалізації клієнтської частини було використано модуль socket та ran-
dom [14] (рис 3.3).
Рис. 3.3 ‒ Використані модулі для клієнтської частини
Модуль socket забезпечує доступ до інтерфейсу BSD-сокету. Він доступний
у всіх сучасних системах Unix, Windows, MacOS.
Він включає функції створення об'єкта сокета Socket (рис 3.4), який і оброб-
ляє канал даних, а також функції, пов'язані з мережними завданнями, такими як
перетворення імені сервера в IP адресу і форматування даних для відправки по
мережі.
Параметр socket.AF_INET відповідає IPV4 (Якщо потрібно використати
IPV6, то можна використовувати socket.AF_INET6. Це відноситься до сімейства
сокетів. AF_INET вказує протокол, який буде використовуватися для зв'язку.
27
IPV4 і IPV6 ‒ це різні типи IP-адрес. Socket.AF_INET відповідає TCP. Протокол
керування передачею (TCP) працює з IP і визначає, як комп'ютер надсилає пакети
даних один одному.
Далі нам потрібний TCP (можна використовувати UDP), для цього нам зна-
добиться socket.SOCK_STREAM, який є типом сокету. TCP ‒ це протокол, вста-
новлення з'єднання, переважно включає виконання тристороннього рукостискан-
ня з сервером і клієнтом.
Для підключення до серверу виконуємо команду нижче (рис 3.4). В параме-
трах вказуємо IP-адресу серверу, та порт для підключення. В ОС зазвичай багато
портів, деякі з них використовуються. Як правило використовують будь-яке чоти-
рьох значне число, оскільки менші числа в основному зайняті.
Рис. 3.4 ‒ Підключення до серверу
Наступним кроком є генерація ключів, де нам і знадобиться бібліотека ran-
dom (рис 3.3). Спочатку генеруються початкові параметрі p, q, g. Які будуть вико-
ристанні для генерації приватного ключа y.
Обчислення простого числа p (рис. 3.5):
Рис. 3.5 ‒ Обчислення p
Генеруємо число в діапазоні 16 біт, (рекомендований розмір 1024 біт) пере-
віряємо на простоту, виконуємо цю процедуру поки вона не задовольнить умову.
28
Відправляємо отримане число за допомогою команди send. Для отримання на
приймальній стороні (сервер) використовується команда recv (рис 3.11).
Обчислення q (рис. 3.6):
Рис. 3.6 ‒ Обчислення q
Число q також просте, і має бути дільником p-1. Розмір числа q рекомендо-
вано вибирати рівним 160 бітів.
Обчислення g (рис. 3.7)
Рис. 3.7 ‒ Обчислення g
Число g має бути більше 1 та відповідати наступній умові: ≡ 1 ( )
29
Після обчислення початкових значень, на їх основі обчислються секретний
та відкритий ключі (рис. 3.8):
Рис. 3.8 ‒ Обчислення відкритого та секретних ключів
Далі відбуваються деякі обчислення та обмін даними між сервером та клієн-
том згідно протоколу (рис. 3.9):
Рис. 3.9 ‒ Перевірка істинності
Перевірка чи дійсно клієнт той за кого себе видає відбувається в серверній
частині програми.
3.2.2 Програмна реалізація серверної частини
Основною відмінністю серверної частини є використання різних сокетів.
30
Рис. 3.10 ‒ Сокети для підключення клієнта
Команда bind зв'язує хост і порт з сокетом. Як ім'я хоста можна використо-
вувати «localhost» або «127.0.01» «0.0.0.0», будь-який з них. Він отримує IP-
адресу сервера.
sock.accept() прийме запит від клієнта і поверне два об'єкти, один – об'єкт
сокета-клієнта, а інший IP-адреса клієнта.
На Рисунку 3.11 зображено код з отриманням обрахованих ключів від кліє-
нта
Рис. 3.11 ‒ Отримання ключів для сервера
Перевірка істинності зі сторони сервера: (рис 3.12)
31
Рис. 3.12 ‒ Перевірка істинності
Важливою деталью є вибір числа e, адже від цього залежить безпека алго-
ритму. Дане число повинно вибиратися в діапазоні від 0 до 2. Параметр t краще
використовувати розміром близько 72 біт.
Далі сервер виконує перевірку чи дійсно клієнт той за кого себе видає, шля-
хом порівняння чисел x та z (рис 3.13):
Рис. 3.13 ‒ Автентифікація клієнта
На рисунку 3.14 та 3.15 представлені результати роботи підсистеми їх взає-
модія, для клієнтської та серверної частини відповідно.
32
Рис. 3.14 ‒ Результати роботи клієнтської частини
Рис. 3.15 ‒ Результати роботи клієнтської частини
Після підключення сервер показує IP-адресу та порт з якого виконав підк-
лючення сервер. Підсистема успішно працює та виконала автентифікацію клієнта.
Автентифікація проходить за три кроки обміну даними і вважається такою, що
володіє властивістю нульового розголошення.
33
ВИСНОВОК
Темою дипломного проекту є підсистема автентифікації користувачів на
основі протоколу Шнорра. Виконана робота являє собою дві програми, для серве-
ра та клієнта, що виконують автентифікацію за схемою Шнорра та пояснювальну
записку до неї.
В процесі виконання дипломного проекту було виконано поставлені за-
вдання, а саме:
- проведено аналіз відомої інформації та технічних рішень, що стосуються
алгоритмів автентифікації та схеми Шнорра;
- порівняння відомих алгоритмім автентифікації зі схемою Шнорра;
- визначено механізм обміну інформацією в мережі та мову програмуван-
ня для реалізації.
Дана підсистема створена мовою Python в середовищі PyCharm. Архітекту-
ра клієнт-сервер реалізована за допомогою
Запропонована підсистема може бути використана в інших різноманітних
системах для автентифікації та розмежування доступу, або ж просто для ознайом-
лення, щоб зрозуміти принцип роботи схеми автенифікації Шнорра.
34
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Інформаційна безпека / Ю. Я. Бобала та І. В. Горбатого, 2019 ‒ 580 с. ‒
ISBN 978-966-941-339-0
2. Вивчаємо програмування на Python. / Пол Беррі. 2017 – 599 с.
3. Ідентифікація та аутентифікація Google [Електронний ресурс] // Google
Sites ‒ Режим доступу до сайту:
https://sites.google.com/site/identifikaciataautentifikacia/
4. Біометрична автентифікація [Електронний ресурс] // uk.education-wiki.com
‒ Режим доступу до сайту: https://uk.education-wiki.com/2927015-biometric-
authentication
5. Системи та засоби автентифікації ‒ Режим доступу до сайту:
http://sistemizasobyauthetificationbyogirko.blogspot.com/2018/02/
6. Обзор аутентификации на основе токенов [Електронний ресурс] // Habr ‒
Режим доступу до сайту: https://habr.com/ru/post/593191/
7. SSL сертифікат: що таке SSL сертифікат і як він працює // horoshop.ua ‒ Ре-
жим доступу до сайту: https://horoshop.ua/ua/blog/ssl-sertifikat/
8. Прошлое и настоящее SSL-сертификатов [Електронний ресурс] // Habr ‒
Режим доступу до сайту: https://habr.com/ru/company/regru/blog/264551/
9. RSA [Електронний ресурс] // Вікіпедія ‒ Режим доступу до сайту:
https://ru.wikipedia.org/wiki/RSA
10. Схема Ель-Гамаля [Електронний ресурс] // Вікіпедія ‒ Режим доступу до
сайту:
https://ru.wikipedia.org/wiki/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_
%D0%AD%D0%BB%D1%8C-
%D0%93%D0%B0%D0%BC%D0%B0%D0%BB%D1%8F
11. Схема Шнорра и её роль в Биткоине [Електронний ресурс] // Habr ‒ Режим
доступу до сайту: https://habr.com/ru/post/534306/
35
12. ECDSA: Elliptic Curve Digital Signature Algorithm [Електронний ресурс] //
ru.bitcoinwiki.org ‒ Режим доступу до сайту:
https://ru.bitcoinwiki.org/wiki/ECDSA
13. Схема Шнорра [Електронний ресурс] // Вікіпедія ‒ Режим доступу до сайту:
https://ru.wikipedia.org/wiki/%D0%A1%D1%85%D0%B5%D0%BC%D0%B0_
%D0%A8%D0%BD%D0%BE%D1%80%D1%80%D0%B0
14. Python 3: Генерация случайных чисел (модуль random) ‒ Режим доступу до
сайту: https://ps.readthedocs.io/ru/latest/random.html
15. Сокеты в Python 3: TCP, клиент, сервер Режим доступу до ресурсу:
https://andreymal.org/socket3/
16. Клієнт-серверна архітектура [Електронний ресурс] // Вікіпедія ‒ Режим дос-
тупу до сайту:
https://uk.wikipedia.org/wiki/%D0%9A%D0%BB%D1%96%D1%94%D0%BD
%D1%82-
%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%BD%D0%B0_
%D0%B0%D1%80%D1%85%D1%96%D1%82%D0%B5%D0%BA%D1%82%
D1%83%D1%80%D0%B0
36