Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/7779| Title: | Дослідження схеми автентифікації з використанням криптографічної функції BLAKE-256 |
| Authors: | Байрак, Анатолій Володимирович Медушівський, Олег Костянтинович |
| Keywords: | криптографічні хеш-функції;blake-256;схема автентифікації;криптографічна стійкість;алгоритми хешування;інформаційна безпека |
| Issue Date: | 2022 |
| Abstract: | Розроблення програмної реалізації та дослідження схеми автентифікації з використанням криптографічної функції BLAKE-256 |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/7779 |
| Appears in Collections: | 125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| М_125_Медушівський_Байрак.pdf Restricted Access | 1.38 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 року
Пояснювальна записка
до дипломного проекту (роботи)
магістра
(освітньо-кваліфікаційний рівень)
на тему «Дослідження схеми автентифікації з використанням
криптографічної функції BLAKE-256»
Виконав: студент 2 курсу, групи БІ-011
Спеціальності 125 – «Кібербезпека» ,
(шифр і назва спеціальності)
освітньої програми «Безпека інформаційних і
комунікаційних систем»
(назва освітньої програми)
Медушівський О.К.
(прізвище та ініціали)
Керівник Байрак А.В.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси – 2022 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій, автотранспорту та машинобудування
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень магістр
Спеціальність 125 – Кібербезпека
Освітня програма – Безпека інформаційних і комунікаційних систем
ЗАТВЕРДЖУЮ
Завідувач кафедри В.В. Палагін
“_____” ___________________ 2022 року
ЗАВДАННЯ
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ
Медушівського Олега Костянтиновича ______________
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Дослідження схеми автентифікації з використанням
криптографічної функції BLAKE-256
керівник проекту (роботи) Байрак Анатолій Володимирович
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від «___» __________2022 року № ____
2. Термін здачі студентом закінченої роботи “ 10 ” грудня 2022 року _________
3. Вихідні дані до роботи: Наукові публікації, навчальні та методичні матеріали з
криптографії та інформаційної безпеки; опис та специфікації криптографічних хеш-
функцій сімейства BLAKE, зокрема алгоритму BLAKE-256; теоретичні та практичні
відомості про схеми автентифікації з використанням односторонніх хеш-функцій;
методи та критерії оцінювання криптографічної стійкості та продуктивності
алгоритмів хешування; програмні засоби та середовище розробки для реалізації та
дослідження схеми автентифікації.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Аналіз теоретичних аспектів використання криптографічних хеш-функцій у схемах
автентифікації та їх основних властивостей; дослідження сімейства криптографічних
функцій BLAKE та характеристик хеш-функції BLAKE-256; аналіз будови, принципу
роботи, параметрів безпеки та продуктивності алгоритму BLAKE-256; розроблення
програмної реалізації та дослідження схеми автентифікації з використанням
криптографічної функції BLAKE-256.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів)
1. Структурна схема алгоритму криптографічної хеш-функції BLAKE-256; 2. Схема
побудови та функціонування схеми автентифікації з використанням хеш-функції;
3. Діаграми результатів дослідження продуктивності та параметрів безпеки алгоритму
BLAKE-256.
.6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Підпис, дата
Прізвище, ініціали та посада
Розділ завдання завдання
консультанта
видав прийняв
7. Дата видачі завдання
КАЛЕНДАРНИЙ ПЛАН
Термін
№ Назва етапів дипломного проекту
виконання етапів Примітка
з/п (роботи)
проекту (роботи)
1. Аналіз технічного завдання та пошук
18.09.22 – 09.10.22
літератури
2. Аналіз теоретичних аспектів використання
криптографічних хеш-функцій у схемах 10.10.22 – 24.10.22
автентифікації та їх основних властивостей
3. Дослідження сімейства криптографічних
функцій BLAKE та характеристик хеш- 25.10.22 – 10.11.22
функції BLAKE-256
4. Аналіз будови, принципу роботи, параметрів
безпеки та продуктивності алгоритму 11.11.22 – 25.11.22
BLAKE-256
5. Розроблення програмної реалізації та
дослідження схеми автентифікації з
11.11.22 – 25.11.22
використанням криптографічної функції
BLAKE-256
8. Оформлення пояснювальної записки 27.11.22 – 01.12.22
9. Оформлення презентації 02.12.22 – 09.12.22
Студент Медушівський О.К.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Байрак А.В.
( підпис ) (прізвище та ініціали)
ВСТУП
Для сучасних компаній шифрування використовується з метою
забезпечення безпеки зберігання даних, захисту інформації при передачі через
канали зв’язку й по локальній мережі з використанням механізмів
автентифікації та цифрових підписів. Всі представлені завдання вирішуються
різними засобами із застосуванням різних, в тому числі і криптографічних
технологій.
Застосування криптографічних хеш-функцій сьогодні виходить за рамки
класичного одностороннього незворотного перетворення. Якщо початкового
основним призначенням таких функцій було хешування авторизаційних
даних, то на сьогодні базовим та прикладним їх застосуванням є різноманітні
системи криптовалют та блок-чейн.
Актуальність. Розробка та дослідження схем автентифікації даних на
базі криптографічних хеш-функцій дозволяє покращити часовий показник
формування хешу для систем автентифікації.
Предмет дослідження – алгоритм автентифікації, що базується на
односторонній хеш-функції Blake-256.
Об‘єкт дослідження – алгоритми та схеми автентифікації в системах
кібербезпеки.
Новизна роботи полягає в дослідженні можливості та базових
характеристик використання відомих односторонніх хеш-фугнкцій в схемах
автентифікації.
Метою роботи є дослідження методів, схем та алгоритмів електронних
цифрових підписів для автентифікації користувачів на базі криптографічної
хеш-функції сімейства BLAKE-256.
Для досягнення мети необхідно вирішити такі задачі:
− проаналізувати структуру та мережеві комунікаційні механізми на
підприємстві;
− вивчити основні принципи роботи механізмів автентифікації та їх
криптографічне забезпечення (хеш-функцій для створення електронних
цифрових підписів та автентифікації даних);
− дослідити роботи механізму автентифікації з використанням
створення цифрового підпису на основі бази даних хеш-функцій;
− реалізувати алгоритм хешування в складі механізму
автентифікації з використанням криптографічної хеш-функції сімейства
BLAKE-256.
Структура та обсяг роботи. Робота складається із вступу, 3 розділів та
загальних висновків, переліку використаних джерел, що містить 29
найменувань на 4 сторінках.
Загальний обсяг роботи – 48 сторінок, з них 44 сторінок основного
тексту.
РОЗДІЛ 1
ТЕОРЕТИЧНІ АСПЕКТ ВИКОРИСТАННЯ
КРИПТОГРАФІЧНИХ ФУНКЦІЙ В СХЕМАХ АВТЕНТИФІКАЦІЇ
1.1 Автентифікація та алгоритми автентифікації з використанням
односторонніх хеш-функцій
Автентифікація користувача - це перевірка, чи дійсно користувач, який
перевіряється, є тим, за кого він себе видає [1]. Для коректної автентифікації
користувача необхідно, щоб користувач пред'явив автентифікаційну
інформацію - якусь унікальну інформацію, якою повинен володіти тільки він і
ніхто інший. Для забезпечення автентифікації використовуються алгоритми
шифрування, цифровий підпис, коди автентичності повідомлення (МАС) і
функції хешування.
Практично всі сучасні протоколи автентифікаціх передбачають, що при
автентифікації дані особи, яка намагається авторизуватися піддаються
шифруванню [2-4]. Особливість шифрування в автентифікаційних схемах за
допомогою односторонньої хеш-функції полягає в тому, що воно по суті є
одностороннім. В результаті реалізації такого процесу не відбувається
зворотнє перетворення через розшифровування на приймальній стор.оні.
Обидві сторони (відправник та одержувач) використовують одну й ту саму
процедуру одностороннього шифрування.
Одностороння хеш-функція hк() з параметром-ключем К, яка
застосовується до шифрованих даних повідомлення М, дає в результате хэш-
значение m (так званий дайджест), який складається з фіксованого невеликого
числа байт (рис.1.1).
Рис.1.1 – схема автентифікації з використання односторонньої хеш-
функції
Дайджест m = hк(М) передається одержувачу разом з початковим
повідомленням М. Отрмувач повідомлення, знаючи, яка одностороння хеш-
функція була застосована для отримання дайджеста, обчислює її ще раз,
використовуюче розшифроване повідомлення М. Якщо значення отриманого
дайджеста m і обчисленого дайджеста m’ співпадають, то це означає, що вміст
повідомлення М не був підданий жодним змінам.
Знання дайджесту не дозволяє відновити вихідне повідомлення (пароль),
але дозволяє перевірити цілісність даних. Дайджест можна розглядати як
свого роду контрольну суму для вихідного повідомлення (хешу). Однак, між
дайджестом та звичайною контрольною сумою є і суттєва відмінність.
Контрольну суму використовують в якості засобу перевірки цілісності
переданих повідомлень по ненадійним лініям зв'язку. Цей засіб перевірки не
розрахований на те, щоб створити надійний барьер для забезпеченн
конфіденційності даних. Адже зловмиснику в такій ситуації ніхто не
заважатиме підмінити повідомлення, додавши до нього нове значення
контрольної суми. Одержувач в такому разі не помітить жодної заміни.
1.2 Види та характеристики хеш-функції для алгоритмів
автентифікацї
В алгоритмах автентифікації використання хеш-функцій є на сьогодні
де-факто стандартом. Дійсно, зберігати конфіденційні дані автентифікації
(пароль, додатковий фактор тощо) в незмінному вигляді на серверній стороні
системи дійсно небезпечно.
В якості хеш-функцій для різноманітних схем автентифікації
використовуються наступні [5-7]:
- md5. Хеш містить 128 біт (16 байт) і зазвичай представляється як
послідовність з 32 шістнадцяткових цифр.
- sha-1. Для вхідного повідомлення довільної довжини
(максимальна довжина повідомлення приблизно дорівнює 2 ексабайтам).
Алгоритм генерує 160-бітне (20 байт) хеш-значення, яке називається
дайджестом повідомлення, яке зазвичай відображається як шістнадцяте число
довжиною в 40 цифр.
- sha-256 включає до свого складу семейство алгоритмів хеш-
функцій SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 і SHA-512/224.
Розмір хеша 224, 256, 384 або 512 біт, число раундів 64 або 80.
- SHA-3 (Keccak). Розмір хеша 224, 256, 384, 512 (змінний, 0<d≤264-
1), кількість раундів 24 (за замовченням).
- BLAKE-256 працює з 32-бітними словами і повертає 32-байтний
хеш, кількість раундів складає 16.
- BLAKE2. На відміну від алгоритму BLAKE, в даному алгоритму
відсутні константи для додавання в раундову функцію. Також змінені
константи здвигу, спрощене додавання, доданий блок параметрів, який
складений з ініціалізуючими векторами. Крім того, зменшена кількість
раундів з 16 до 12 - у функціях BLAKE2b (аналог BLAKE-512) і з 14 до 10 - у
функції BLAKE2s (аналог BLAKE-256). В результаті число тактів на біт
скоротилося з 7,49 для BLAKE-256 і 5,64 для BLAKE-512, і до 5,34 і 3,32 для
Blake2s і Blake2b відповідно.
При виборі криптографічної хеш-функції для систем автентифікації
необхідно враховувати вимоги щощо властивостей хеш-функцій.
Взагалі, жодна, навіть найідеальніша криптографічна хеш-функція все
одно може теоретично генерувати колізії різного роду.
Для того, щоб хеш-функція H вважалася криптографічно стійкою, вона
повинна задовольняти три основні вимоги, на яких заснована більшість
застосувань хеш-функцій у криптографії:
− бути незворотною, що означає, що для заданого значення хеш-
функції m повинно бути практично неможливо знайти блок даних X, для якого
б виконувалася рівність H(X)=m.
− бути стійкою до колізій першого роду. Це проявляється в тому,
що для заданого повідомлення M має бути практично неможливим підібрати
інше повідомлення N, для якого був би справедливим вираз H(M)=H(N).
− бути стійкікою до колізій другого роду. Для хеш-функції повинно
бути практично неможливим підібрати пару повідомлень (М, М’) , таких, які б
на виході видають однакове хеш-значення.
Властивості, які повинні бути притаманні хеш-функціям для того, аби
вони могли б бути застосовані в практичних криптографічних системах
наступні:
1. Стійкість пошуку першого прообразу – відсутність ефективного
поліноміального алгоритму обчислення зворотної функції, тобто, не можна
відновити текст m за відомою його згорткою H(m) за реальний час
(необоротність). Ця властивість еквівалентна тому, що хеш-функція є
односторонньою функцією.
2. Стійкість до пошуку другого праобразу (колізій першого роду) –
обчислювально неможлива, з огляду на те, що знаючи повідомлення m та його
згортку H (m), знайти таке ж інше повідомлення m ′ ≠ m, щоб виконувалася
умова виду: H(m)=H(m)′ теж не є реальним фактом.
3. Стійкість до колізій (колізій другого роду).
Криптостійкість односторонньої хеш-функції визначається ймовірністю
отримання необхідного значення функції внаслідок перебору. Швидкість
перебору хешей (одиниця вимірювання — мегахешів за секунду), отриманих
з використанням GPU – блоків відеокартки AMD Radeon 7990:
− MD5: 16000 M/s
− SHA-1: 5900 M/s
− SHA256: 2050 M/s
− SHA512: 220 M/s.
1.3 Сімейство криптографічних функцій типу BLAKE
BLAKE – це сімейство з чотирьох хеш-функцій: BLAKE-224, BLAKE-
256, BLAKE-384 та BLAKE-512 (табл. 3.1). Відомо, що SHA-2, BLAKE має 32-
бітну версію (BLAKE-256) та 64-бітну (BLAKE-512), з якої виводяться інші
екземпляри, використовуючи різні початкові значення [9].
Таблиця 1.1 – Властивості хеш-функцій BLAKE
Довжина Довжина Довжина Розмір
Алгоритм
слова, повідомлення, блоку, Дайджест солі, у
хешування
у бітах у бітах у бітах бітах
BLAKE-
32 <264 512 224 128
224
BLAKE-
32 <264 512 256 128
256
BLAKE-
64 <2128 1024 384 256
384
BLAKE-
64 <2128 1024 512 256
512
Перш за все, Blake256 і Blake256R14 – це одне і те ж. Спочатку, коли був
представлений Blake256, він використовував 10 раундів хешування, які
розробники вважали менш безпечними. BLAKE 256 заснований на конструкції
HAIFA, яка не страждає від вразливостей Merkle-Damgård, на відміну від
функції SHA256 (атаки з подовженням довжини). Крім того, 14 раундів не
тільки безпечні, але й значно швидші, ніж 64 раундів SHA 256. Ця хеш-
функція має дуже високу продуктивність на архітектурі мікросхем x86-64.
Як видно з огляду та аналізу схем та криптографічних функцій для
механізму авторизації хеш-функції BLAKE має переваги для застосування, так
само, як і в асиметричних механізмах авторизації, схемах електронного
цифрового підпису.
РОЗДІЛ 2
СКЛАД, БУДОВА ТА ПРИНЦИП РОБОТИ КРИПТОГРАФІЧНОЇ
ХЕШ-ФУНКЦІЇ BLAKE ТА ЇЇ ВИКОРИСТАННЯ В ПРАКТИЧНИХ
КРИПТОСИСТЕМАХ
2.1 Криптографічна функція Blake
Blake це криптографічний алгоритм хешування, який є покращеною
версією алгоритму SHA256. Даний алгоритм є одним з фіналістів конкурсу,
який проводився у NIST (Національний інститут стандартів та технологій). Він
розроблений і представлений Жан-Філіппом Аумассоном і заснований на
потоковому шифрі Дана Бернштейна, який зветься ChaCha [8,9].
Алгоритм Blake є повністю оригінальним. На даний час в даний час існує
кілька версій цього алгоритму. Наприклад, такі як: Blake 2b, Blake 2s,
Blake256r14, Blake256r8 і т.д. Всі вони є частиною сімейства алгоритмів Blake,
тому існує безліч криптовалют, що базуються на цьому алгоритмі.
Тому далі, розглянемо особливості реалізацій версій алгоритму Blake.
Насамперед, алгоритм Blake256 і Blake256R14 – це одне й те саме.
Початково, коли був представлений Blake256, він використав 10 раундів
хешування, адже розробники вважали, що 10 раундів цілком достатньо для
забезпечення криптостійкості перетворення.
Для того, аби покращити безпеку, розробники збільшили кількість
раундів з 10 до 14. Така версія алгоритму отримала назву Blake256R14 або
Blake 14r. Також інсує версія алгоритму Blake256R8, яка використовує 8
раундів хешування, та версія Blake 512, яка використовує 16 раундів
хешування.
Алгоритм Blake 256 заснований на конструкції HAIFA, яка не страждає
від уразливостей по типу Merkle-Damgård. Такі вразливості характерині длчя
алгоитму функції SHA256 (атаки з подовженням довжини). Крім того, 14
раундів в Blake 256 не тільки підвищують безпеку хешування, але й набагато
більш продуктивні, ніж 64 раунди хешування у функції SHA 256.
Перспективність застосування в мхемах авторизації хеш-функцій типу Blake
очевидна. Вона має дуже високу продуктивність та може бути легко
реалізована на архітектурі мікросхем x86-64 [9,10].
Алгоритм Blake-256 є попередником Blake 2s, і різниця між варіантом
Blake 256 та іншими версіями алгоритму Blake 2 полягає в тому, що він
використовує 32-бітові слова та створює дайджесту розміром 256 біт.
2.2 Будова, принцип роботи та властивості хеш-функції Blake-256
З відкритих джеред відомо, що BLAKE-256 — це алгоритм хешування,
який використовується в криптоваліті Decred [9]. Дана функція
характеризується своєю надзвичайною гнучкістю в сенсі того, що може гарно
бути пристосована для реалізації на існуючому апаратному забезпеченні ряда
арахітектур. Вона також є дуже швидка при її приограмній реалізації. Обидва
ці фактори є вкрай бажаними властивостями для алгоритму хешування.
BLAKE — це універсальна та орієнтована на користувача конструкція, яка
добре працює на практично всіх платформах, від вбудованих систем до
апаратного забезпечення з обмеженими ресурсами та потребує низьких
ресурсів для своєї реалізації [10-12].
Під час конкурсу SHA-3 Національного інституту стандартів і
технологій (NIST) алгоритм BLAKE був ретельно проаналізований та
атакуваний для виявлення можливих вразливостей відомими
криптоаналітиками. Було визнано, що в в якості існуючих альтернатив до
алгоритмів функцій SHA-1 і SHA-2, алгоритм Blake має кращу ефективність
та стійкістю до майбутніх атак.
Базові характеристики алгоритму BLAKE-256, які стосуються безпеки
та продуктивності його при апаратній та програмній реалізації наведені в
таблиці 2.1.
Таблиця 2.1. Базові характеристики хеш-функції BLAKE-256
Назва Розмір Довжина Розмір Довжина Довжина Кількість
алгоритму слова повідомлення блоку дайджесту солі раундів
BLAKE-256 32-bit 64-bit 512-bit 256-bit 128-bit 14
2.2.1 Компоненти алгоритму Blake
Алгоритм BLAKE побудований на попередньо проаналізованих і
надійних компонентах, таких, як [13-15]:
- ітеративна хеш-структура типу HAIFA Біхама і Данкельмана,
- хеш-функція за типом LAKE
- основна функція, подубована на базі влгоритму потокового
шифрування ChaCha Бернштейна. Використання добре зрозумілих
обчислювальних блоків робить BLAKE хеш-функцією, яку легко аналізувати
та реалізувати як для криптоаналітиків, так і для розробників. Це, також, дає
змогу використати її у схемах автентифікації.
Режим ітерації HAIFA алгоритму Blake-256
Формування значення хешу на виході функції зазвичай здійснюється
шляхом поділу вхідних даних, які називаються «повідомленням», на невеликі
блоки фіксованої довжини. Сформовані блоки обробляються ітеративно за
допомогою функції криптографічного стиснення. Поєднання перетворень у
функції стиснення для обробки вхідних даних є ітераційним режимом (також
відомим, як розширювачем домену). Ітерації виконуються у вигляді конструкції
Меркла–Дамгорда (рис.2.1). Конструкція Меркла–Дамгорда (M-D) являє собою
класичний режим ітерації, який використовується хеш-функціями MD5, SHA1,
RIPEMD-160 і SHA2. M-D розбиває вхідне повідомлення змінної довжини на
блоки повідомлень однакового розміру x (тобто 512 біт) із n блоків, останній
блок доповнюється за потреби та додається довжина повідомлення.
Рис.2.1 принципова схема конструкції Меркла–Дамгорда
Як показано на рис.2.1, вихід функції стиснення f, відомий як значення
ланцюжка CV, а початкові вхідні дані — це вектор ініціалізації IV, показаний
як CV0, причому h(x) є виходом після обробки всіх блоків повідомлень.
Конструкція M-D зберігає стійкість до зіткнень функції стиснення, однак йому
не вистачає стійкості попереднього відображення та другого попереднього
відображення. В результаті такі загальні атаки, як мультиколізії, довге
повідомлення-друге прообраз, стадування та розширення довжини, можливі
на хеш-функціях на основі конструкції M-D [16-20].
Алгоритм функції BLAKE використовує режим ітерації HAIFA, який
зберігає цінні властивості M-D конструкції та підвищує безпеку та
масштабованість перетворення. HAIFA — це, по суті, конструкція M-D, але з
обов’язковим лічильником (кількість бітів, хешованих на поточний момент) і
необов’язковою сіллю (випадкові дані, які використовуються як додаткові
вхідні дані).
Принципова схема конструкції HAIFA показана на рис.2.2.
Рис.2.2 - Принципова схема конструкції HAIFA
Режим ітерації HAIFA вирішує багато внутрішніх проблем внутрішніх
колізій з конструкцією M-D і забезпечує стійкість до атак грубої сили, друге
попереднє відображення довгого повідомлення та продовження довжини,
оскільки додаткова сіль та лічильник імітують різні функції стиснення для
кожного обробленого блоку даних [21, 22].
Конструкція HAIFA не містить префіксів і суфіксів і, як наслідок, є
стійкою до колізій. Також її не можна відрізнити від випадкового оракула,
припускаючи, що базова функція стиснення є ідеальною [21, 23, 24].
Базова функція ChaCha
Алгоритм BLAKE використовує локальну широкобітову шинну
структуру типу LAKE для того, аби гарантувати безпеки від атак на основі
колізій [11, 22] і базову функція G, яка є модифікацією потокового шифроу
ChaCha. Це в значній мірі гарантнує простоту та безпеку даного алгоритму [11].
Хеш-функції BLAKE дотримуються режиму ітерації HAIFA: функція
стиснення залежить від солі та кількості хешованих бітів до цього часу
(лічильника) для стиснення кожного блоку повідомлень з різною функцією.
Структура функції стиснення BLAKE успадкована від LAKE (рис. 2.2):
великий вихідний стан ініціалізується з початкового значення, солі та
лічильника. Потім він оновлюється за допомогою залежних від повідомлення
раундів, і остаточно стискається, щоб повернути наступне значення ланцюга.
Ця відтворюється ітераційним режимом.
Рис. 2.2 – Локальна конструкція компресії функцією BLAKE [25]
Внутрішній стан функції стиснення представлений у вигляді матриці
слів розміром 4×4 . Раунд BLAKE-256 – це модифікований «подвійний раунд»
шифру потоку ChaCha: спочатку всі чотири стовпці оновлюються незалежно,
а згодом чотири виконується оновлення за діагоналями. Кожен раунд
параметризований різними константами, щоб мінімізувати подібність. Після
раундів проводиться зменшення послідовності бітів до половини його
довжини з подачею початкового значення та сіллю.
Функція стиснення приймає як вхідні дані чотири значення: значення
ланцюжка, блок повідомлення, додаткову сіль і обов’язковий лічильник. У
випадку функції BLAKE-256 ці параметри наведені в таблиці 2.2.
Таблиця 2.2 – параметри для функції стискання алгоритму Blake
Довжина Блок повідомлення Криптографічна сіль Розмір лічильника
ланцюжка
256-bit 512-bit 128-bit 64-bit
Структура стискання в алгоритмі Blake працює в три етапи:
1. Ініціалізація великого внутрішнього стану, представленого 16
словами в матриці слів 4x4.
2. Реалізуються 14 раундів функції G, кожен з яких складається з
восьми залежних від раунду перетворень.
3. Завершення після серії раундів нової послідовності значень,
взятих з матриці з використанням послідовності початкових значень і солі.
Криптофункція BLAKE-256 оперує з 32-бітними словами і повертає 32-
байтний хеш. В якості констант вона використовує такі значення:
- початкові константи, INITIAL VALUES (IV):
IV0 = 6A09E667; IV1 = BB67AE85;
IV2 = 3C6EF372; IV3 = A54FF53A;
IV4 = 510E527F; IV5 = 9B05688C;
IV6 =1F83D9AB; IV7 = 5BE0CD19,
- 16 констант (перші цифри числа ):
c0 = 243F6A88; c1 = 85A308D3;
c2 =13198A2E; c3 = 03707344;
c4 = A4093822; c5 = 299F31D0;
c6 = 082EFA98; c7 = EC4E6C89;
c8 = 452821E6; c9 = 38D01377;
c10 = BE5466CF; c11 = 34E90C6C;
c12 =C0AC29B7; c13 =C97C50DD;
c14 = 3F84D5B5; c15 = B5470917,
- перестановки {0,…,15} (використовуються у всіх функціях BLAKE):
0 = 01 2 3 4 5 6 7 8 91 01 11 21 31 41 5;
1 =141 0 4 8 91 51 3 61 1 2 0 21 1 7 5 3;
2 =11 81 2 0 5 21 51 31 01 4 3 6 71 9 4;
3 = 7 9 31 1 31 21 11 4 2 6 51 0 4 01 5 8;
4 = 9 0 5 7 2 41 01 51 41 1 11 2 6 8 31 3;
5 = 21 2 61 0 01 1 8 3 41 3 7 51 51 41 9;
6 =12 51 1 51 41 3 41 0 0 7 6 3 9 2 81 1;
7 =131 1 71 41 21 3 9 5 01 5 4 8 6 21 0;
8 = 61 51 4 91 1 3 0 81 2 21 3 71 41 0 5;
9 =10 2 8 4 7 61 51 51 1 91 4 31 21 3 0.
Функція стиснення алгоритму BLAKE-256 приймає на вхід:
− змінні ланцюжка h = h0 ,,h7 (8 слів);
− блок повідомлення m = m0 ,,m15 ;
− значення солі s = s0 ,,s3 ;
− значення лічильника t = t0 ,t1.
Отже, на її вхід подається 30 слів (8+16+4+2=30, 30х4 = 120 байт = 960
біт). Повертає функція стиснення тільки нове значення змінних ланцюжка:
h = h'
0 ,,h'
7.
Надалі будемо позначати h = compress (h, m, s, t ).
Етап ініціалізації функції полягає в тому, що 16 змінних, v0 ,,v15 , що
описують поточний стан v , ініціалізуються початковими значеннями в
залежності від вхідних даних і представлені у вигляді матриці 4х4:
v0 v1 v2 v3 h0 h1 h2 h3
v4 v5 v6 v7 h h h h
4 5 6 7
= .
v8 v9 v10 v11 s0 c0 s1 c1 s2 c2 s3 c3
v12 v13 v14 v15 t0 c4 t0 c5 t1 c6 t1 c7
Раундова функція. Після того, як стан v ініціалізований, запускається
серія з 14 однакових за структурою раундів. Раунд – це операція над станом,
яка виконує обчислення, розбиті на наступні блоки:
G0 (v0 , v4 , v8, v12 ), G1 (v1, v5, v9 , v13 ), G2 (v2 , v6 , v10 , v14 ), G3 (v3, v7 , v11, v15 ),
G4 (v0 , v5, v10 , v15 ), G5 (v1, v6 , v11, v12 ), G6 (v2 , v7 , v8 , v13 ), G7 (v3, v4 , v9 , v14 )
на r -му раунді блок обчислення працює, як наведено на рис 2.3:
j mod (r ,10),2i ; k mod (r ,10),2i+1;
a mod (a + b + (mj ck ),232 );
d (d a) 16;
c mod ((c + d ),232 );
b (b c) 12;
32
a mod (a + b + (mk c j ),2 );
d (d a) 8;
c mod (c + d , 232 );
b (b c) 7.
Рис. 2.3 – Графічне представлення роботи функції G на раунді
Перші чотири блоки G0 ,,G3 можуть обчислюватися паралельно, так
як кожен змінює свою певну колонку змінних матриці станів. Назвемо
процедуру обчислення G0 ,,G3 – column step (рис.2.4).
Рис. 2.4 – Вертикальній(column) і діагональний(diagonal) кроки
алгоритму BLAKE-256
Точно також можуть бути паралельно обчислені G4 ,,G7 , але вони в
свою чергу змінюють кожен свою діагональ матриці стану v . Тому назвемо
процедуру обчислення G4 ,,G7 diagonal step. Можливість паралельного
обчислення Gi представлена графічно на рис. 2.3.
На раундах, номери r яких більші за 9, використовується перестановка
r%10 , наприклад, на 13-му раунді використовується 3 .
Останній крок роботи функції. Після всіх раундів нове значення змінних
ланцюжка h'
0 ,,h'
7 обчислюється із змінних матриці стану, вхідних змінних і
з солі:
h'
0 h0 s0 v8; h'
1 h1 s1 v9;
h'
2 h '
2 s2 v10; h3 h3 s3 v11;
h'
4 h4 s '
4 v12; h5 h5 s5 v13;
h'
6 h6 s6 v '
14; h7 h7 s7 v15.
Хешування повідомлення. Опишемо процес хешування повідомлення m
довжиною L 264
біт. Спочатку повідомлення доповнюється функцією
padding даними для кратності 512 біт (64 байтам), потім, блок за блоком, його
обробляє функція стиснення compression function. У функції padding
повідомлення спочатку доповнюється бітами, так, що його довжина стає по
модулю 512 дорівнює 447: спочатку додається 1, потім необхідну кількість
нулів. Після цього додається ще одна одиниця і 64-бітове представлення
довжини повідомлення l від старшого до молодшого біта. Таким чином,
довжина повідомлення стає кратною 512. Padding гарантує, що довжина
повідомлення стане кратною 512 бітам.
Щоб вирахувати хеш повідомлення, результат функції padding ділиться
на блоки з 16 слів m0 ,,mN −1. Нехай Li – кількість біт вихідного повідомлення
у блоках m0 ,,mi , тобто виключаючи ті біти, які були додані в процедурі
padding. Наприклад, якщо повідомлення має довжину 600 біт, то після
процедури padding воно буде мати 1024 біт і буде розділено на два блоки: m0
і m1. Притому L0 = 512, L1 = 600.
У деяких випадках останній блок не містить біт оригінального
повідомлення. Наприклад, якщо у вихідному повідомленні 1020 біт, то в
результаті процедури padding воно буде мати довжину 1536 біт і в m0 буде 512
біт вихідного повідомлення m1 – 508, а в m2 – 0. Виставимо L0 = 512, L1 =1020
, а L2 = 0. Тобто правило таке: якщо в останньому блоці немає біт
оригінального повідомлення, то виставимо лічильник LN −1 рівним 0. Це
гарантує, що якщо i j, то Li L j . Значення солі визначається користувачем
або задається рівним 0, якщо її не потрібно використовувати
(s0 = s1 = s2 = s3 = 0). Хеш повідомлення обчислюється так:
0
h IV
for i = 0,, N −1
i
hi+1 compress(h ,mi , s, Li )
N
return h .
Процес хешування наочно представлений на блок-схемі (рис. 2.5):
Рис. 2.5 – Загальна схема роботи алгоритму BLAKE-256
Алгоритм 64-бітної версії функції ідентичний: значення зсуву рівні 32,
25, 16 і 11 відповідно, число раундів збільшено до 16.
Слід зазначити, що даний алгоритм криптографічного хешування один
із найнадійніших. Алгоритм досить легко може бути програмно реалізований
на сучасних операційних системах типі MS Windows, Linux та Mac.
Розрядність операційних систем – x32 та x64. Алгоритм BLAKE-256
вважається одним із найшвидших алгоритмів хешування даних.
Криптографічна стійкість даного алгоритму також добре вивчена. Відомо, що
він є надійніший за MD5 та серію алгоритмів криптографічних хеш-функцій
типу SHA.
2.3 Критерії оцінки параметрів безпеки алгоритму Blake
Безпека криптографічної хеш-функції визначається кількістю запитів
або припущень, необхідних для вирішення наступних проблем:
1. Стійкість попереднього відображення (одностороння): отримане
значення функції y є таким, що обчислювально неможливо знайти таке
повідомлення x, щоб h(x) = y [21]. Відображення даного критерію показано
на рис.2.6.
Рис.2.6 – схема стійкості попереднього відображення (одностороння)
2. Друга стійкість до попереднього відображення (слабка стійкість
до колізій): маючи отримане значення x, обчислювально практично
неможливознайти другий праобраз x’ ≠ x такий, щоб виконувалася умова h(x)
= h(x’) [13] (рис.2.7).
Рис.2.7 - Друга стійкість до попереднього відображення
3. Стійкість до колізій (сильна стійкість до появи колізій):
обчислювально неможливо знайти будь-які два різні вихідні значення x, x’
хеш-суми яких були б однаковими, тобто, щоб виконувалась рівність: h(x) =
h(x’) [14] (рис.2.8).
Рис.2.8 – стійкість до колізій
4. Стійкість до розширення довжини: на основі хешу невідомого
повідомлення h(x) і довжини повідомлення, яка визначається, як len(x)
неможливо вибрати повідомлення x' для обчислення h(x'), щоб виконувалася
умова h(x') = h(x) (рис.2.9).
Рис.2.9 - Стійкість хеш-фунції до розширення довжини [25]
У перших трьох випадках термін обчислювальної складності означає, що
найшвидшому комп’ютеру знадобиться багато часу, щоб вирішити задачу
елементарного криптоаналізу за методом грубої сили, наприклад, на це може
піти мільярди років, що є практично неможливою задачею. Крім того, четверта
властивість, стійкість до атак з розширеною довжиною хешу, є додатковою
вимогою, викладеною в критеріях оцінки стандарту NIST для хеш-функції
кандидатів SHA-3 [26].
Під час криптоаналізу функція BLAKE досліджувалася набагато
глибше, ніж інші кандидати, ймовірно, через її схожість із хеш-функціями на
основі ARX (модульне додавання, інверсія та XOR-перетворення). На момент
аналізу існувало багато методів та інструментів для такого аналізу. За даними
незалежних джерел, криптостійкість алгоритму Blake досить висока.
Повідомляється, що алгоритм Keccak тестувався більшою кількістю методів і
засобів криптоаналізу, хоча й не такої глибини, як у BLAKE. В той же час, і
функція Blake і Кeccak мають дуже великі запаси безпеки. На момент
написання даної роботи на алгоритм Skein і Blake не зафіксовано жодного виду
атак, які були б близькі до загрози їхнім повнораундовим версіям» [28].
2.3.1. Граничні параметри безпеки алгоритму Blake-256
Мінімальні вимоги по безпеці та стійкості для хеш-функції та перевірені
значення даних параметрів BLAKE-256 наведені в таблиці 2.3.
Таблиця 2.3 - Мінімальні перевірені вимоги по безпеці та стійкості для
хеш-функції
Тип атаки NIST’s Security BLAKE-256 перевірена і доведена загальна
Requirements, біт безпека при параметрі, біт
Праобраз 256-bit 256-bit
Другий праобраз 256-bit 256-bit
Колізія 128-bit 128-bit
Length-extension Should be resistant Не чутливий
Indifferentiablity Not specified 128-bit
Параметри, наведені в таблиці 2.3 взяті з джерел [27, 28].
Аналіз розширювача домену алгоритму BLAKE довів, що BLAKE-256
захищений від атак на перший праобраз, другий праобразу та колізії аж до 2256,
2256 і 2128 запитів відповідно, і його не можна відрізнити від випадкового
оракула аж до 2128 запитів. Крім того, лічильник алгоритму BLAKE захищає
від атак розширення довжини, оскільки він гарантує, що послідовні стиснення
на ітераціях відрізняються.
2.4 Продуктивність алгоритму Blake при різних видах реалізації
2.4.1 Параметри продуктивності криптографічної функції Blake при
програмній реалізації
В схемах автентифікації, як правило використовуються різні
односторонні криптографічні функції, але їх реалізації в переважній кількості
випадків є програмною.
Пропускна здатність продуктивності криптоперетворень вказується в
машинних циклах на байт, де менша кількість циклів вказує на кращу
продуктивність. BLAKE-256 відрізняється своєю високою продуктивністю на
мікроархітектурі x86-64, він є швидшим для коротких повідомлень, ніж SHA-
256, незважаючи на те, що останній потенційно може мати набагато вищий
запас криптостійкості при 14 раундах перетворень [26].
Алгоритми Skein і BLAKE мають найкращу загальну продуктивність
при пригроманій реалізації порявняно з іншими алгоритмами односторонній
хеш-функцій. А на 32-розрядних машинах (головним чином з процесорами
ARM архітектури), які не мають векторних блоків, реалізований алгоритм
BLAKE-256 є загальним лідером, хоча і має лише невелику перевагу в
пропускній здатності перед алгоритмом SHA-256.
На вбудованих комп’ютерних платформах алгоритм BLAKE-256 має
найкращу загальну продуктивність. Пропускна здатність BLAKE-256 зазвичай
знаходиться на рівні або близька до верхньої теоретичної межі, хоча іноді
може бути трохи нижчою, ніж у SHA-256. Але, в той же час алгоритм BLAKE-
256 зазвичай має менші вимоги до пам’яті, ніж SHA-2 та більшість інших
кандидатів.
Програмна реалізація BLAKE вимагає малих ресурсів, і виконується
швидко як в програмному, так на апаратному рівнях. BLAKE-256 може
досягти пропускної здатності більше 4 Гбіт/с.
2.4.1 Параметри продуктивності криптографічної функції Blake при
апаратній реалізації
При генеруванні криптовалюти Decred алгоритм BLAKE-256 добре
підтримує паралелізм обчислень, як на багатоядерних, так і в одноядерних
апаратних платформах на рівні інструкцій (наприклад, набору інструкцій
AVX2). Це важливо, оскільки переважна більшість валідацій відбувається на
обладнанні загального призначення, тоді як майнінг відбувається на
спеціалізованому обладнанні. Ці висновки можна легко перенести і на
швидкість генерування хеш-сум великої розрядності при авторизації.
Встановлено, що алгоритм BLAKE забезпечує найкращу продуктивність
будь-якої своєї версії навіть дуже компактних реалізацій мікрочіпах,
вигтовлених за технологією FPGA. Високопродуктивні реалізації алгоритму
BLAKE-256 в рамках технології FPGA або ASIC забезпечують таку саму
пропускну здатність, що і алгоритм SHA-256, але останній при своїй роботі
вимагає приблизно вдвічі більшого розміру пам’яті, тому співвідношення
пропускна здатність/площа кристалу для алгоритму BLAKE-256 приблизно
вдвічі менше, ніж для SHA-2. Однак, BLAKE має значну перевагу в
апаратному забезпеченні завдяки своїй високій гнучкості для апаратних
реалізацій [22].
При практичному використанні функції Blake у випадку генерування
криптоавалюти Decred реалізується лише один раунд хешування BLAKE-256
проти двох раундів SHA-256 у біткойнах через технічні недоліки алгоритму.
Загальний ефект полягає в тому, що на пошук одиниці валюти для заданої
швидкості хешування потрібно набагато менше енергії.
2.5 Перспективність та переваги використання криптографічної
функції BLAKE в схемах автентифікації
Хоча більшість відомих хеш-функцій широко використовуються для
генерування одиниць різних криптовалют, функція Blake для цього практично
не використовується, виключенням є алгоритм криптовалюта Decred, монети
якої генеруються з використанням версії Blake256.
Взагалі, перспективність використання алгоритму Blake256 дослідники
повязують у більшому ступені з високою швидкістю генерування
криптовалют різними алгоритмами хеш-функцій [9]. Це можна побачити на
рис.2.10.
Рис.2.10 - швидкість генерування криптовалют різними алгоритмами
хеш-функцій
Справа в тому, що як і всі інші алгоритми майнінга, Blake256R14
можливо використовувати для майнінгу з використанням GPU комп’ютера.
З огляду на наведене вище швидкість генерування хеш-функції при
однаковій розрядності буде набагато вища при використання саме алгоритму
BLAKE. Цей показник швидкості можливо перенести і на будь-який
автентифікаційний алгоритм, до складу якого може входить алгоритм BLAKE.
Як видно з проведеному в попередньому розділі аналізу, BLAKE – новий
кандидат на заміну функції SHA-3. BLAKE побудований на раніше вивчених
компонентах, обраних для їх взаємодоповнюваності. Алгоритм стиснення
BLAKE – це модифікована версія потокового шифру Бернштейна ChaCha,
безпека якого була проаналізована, продуктивність – відмінна. Також
алгоритм легко піддавався розпаралелюванню.
РОЗДІЛ 3
РЕАЛІЗАЦІЯ ТА ДОСЛІДЖЕННЯ СХЕМИ АВТЕНТИФІКАЦІЇ З
ВИКОРИСТАННЯМ КРИПТОГРАФІЧНОЇ ФУНКЦІЇ
3.1 Програмна реалізація схеми автентифікація з викорстанням
криптографічної функції
Прикладне програмне середовище, у якому було розроблено засіб
автентифікації даних на базі BLAKE-256 – це Anaconda (Spyder). Anaconda –
це прикладне програмне середовище, яке містить набір різних бібліотек при
розробці додатків мова програмування Python. Мова Pythen оптимально
підходить для реалізації схеми автентифікації через низький порог входження
і наявність необхідних для розвязку даної задачі програмних бібліотек.
Рис.3.1 – зовнішній вигляд середовища розробки Spyder/Anaconda
Anaconda – це набір бінарних систем, що включає в себе Scipy, Numpy,
Pandas і їх залежності. Програмне забезпечення, у якому розроблявся
програмний засіб Spyder/Anaconda (рис. 3.1).
Програмна реалізація програмного комплексу автентифікації даних з
формуванням бази даних хеш-значень повідомлень складається з 3
допоміжних методів:
- Text2Bits(). Реалізується переведення текстових даних у
двійковий код (блок 1) на основі кодової системи символів Windows;
- readData(). Реалізація зчитування вхідного тексту для
шифрування;
- Bits2Text(). Реалізація переведення двійкової послідовності після
декодування даних в текстові на основі кодової системи символів Windows,
та основного коду.
Повний лістинг програмного засобу наведено у додатку до даної роботи.
Загальна логічна функціональна схема шифрування з електронним цифровим
підписом на базі BLAKE-256 програмним засобом наведена на рис. 3.2.
Вхідний текст
Перетворення даних у двійковий код
Застосування функції розширення бітової послідовності
Процедура хешування за алгоритмом BLAKE-256
Отримання кінцевого хешу
Рис. 3.2 – Логічна схема шифрування з електронним цифровим підписом
BLAKE-256 (механізм авторизації)
Як видно з рис.3.2. схема створено програмного засобу механізму
автентифікації складається з 5 етапів. Нижче наведені фрагменти програмного
коду мовою програмування Python, за допомогою яких було створено
відповідний програмний засіб автентифікації користувачів.
Програмна реалізація переведення текстових даних у двійковий код
(блок 1) на основі кодової системи символів Windows має вигляд.
def Text2Bits(Text):
Bin = []
for i in range(len(Text)):
temp = []; M = ord(Text[i])
for j in range(w):
temp.append(M%2); M //= 2
temp.reverse()
for j in range(w):
Bin.append(temp[j])
return Bin
return Bin
Програмна реалізація зчитування вхідного тексту для шифрування (блок
2) має такий вигляд:
def readData():
File = open("MyFile.txt","r")
Text = File.read()
File.close()
Text2Bits(Text)
return Text
Програмна реалізація переведення двійкової послідовності (блок 3)
після декодування даних в текстові на основі кодової системи символів
Windows:
def Bits2Text(Bits):
Text = ''
for i in range(len(Bits) // w):
temp = Bits[i*w : (i+1)*w]
Summ = 0; x = 1
for j in range(w):
Summ += temp[w-j-1]*x; x *= 2
symbol = chr(Summ)
Text += symbol
return Text
Програмна реалізація ініціалізації констант для хешування
повідомлення (блок 4) на базі алгоритму BLAKE-256 (для довільного вхідного
повідомлення):
w = 8
h = [0x6A09E677, 0xBB67AB85, 0x3C6FF372, 0xA53FF53A, 0x510E327F,
0x9B05654C, 0x1F83C9AB, 0x5BE0CD23]
c = [0x253F6A18, 0x83D398D3, 0x13198A2E, 0x03707344, 0xA4093822,
0x299F31D0, 0x082EFA98, 0xEC4E6A12, 0x452771E6, 0x84D01377,
0xBA5466CF, 0x34E15C6C, 0xCAAC21B7, 0xC97C50DA, 0x3F8454B5,
0xB5470917]
sig = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],
[12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],
[13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],
[6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],
[10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0]]
У даному розділі показана робота програмного засобу на кількох
прикладах. В якості вхідного повідомлення для хешування оберемо довільне
текстове значення в кодуванні Windows-1251. Результатом програми є
сформована база хеш-значень, за якою ідентифікується користувач, який
відправив свої дані для автентифікації.
Отримані результати хеш-сум наведені нижче:
- для хеш-функції md5:
*********************string[ 1 ]**************************:
MD5
Result Hash:
c5f0b9747440b33c7e37671f43ab6158
4fc4720bff38cb83cba94e46540eb224
a7178370ef7e719c60a85f6f68200dd6
dd4bf91f64e80efd76a8a74cc4e5d740
eab862ce37a6de46624b5fbd25ed3492
6f0991a8e5f87758be6f95672f1c809d
f1cd7bcb04e4a25541cc558f70ff2607
66d7f57424e18c898bca10da1d40112f
**********************************************************
- для хеш-функції SHA-256:
*********************string[ 2 ]**************************:
SHA-256
Result Hash:
5b646f7b6820cc6dfb8d55767acb0aae1ccaa36cdbf4eec30887875d7e98f05f
ce3ea09c7b902dadc5105e31ee920f190c6a8c9ebfc21113cfa5419dc704dd91
6abf536e39679f0d5f8bd61fc2a57da4a4258d9da8fa34c45bf87d0c6ba8cdad
322868913e35a58e72b0238426e483ea5d2378697444d3a1b8798befa1ce022f
f643ed7bcb9d1661a1e55790e2978675ead82580078f80bf522e078492b92a3a
bbd919e5779cfbcbb64e76b96525c4d2d1069a7eff5137bad6e74413f2ac861a
68539eee522bfacc05b2d9d2580a5802f9bca6d19fa2cb6ef3578c13a0e2e61e
c1dbf8ef1c3c801b60d3b301e195b122aa5636e3142db65e08c3a9e1e3aed430
**********************************************************
- для хеш-функції SHA-3:
*********************string[ 3 ]**************************:
SHA-3
Result Hash:
05e9b3ac33106479ee05d9d16951715bf39e252600d74a017e592b3d4bc98135
6cf974e1cfa5bd8b74b3253e658d3e849c23551525ba9b6af7d30651d0a742b6
5838c9c22d0c98b65cc6876429db5f2d3ea8b4ebdd65745416d4ab688d5f1ead
670b5370f0b950e6284c6ec613360a8a71147dfa15abc7a148267ff8b6766876
0c77ab3c413f9bcc6376a95417c6b95ad1567a34fbd27682a5be0ca0aad5ab1c
713f8ab22ce34706497a30c19f8b70cf4c12aab4c3893159ae9bcb987a0769a2
3179b00c77abfe247872c3f6c0868c2b4100611ffec62392358a9e64dcfb7cae
8c76ba899b36274d9e85433fe3c139aed21842dcd37c165414be3ef895e2714f
**********************************************************
- для хеш-функції BLAKE-256:
*********************string[ 4 ]**************************:
BLAKE-256
Result Hash:
b7caacde0f1945a64a62989347cdd450853c616b94a197920cb0ec86837bb786
3daff94832b4378974fc75b970fbe06b9cc629f1853bea7faed7e1afb72e33b1
1b44c25b74f0ef1966eaf2e98a5af880d15568736fb21b14afd32231de685018
850097bd76d95a6eed0f56a07fe8c2bcc782e1d073b08b8b909445e3bf6b14cc
2b5f603862a7962adf00d2b679202f853f9b8024e1d30b00c4f5aaef915b0026
8595e27fd897d9ac4c1a40289c535e71b6969868d880b796089cb5cdf1787736
8af076df6f67e379275c784a3d6d0ea82dc8fa3a929941deea87b303c311c3f1
15a134a8e7d09b8ef99c2639f8d26f45ff1857ab7e54a8cb5b5ba2cd9b6e6d52
**********************************************************
Таким чином, маємо сформовану базу даних з 32 хеш-значень:
DataBase of Hash:
63081977450efb8b6a305db5e85703f93a3dec6eeba578b31281896aa11ff728
17c282c8881e89207f0097d96022871019ac781921afebf52d413601b9830b68
6c0cf7de67e6b760c42191e036d293b899f17a4545130f3bb2eaf86a54019ec1
a15b03f5d105483acc8132c59bd9e10b3ca069230be9bc51c883ba1df6984047
c9a87afc8f20c1737494119b46872f6d82a51ab39cc1f415a4e018ca1c5af37b
4fbf4882b90d5ad14bc7fd0c2b5baab6918e15bf5242f215c7ab25fc983d0632
15ccdb8ec5a7c7032c3b76d039dba186b50817505828ab0c335ea61d3f657ab6
8c87b194782e2381ec779bb9739bf10a84c283f5304d8fb52e9b02031a5e246e
a7314d6fd283641186d43e411b172ca01fe6bf9d0dbe64900f75de9aacd8b8ea
ccf52e8c4370557f5afa98fa08f375a0e9db704e6584a8b350516fce2185e7b4
44a42815843899d313fde26246541283e2d94775408e1c14172c6eef7af39bf5
026ffef33099324092c1b3a2b91e95b89f3ddda9e4ec57b0c58bed00d77cbb7c
80635c8fdc760b74779bb2859958c7dbad94fc51dcd6dea7dc7c22f90ae04be3
0cfaccd17d182ed9c106b8e314e37e7b15c0222a49650634272536d5f2cd7009
3861bcf7e606f38359d94dc8b56132a0eddd758c380705a9ee2d97344b41e06c
6f81fbe988da8657ce69a25ee6a624d1a176553ebc1eed60bd27a2fc608013ac
b7ee1917077124cafd3f6de3926003c4db016104ec3455881f6ee9401a6c5e10
d3e7958627b7da13d9de462b5e18d5659925fd6871041ca5d6a05d261eb933cc
d24ed74cb965222f364fa3121528ddf9205138e368cad06caaff3af8121e5c7c
aefe7191bae7343a96cb74d059433c414064b34e32ce4559af67f2030049787a
41b4eeeb65f02776f0bc4086a481aa8a8d8413eb75a8ff2bb93686b534703477
bb6533231d79a90f821752f808f7db1d53b6601e7bab8844b87b3f93b93541fc
d6a788fa9ec31829503a1a34ac76eac02217af59b72faeb7897ebaba9a5baa94
39265df4d744b7d79733294e6934586e32efacd40490f4e4f2d4a0b942596cb0
d265b703a317fd8d398904ad02b61bf5207eaf58c3f61e2aee9295941a2f3a88
3721d2ab5bb82525f0b975d171e781496d3e5680b12d9d85efec2512f6e58bb2
ed549398c516598850f0c91cf253f740d0c712ba35d5142fbfb350b791652c1a
adb11eab2c0c1d7bc58923a3514015603ad36264ea2075654985aab1db607cda
2afe75b5c5e2fce57593207bbe5a3675dcfc80af98cd381230db869fe5ecf597
0811370390267715edc50d55f6fd289bcd0e302e50358a327aeeba0816bbf5a7
013d42f25bc6f9be177dd106f0b9672d29648558ba95c7d7b350c7b170955f83
5328b3a760b40e0542290e82433f1105b60dc235a15705cf6763201c12f4dbda
На рис.3.3показані результати тестування та дані хешування, які було
отримано вище у вигляді тексту. Для всіх тестованих криптографічних
функцій хеш-суми на виході мають довжину 32 байти (256 біт). Такої довжини
хеш-суми цілком достатньо більшості однофакторних схем автентифікації.
Рис. 3.3 – Основні результати тестування розробленого програмного
комплексу автентифікації даних з формуванням бази даних хеш-значень
повідомлень користувачів
Як видно з рис.3.3 дисперсія отриманих хеш-сум для різних вхідних
значен функції BLAKE-256 є рівномірною. Можна припустити, що при
збільшенні розрядності функції дана розбіжність збережеться.
При формуванні хеш-сум швидкість отримання результатів для
алгоритму Blake-256 виявилася майже в 1,34 рази меншою, ніж для функції
SHA-3. Результати порівняння часу генерування блоків хеш-сум для різних
вхідних значень хеш функцій md5, sha-256, sha-3, BLAKE-256 показано на
рис.3.4.
Рис. 3.4 - результати порівняння часу генерування блоків хеш-сум
для різних вхідних значень хеш функцій md5, sha-256, sha-3, BLAKE-256
Для генерування хеш-сум використовувався хмарний сервіс AWS
c5.metal з розміром вхідного буфера черки 16 Кb при використанні одного
потоку хмарної платформи обчислень. При цьому, розмір ОЗП при
генеруванні хеш-сум виявився майже в 1,8 рази меншим, ніж для функції SHA-
1.
У ході розробки програмного засобу автентифікації користувачів з
використанням мови Python – мови високого рівня, отримано низку тестових
прикладів, за якими визначався користувач за його значенням хеш-функції.
Пошук користувача здійснювався у базі хеш-даних. У випадку, коли був
поданий не існуючий реально хеш, програма виводила на екран повідомлення,
що користувача у базі даних (за хешем) не знайдено.
На основі такої бази хешей можна далі вже виконувати пошук
користувача, який відправив ці дані до певного сервера.
Криптографічна функція BLAKE-256, яка використовується з метою
автентифікації для однозначного визначення автора (автентифікації), яким
було відправлено ці дані. Як видно з отриманого експерименту
ВИСНОВКИ
Для вибору найбільш оптимальної за часовим параметром та
показником криптостійкості криптографічної хеш-функції для схеми
автентифікації було проаналізовано ряд існуючих хеш-функцій. Всі розглянуті
функції широко використовуються в схемах автентифікації. Необхідно
зазначити, що обрана функція BLAKE-256 належить до сімейства ідеальних
криптографічних хеш-функцій. В якості ідеальної криптографічної хеш-
функції BLAKE-256 для механізму автентифікації має такі основні
властивості:
- швидко обчислює хеш-значення для будь-якого даного
повідомлення; неможливо відновити повідомлення з його хеш-значення;
- незначна зміна в повідомлення суттєво змінює його хеш так, що
нове значення хеш-функції не є корельованим зі старим значенням хешу;
неможливо знайти два різних повідомлення з однаковим значенням хешу.
Принцип роботи створеного засобу, який реалізує однофакторну
парольну автентифікацію полягає в тому, що хеш-функція приймає в якості
64
аргументу повідомлення (документ) M довільної довжини, яка менша за 2
біти й повертає хеш-значення H фіксованої довжини (32 байти для BLAK-
256). Хешоване повідомлення є двійковим поданням основного повідомлення.
Слід зазначити, що значення хеш-функції H залежить від документа M і не
дозволяє відновити сам документ M за його хешем.
Алгоритм, за яких було реалізовано схему автентифікації у вигляді
програмного засобу на мові Python показав надійні та передбачувані
результати, він відповідає сучасним світовим стандартам захисту інформації.
Перевага в часі при формуванні хеш-суми від вхідного повідомлення
(паролю), отриманої з викоистанням функції BLAKE-256 складає приблизно
1,34 рази у порівнянні з функцієб сіймейства SHA-2 при схожій
криптостійкості отриманих хеш-сум.
Основним призначенням створеного програмного засобу є формування
бази даних хешу повідомлень. На основі такого програмного засобу можна
виконувати пошук відповідного хешу по базі. Якщо хеш знайдено, користувач,
який відправив дані знайдений. Якщо є шуканий хеш відсутній у базі даних,
це означає, що такого користувача нема є у базі даних хешу.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Термін «Автентифікація» [Електронний ресурс] // КАБІНЕТ
МІНІСТРІВ УКРАЇНИ. – 1997. – Режим доступу до ресурсу:
https://zakon.rada.gov.ua/laws/show/40-97-
%D0%BF/ed20060315/find?text=%C0%E2%F2%E5%ED%F2%E8%F4
%B3%EA%E0%F6%B3%FF.
2. The State of Strong Authentication [Електронний ресурс] // Javelin
Strategy & Research. – 2019. – Режим доступу до ресурсу: 51
https://1nmqmp2u9dgf3jo9centu6rq-wpengine.netdna-
ssl.com/wpcontent/uploads/2019/01/The-State-of-Strong-Authentication-2019-
Report.pdf
3. Authentication using the Google APIs Client [Електронний ресурс] –
Режим доступу до ресурсу: https://developers.google.com/api-
clientlibrary/javascript/start/start-js.
4. What is the Microsoft Authenticator app? [Електронний ресурс] –
Режим доступу до ресурсу: https://docs.microsoft.com/enus/azure/active-
directory/user-help/user-help-auth-app-overview.
5. Menezes, Alfred J.; van Oorschot, Paul C.; Vanstone, Scott A
(1996). Handbook of Applied Cryptography. CRC Press. ISBN 978-0849385230.
6. Sedgewick, Robert (2002). "14. Hashing". Algorithms in Java (3 ed.).
Addison Wesley. ISBN 978-0201361209
7. Dolev, Shlomi; Lahiani, Limor; Haviv, Yinnon (2013). "Unique
permutation hashing". Theoretical Computer Science. 475: 59–
65. doi:10.1016/j.tcs.2012.12.047
8. Saarinen, M-J; Aumasson, J-P (November 2015). The BLAKE2
Cryptographic Hash and Message Authentication Code
(MAC). IETF. doi:10.17487/RFC7693. RFC 7693. Retrieved 4 December 2015.
9. Алгоритм Blake256 (Blake R14) - список всех монет и майнеров
ASIC. BYTWORK.COM, 2022. https://bytwork.com/articles/algoritm-blake256-
blake-r14-spisok-vsekh-monet-i-maynerov-asic
10. Jean Phillipe Aumasson, Willi Meyer, Raphael C.-W. Phan, Luca
Henzen. The Hash Function Blake (Book). Information security and Cryptography.
Springer Verlag, Berlin Heidepburg. – 2012. Pp.64-78. Doi.10.1007/978-3-662-
44757-4.
11. Aumasson, J., Henzen, L., Meier, W., & Phan, R.C. (2009). SHA-3
proposal BLAKE.
12. Balasch, J., Ege, B., Eisenbarth, T., Gérard, B., Gong, Z., Güneysu, T.,
Heyse, S., Kerckhof, S., Koeune, F., Plos, T., Pöppelmann, T., Regazzoni, F.,
Standaert, F.-X., Van Assche, G., Van Keer, R., van Oldeneel tot Oldenzeel, L., von
Maurich, I.: Compact implementation and performance evaluation of hash functions
in ATtiny devices
13. Eli Biham, Orr Dunkelman. A Framework for Iterative Hash Functions
— HAIFA. Cryptology ePrint Archive, Paper 2007/278.
https://eprint.iacr.org/2007/278
14. Bernstein, D.J.: Chacha, a variant of Salsa20. In: Workshop Record of
SASC, vol. 8, pp. 3–5 (2008)
15. Aumasson, JP., Meier, W., Phan, R.C.W. (2008). The Hash Function
Family LAKE. In: Nyberg, K. (eds) Fast Software Encryption. FSE 2008. Lecture
Notes in Computer Science, vol 5086. Springer, Berlin, Heidelberg.
https://doi.org/10.1007/978-3-540-71039-4_3
16. Duong, T., & Rizzo, J. (2009). Flickr's API Signature Forgery
Vulnerability. h
17. Joux, A. (2004). Multicollisions in Iterated Hash Functions.
Application to Cascaded Constructions. In: Franklin, M. (eds) Advances in
Cryptology – CRYPTO 2004. CRYPTO 2004. Lecture Notes in Computer Science,
vol 3152. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-28628-
8_19
18. Loureiro, Sergio & Molva, Refik & Roudier, Yves. (2003). Mobile
Code Security.
19. Kelsey, J., Schneier, B. (2005). Second Preimages on n-Bit Hash
Functions for Much Less than 2n Work. In: Cramer, R. (eds) Advances in Cryptology
– EUROCRYPT 2005. EUROCRYPT 2005. Lecture Notes in Computer Science,
vol 3494. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11426639_28
20. Kelsey, J., Kohno, T. (2006). Herding Hash Functions and the
Nostradamus Attack. In: Vaudenay, S. (eds) Advances in Cryptology -
EUROCRYPT 2006. EUROCRYPT 2006. Lecture Notes in Computer Science, vol
4004. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11761679_12
21. Biham, Eli & Dunkelman, Orr. (2007). A framework for iterative hash
functions-HAIFA. IACR Cryptology ePrint Archive. 2007. 278.
22. Aumasson, Jean-Philippe & Meier, Willi & Phan, Raphael & Henzen,
Luca. (2014). The Hash Function BLAKE. 10.1007/978-3-662-44757-4.
23. В. А. Лужецький, д. т. н., проф.; Ю. В. Барышев. Конструкции
хеширования стойкие к мультиколлизиям / Информационніе технологии и
компьютерная техника// Наукові праці ВНТУ, 2010, № 1. C.1-9.
24. Andreeva, Elena & Mennink, Bart & Preneel, Bart. (2010). Security
Reductions of the Second Round SHA-3 Candidates.. 39-53.
25. Aumasson, JP., Meier, W., Phan, R.C.W. (2008). The Hash Function
Family LAKE. In: Nyberg, K. (eds) Fast Software Encryption. FSE 2008. Lecture
Notes in Computer Science, vol 5086. Springer, Berlin, Heidelberg.
https://doi.org/10.1007/978-3-540-71039-4_3
26. Bernstein, D.J., Lange, T. (eds.): eBACS: ECRYPT Benchmarking of
Cryptographic Systems. accessed 10 June 2013 (2013), http://bench.cr.yp.to
27. National Institute for Standards and Technology. Announcing Request
for Candidate Algorithm Nominations for a New Cryptographic Hash Algorithm
(SHA3) Family. NIST: Compuer Security Resourse Center. - November 02, 2007.
https://csrc.nist.gov/news/2007/request-for-candidate-algorithm-nominations
28. Chang, S.H., Perlner, R.A., Burr, W.E., Turan, M.S., Kelsey, J., Paul,
S., & Bassham, L.E. (2012). Third-Round Report of the SHA-3 Cryptographic Hash
Algorithm Competition - dx.doi.org/10.6028/NIST.IR.7896