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 SizeFormat 
М_125_Медушівський_Байрак.pdf
  Restricted Access
1.38 MBAdobe PDFView/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