Будь ласка, використовуйте цей ідентифікатор, щоб цитувати або посилатися на цей матеріал:
https://er.chdtu.edu.ua/handle/ChSTU/7742| Назва: | Розробка криптографічної хеш-функції |
| Автори: | Байрак, Анатолій Володимирович Петренко, Роман Сергійович |
| Ключові слова: | структури даних;універсальна криптостійка хеш-функція;час підбору пароля;аргумент функції;колізії;алгоритми хешування |
| Дата публікації: | 2022 |
| Короткий огляд (реферат): | Програмна реалізація та тестування розробленої хеш-функції, аналіз результатів її роботи та порівняння з існуючими алгоритмами. |
| URI (Уніфікований ідентифікатор ресурсу): | https://er.chdtu.edu.ua/handle/ChSTU/7742 |
| Розташовується у зібраннях: | 125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем) |
Файли цього матеріалу:
| Файл | Опис | Розмір | Формат | |
|---|---|---|---|---|
| Б_125_Петренко_Байрак.pdf Restricted Access | 990.58 kB | Adobe PDF | Переглянути/Відкрити Запит копії |
Усі матеріали в архіві електронних ресурсів захищено авторським правом, усі права збережено.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ І РОБОТОТЕХНІКИ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ ТА
КІБЕРБЕЗПЕКИ
До захисту допущено
завідувач кафедри РТСК
д.т.н., професор
_______________ В.В. Палагін
"_____" _____________ 2022 року
Пояснювальна записка
до дипломного проекту (роботи)
бакалавра
(освітньо-кваліфікаційний рівень)
на тему «Розробка криптографічної хеш-функції»
Виконав: студент 4 курсу, групи БІ-81
Спеціальності 125 – «Кібербезпека» ,
(шифр і назва спеціальності)
освітньої програми «Безпека інформаційних і
комунікаційних систем»
(назва освітньої програми)
Петренко Р.С.
(прізвище та ініціали)
Керівник Байрак А.В.
(прізвище та ініціали)
Рецензент Сагун А.В.
(прізвище та ініціали)
Черкаси – 2022 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій і робототехніки
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень бакалавр
Спеціальність 125 – Кібербезпека
Освітня програма – Безпека інформаційних і комунікаційних систем
ЗАТВЕРДЖУЮ
Завідувач кафедри В.В. Палагін
“_____” ___________________ 2022 року
ЗАВДАННЯ
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ
Петренка Романа Сергійовича ___________________
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Розробка криптографічної хеш-функції
керівник проекту (роботи) Байрак Анатолій Володимирович
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від «18» лютого 2022 року № 58/04
2. Термін здачі студентом закінченої роботи “ 25 ” травня 2022 року _________
3. Вихідні дані до роботи: наукові та навчальні джерела з галузі Cryptography та
Cybersecurity; теоретичні відомості про криптографічні хеш-функції та односторонні
криптографічні перетворення; принципи побудови та криптоаналізу хеш-функцій;
існуючі алгоритми криптографічних хеш-функцій, зокрема MD5 та SHA-1; математичні
методи бітових перетворень, операцій XOR та зсувів; програмні засоби для реалізації та
тестування алгоритмів криптографічних хеш-функцій.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Аналіз односторонніх криптографічних перетворень та хеш-функцій, їх принципів
роботи, вимог до ідеальної хеш-функції та сфер застосування; дослідження структури
та криптоаналізу хеш-функцій, аналіз проблеми колізій та принципів роботи алгоритмів
MD5 і SHA-1; розробка алгоритму власної криптографічної хеш-функції, що
використовує бітові перетворення та операції в полі Galois Field GF(2); програмна
реалізація та тестування розробленої хеш-функції, аналіз результатів її роботи та
порівняння з існуючими алгоритмами..
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів)
1. Структурна схема алгоритму криптографічної хеш-функції.; 2. Схеми процесу
обчислення та формування хеш-значення; 3. Графічні результати тестування та
порівняння характеристик розробленої функції з алгоритмами MD5 та SHA-1; 4.
Охорона праці.
.6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Підпис, дата
Прізвище, ініціали та посада
Розділ завдання завдання
консультанта
видав прийняв
Охорона праці Кожем’якін О.С.
старший викладач кафедри
безпеки життєдіяльності
7. Дата видачі завдання 18 лютого 2022 року
КАЛЕНДАРНИЙ ПЛАН
Термін
№ Назва етапів дипломного проекту
виконання етапів Примітка
з/п (роботи)
проекту (роботи)
1. Аналіз технічного завдання та пошук
18.02.22 – 09.03.22
літератури
2. Аналіз односторонніх криптографічних
перетворень та хеш-функцій, їх принципів
10.03.22 – 24.03.22
роботи, вимог до ідеальної хеш-функції та
сфер застосування.
3. Дослідження структури та криптоаналізу
хеш-функцій, аналіз проблеми колізій та 25.03.22 – 10.04.22
принципів роботи алгоритмів MD5 і SHA-1.
4. Розробка алгоритму власної криптографічної
хеш-функції, що використовує бітові
11.04.22 – 25.04.22
перетворення та операції в полі Galois Field
GF(2).
5. Програмна реалізація та тестування
розробленої хеш-функції, аналіз результатів її
26.04.22 – 10.05.22
роботи та порівняння з існуючими
алгоритмами.
7. Виконання розділу охорони праці 11.05.22 – 26.05.22
8. Оформлення пояснювальної записки 27.05.22 – 01.06.22
9. Оформлення презентації 02.06.22 – 09.06.22
Студент Петренко Р.С.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Байрак А.В.
( підпис ) (прізвище та ініціали)
ВСТУП
Як відомо, хеш-функціями називаються такі функції, які перетворюють
вхідні дані будь-якого (як правило великого) розміру в дані фіксованого
розміру, тому її ще називають функцією згортки. Хеш-функція
використовується зокрема у структурах даних — хеш-таблицях, широко
вживаних у програмному забезпеченні для швидкого пошуку даних. Хеш-
функції використовуються для оптимізації таблиць та баз даних користуючись
з того, що в однакових записів однакові значення хеш-функції. Такий підхід
пошуку дублікатів ефективний у файлах великого розміру.
Зараз існує багато практичних застосувань та існує тенденція до
збільшення області застосування хеш-функцій [1-5].
Актуальність роботи пояснюється необхідністю створення
універсальної криптостійкої хеш-функції, яка має просту структуру та може
бути легко реалізованою апаратно за рахунок наявності в ній операцій бітових
зсувів, XOR та бітової заміни.
Об’єктом роботи є алгоритм криптографічної хеш-функції.
Предметом роботи є асиметрична криптографічна криптографічну хеш-
функція згортки в бітовому відображенні.
Метою роботи є створення власної хеш-функції та аналіз її роботи для
виявлення характеристик розподілу та можливих колізій. Окремою метою є
здійснення порівняння отриманої функції згортки на наявність колізій із
існуючими алгоритмами MD5 та SHA-1.
Для досягнення мети необхідно вирішити такі задачі:
− аналіз принципів роботи та недоліків базових алгоритмів
криптографічних односторонніх хеш-функцій;
− реалізувати алгоритм швидких бітових перетворень в рамках
створюваної хеш-функції та мінімізувати кількість колізій;
− розробити криптографічну хеш-функцію по типу згортки, яка
оперує значеннями в кільці числових полів GF(2) та заснована на
розробленому алгоритмі;
− створення програмного засобу, що реалізує роботу створеного
криптографічної хеш-функції та отримання результатів порівняння роботи
отриманої функції з хеш-функціями типу md та sha-1.
Структура та обсяг роботи. Робота складається із вступу, 3 розділів,
загальних висновків, переліку використаних джерел, що містить 20
найменувань на 3 сторінках, 17 рисунків та 4 таблиць та 1 додаток на 5
сторінках.
Загальний обсяг роботи – 47 сторінок, з них 42 сторінки основного
тексту.
РОЗДІЛ 1
ОДНОСТОРОННІ КРИПТОПЕРЕТВОРЕННЯ ТА ФУНКЦІЇ, ЩО
ЇХ РЕАЛІЗОВУЮТЬ
1.1 Хеш-функції, принцип роботи, застосування
Хеш-функція (англ. hash function від hash) або функцією згортки в
криптографії називають функцію, що здійснює перетворення масиву вхідних
даних довільної довжини у вихідний бітовий рядок встановленої фіксованої
довжини [6]. Такі перетворення виконуються певним алгоритмом.
Перетворення, яке здійснюється хеш-функцією, називається хешуванням.
Вихідні дані такого перетворення називаються вхідним масивом, "ключом"
або "повідомленням". Результат такого перетворення може називатися "хеш",
"хеш-кодом", "хеш-сумою", "зведенням повідомлення".
Хеш-функції часто застосовуються в інформаційних системах. Серед
задач, які розв’язуються з використанням хеш-функцій:
- побудова асоціативних масивів;
- пошук дублікатів у послідовності наборів даних;
- побудова унікальних ідентифікаторів наборів даних;
- обчислення контрольних сум від даних (сигналу) для подальшого
виявлення в них помилок (виниклих випадково або внесених навмисно), що
виникають при зберіганні та/або передачі даних;
- збереження паролів у системах захисту у вигляді хеш-коду (для
відновлення пароля по хеш-коду потрібна функція, що є зворотною щодо
використаної хеш-функції);
- вироблення електронного підпису (на практиці часто підписується
не саме повідомлення, яке «хеш-образ»);
- та інші технічні задачі.
У загальному випадку (згідно з принципом Діріхле) немає однозначної
відповідності між хеш-кодом та вихідними даними. Значення, що
повертаються хеш-функцією, менш різноманітні, ніж значення вхідного
масиву даних. Випадок, коли хеш-функція перетворює більш ніж один масив
вхідних даних в однакові значення, називається колізією. Можливість
виникнення колізій використовується для оцінки якості хеш-функцій (хеш-
алгоритму).
Існує велика кількість алгоритмів хешування, що відрізняються різними
властивостями. Приклади можливих властивостей хеш-алгоритмів:
− розрядність;
− обчислювальна складність;
− криптостійкість.
Вибір тієї чи іншої хеш-функції визначається специфікою завдання, що
вирішується. Найпростішим прикладом хеш-функції може бути «обрамлення»
даних циклічним надлишковим кодом (так званий, CRC, cyclic redundancy
code).
У загальному випадку для хеш-функції однозначної відповідності між
вихідними даними і хеш-кодом немає в силу того, що кількість значень хеш-
функцій менша, ніж число варіантів значень вхідного масиву. Існує безліч
масивів з різним вмістом, що дають однакові хеш-коди — так звані колізії.
Імовірність виникнення колізій відіграє важливу роль в оцінці якості хеш-
функцій, тому гарна хеш-функція має бути з мінімальною кількістю колізій.
1.2 Загальні вимоги до ідеальної хеш-функції
Властивості, які повинні бути притаманні криптографічним хеш-
функцій наступні:
1. Стійкість пошуку першого прообразу – відсутність ефективного
поліноміального алгоритму обчислення зворотної функції, тобто, не можна
відновити текст m за відомою його згорткою H(m) за реальний час
(необоротність). Ця властивість еквівалентна тому, що хеш-функція є
односторонньою функцією.
2. Стійкість до пошуку другого прообразу (колізій першого роду) –
обчислювально неможлива, з огляду на те, що знаючи повідомлення m та його
згортку H (m), знайти таке ж інше повідомлення m ′ ≠ m, щоб виконувалася
умова виду: H(m)=H(m)′ теж не є реальним фактом.
3. Стійкість до колізій (колізій другого роду).
Колізією для хеш-функції називається така пара значень, якщо H(m)
=H(m′). Оскільки кількість можливих відкритих текстів більша за кількість
можливих значень згортки, то для деякої згортки знайдеться багато
прообразів, тому колізії для хеш-функцій обов'язково існують. Наприклад,
нехай довжина хеш-прообразу 6 бітів, довжина згортки 4 біти. Тоді число
різних згорток складає 24=16, а кількість хеш-праобразів складає 26= 64, тобто
в 4 рази більше, отже, хоча б одна згортка з усіх відповідає 4 прообразам
(рис.1.1) [7].
Рис.1.1 – 4 праобрази загальної функції згортки (хеш-функції)
Стійкість хеш-функції до колізій означає, що немає ефективного
поліноміального алгоритму, що дозволяє знаходити колізії [8].
1.3 Хеш-функції типу SHA-1 і MD5
Основна функція MD5 використовується для того, щоб визначити
значення хеш-функції в криптографії. У той час, як хеш-функція призначена
для того, щоб отримувати блоки даних і повертати їх з бітового рядка
фіксованого розміру або хеш-значення. Дані, які були використані за
допомогою хеш-функції, називаються «повідомлення», в той час, обчислене
значення хеша отримало назву "Дайджест повідомлення".
Хеш-функції md5 і sha-1 – не є способами шифрування. Це способи
обчислення хеш (хеш-функції). Вони використовуються не для того, щоб
"зашифрувати" пароль, і не для того, щоб не зберігати пароль. В системах
автентифікації, в яких часто застосовуються хеш-функції, паролі зберігаються
не у відкритому вигляді, а у вигляді хеш-сум. А збереження паролів в базах
даних у відкритому вигляді давно вважається неприйнятною та застарілою
технологією і не використовується в прикладних інформаційних
комп’ютерних системах.
1.3.1. SHA-1
Алгоритм SHA (Secure Hash Algorithm) розроблений АНБ разом із
NIST. Першу версію SHA-0 представили в 1993 році, але незабаром АНБ
відкликало цю версію, пославшись на виявлену ними помилку, яка так і не
була розкрита [9].
Виправлену версію АНБ опублікувала у 1995 році, вона отримала назву
SHA-1.
Відомо, що SHA-1 реалізує односпрямовану хеш-функцію, побудовану
на ідеї функції стиснення. Входами функції стиснення є блок повідомлення
довжиною 512 біт та вихід попереднього блоку повідомлення. Вихід є деяким
твірним значенням всіх хеш-блоків отриманих до фінального процесу
складання. Іншими словами хеш блоку Mi дорівнює hi = f(Mi,hi−1). Хеш-
значенням всього повідомлення є вихід останнього блоку.
Криптографічна хеш-функція SHA-1 (Secure Hash Algorithm 1) генерує
рядок довжиною 160 бітів, який називається хеш-дайджестом. Теоретично
дайджести повинні бути унікальними для кожного файлу, повідомлення або
іншого вхідного сигналу, що подається на вхід функції. В якості вхідного
значення SHA-1 може приймати повідомлення до приблизно 2 ексабайтів.
Природньо, що область значень дайджеста менша за область вхідних
значень (особливість роботи будь-якої функції згортки). Але на практиці
дайджест-колізії повинні бути неможливими, враховуючи продуктивність
наявних обчислювальних ресурсів. На жаль, SHA-1 зараз не відповідає даному
критерію.
На рис.1.2 показана схематична будова однієї ітерації алгоритму SHA-1
Рис.1.2 – схематична будова однієї ітерації алгоритму SHA1
Secure Hash Algorithm 1 – алгоритм криптографічного хешування. Він
описаний в документі RFC 3174 [10]. Для вхідного повідомлення довільної
довжини (максимум 264−1 біти) алгоритм генерує 160-бітове хеш-значення,
яке також називається дайджестом повідомлення. Даний алгоритм довгий час
використовувався у багатьох криптографічних додатках та протоколах. Також,
він був рекомендований в якості основного для державних установ у США.
Принципи, покладені в основу SHA-1, аналогічні до тих, які
використовувалися Рональдом Рівестом при проектуванні хеш-функцій.
РОЗДІЛ 2
СТРУКТУРА ТА КРИПТОАНАЛІЗ ХЕШ-ФУНКЦІЙ
2.1 Структура та принцип проведення односторонніх
криптоперетворень
Останніми роками було витрачено значних зусиль і досягнуто певних
успіхів у справі розробки криптографічних методів аналізу функції хешування
[11]. Щоб їх зрозуміти, розглянемо структуру типової захищеної функції
хешування, показану на рис.1.1.
Структура, яка наведена на рис.2.1, називається ітерованою функцією
хешування. Вона була запропонована Меркл (Merkle). Саме таку структуру
мають більшість функцій хешування, що використовуються сьогодні,
включаючи MD5, SHA-1 і RIPEMD-160 та інші [12,13].
Рис. 2.1 – загальна структура захищеного хеш-коду
На рис. 1.1 використані наступні позначення:
IV — початкове значення;
CV— змінна зчіплювання;
У— г-й введений блок;
/— алгоритм стискання;
L — кількість введених блоків;
N — довжина хеш-коду;
b — довжина введеного блоку.
Функція хешування отримує на вхід повідомлення і ділить його на L - 1
блоків рівної фіксованої довжини по b бітів кожен. Якщо необхідно, останній
блок доповнюється до бітів. Останній блок також включається значення
сумарної довжини введення функції хешування. Це робить завдання
супротивника ще складнішим. Криптоаналітик повинен знайти або два
повідомлення рівної довжини, що мають однакові значення функції
хешування, або два повідомлення різної довжини, які разом з відповідними
значеннями довжини будуть мати однакові значення функції хешування.
Алгоритм хешування передбачає багаторазове застосування функції
стиснення f, яка отримує на вхід два значення:
− «бітове» значення, отримане на попередньому етапі і називається
змінною зчеплення;
− 6-бітовий блок повідомлення, і породжуюче «бітове» вихідне
значення.
На початку хешування змінна зчеплення набуває початкового значення,
що є частиною алгоритму. Кінцеве значення змінної зчеплення і буде
значенням функції хешування. Зазвичай, b > п, тому і говорять про стискання.
Функція хешування може бути формально описана таким чином:
0 = = початкове n-бітове значення,
С0 = (−1, −1), 1 ≤ ≤ ,
(М) — CVL, де введені дані функції хешування є повідомлення М, яке
складається з блоків Yq, Y, Yl-i.
Поштовхом до створення такого роду ітераційних структур стали
результати Меркла і Дамгарда (Damgard), що свідчать про те, що якщо функція
стиснення має опір колізій, то такою ж буде і ітерована функція хешування
[11,14]. Тому така структура може використовуватися для створення
захищеної функції хешування, що працює із повідомленнями будь-якої
довжини. Проблема створення захищеної функції хешування зводиться до
проблеми пошуку функції стиснення, що має опір колізій і працює з даними
деякої фіксованої довжини.
Криптоаналіз функцій хешування зазвичай зосереджений на
дослідженні внутрішньої структури і спирається на спроби знайти ефективні
методи виявлення колізій при одноразовому виконанні f.
Якщо цю проблему вирішено, то атакуючому залишається розглянути
фіксоване значення IV (початкове). Конкретний вид атаки залежить від
внутрішньої структури цієї хеш-функції. Зазвичай, наприклад, коли йдеться
про симетричні блокові шифри, то передбачає кілька раундів обробки даних
(криптоперетворень), тому краще виконувати аналіз зміни побітової
структури даних від раунду до раунду.
Слід мати на увазі, що колізії повинні існувати в будь-якій функції
хешування, оскільки остання відображає, як мінімум, блок довжини b в хеш-
код довжини n, де b > п.
Потрібна лише обчислювальна неможливість виявити такі колізії. Для
прикладу можна оцінити складність атак на алгоритм SHA-1 (таблиця 2.1)
[14,15].
Таблиця 2.1 - Складність атак на SHA-1
Функція Тип колізії GPU Час, Складність Ціна
років атаки атаки,
USD
SHA-1 collision GTX 970 22 261,2 11000
GTX 1060 27 261,6
GTX 1080Ti 8 261,6
Chosen- GTX 970 99 263,4 45000
prefix GTX 1060 107 263,5
GTX 1080Ti 34 263,6
MD5||SHA- Both (plain GTX 970 1400 267,2 720000
1 or CP) GTX 1060 1700 267,6
GTX 1080Ti 540 267,6
В таблиці 2.1 вартість атаки береться з розрахунку вартості оренди однієї
відеокарти GTX 1060 в 35 доларів на місяць.
2.2 Проблема колізій в хеш-функціях
Колізія хеш-функції є явищем, коли два різних вхідних елементи таблиці
hash є однаковими. Колізії зустрічаються у різноманітних алгоритмах
хешування, проте це є нормою, а у «правильних» алгоритмах їх виникнення
зведено до мінімального значення.
Такі події не такі вже й рідкісні — наприклад, при вставці в хеш-таблицю
розміром 365 комірок лише 23 елементів, ймовірність колізії може
перевищити 50% (якщо кожен елемент може рівноймовірно потрапити в будь-
яку комірку). Тому механізм подолання колізій – важлива складова будь-якої
хеш-таблиці.
На сьогодні алгоритм SHA-1 не в змозі забезпечити необхідну стійкість
до криптоатак. Тому, набагато пізніше за всіх інших, але розробники бібліотек
для SSH вирішили відключити за замовчанням застарілу криптофункцію SHA-
1 з даного набору. Сьогодні підбір серверного ключа автентифікації SHA-1,
тобто колізія з вибраним префіксом, на орендованому кластері GPU цілком
можлива і обійдеться у приблизно $45 тис (таблиця 2.1). Це робить атаку
доступною не тільки для державних спецслужб, а й для комерційних клієнтів
та і взагалі для будь-кого.
Зараз алгоритм SHA-1 вже не вважається потенційно безпечним.
Наприклад, про відключення SHA-1 за замовчанням одночасно оголосили
розробники відкритих криптографічних програмних бібліотек OpenSSH
(release notes) та libssh (зміна коду).
Хоча даний односторонній криптоалгоритм, майже 20 років від початку
свого представлення вважався надійним (на відміну від md5), але, у 2017 році
співробітники компанії Google та Центру математики та інформатики в
Амстердамі представили перший спосіб генерації колізій для SHA-1.
2.3 Принцип роботи алгоритму MD5
MD5 є криптографічною хеш-функцією, яка працює на базі алгоритму,
також відомого, як "повідомлення-дайджест". Тримана послідовність містить
ряд цифр, що генеруються процедурою хешування в один бік. Така хеш-
функція вважається одностороннім криптографічним перетворенням.
Дайджести повідомлень спеціально розроблені для забезпечення цілісності
фрагменту інформації або засобів масової інформації. Застосування хеш-
функцій дозволяє визначити, чи є зміни або доповнення до будь-якої частини
повідомлення.
Дайджести повідомлень захищені однонаправленою хеш-функцією, які
приймають випадкові величини даних та отримання значення хешу фіксованої
довжини.
Відомо, що алгоритм, який реалізує MD5 перетворення повертає 128-
бітне хеш-значення. Дане криптографічне перетворення реалізується, щодо
будь-якого розміру вхідного повідомлення в хеш-значення. Воно відбувається
за 5 кроків.
Крок 1: Додати біти заповнення
Заповнення означає додавання додаткових бітів до відкритого
повідомлення. Таким чином, MD5 повідомлення доповнюється таким чином,
щоб його довжина в бітах збігалася з 448 за модулем 512. Заповнення
виконується так, що загальна кількість бітів на 64 менше, кратне довжині 512
біт.
Заповнення виконується, навіть якщо довжина вихідного повідомлення
відповідає 448 по модулю 512. У бітах заповнення єдиний перший біт
дорівнює 1, а інші біти дорівнюють 0.
Крок 2: Додавання довжини
Після заповнення блоків до кратних за модулем 512 в кінці додаються
64 біти, що використовуються для запису довжини вихідного введення по
модулю 264. На цьому етапі результуюче повідомлення має довжину, кратну
512 бітів.
Крок 3: Ініціалізація буфера MD
Буфер із чотирьох слів (A, B, C, D) використовується для обчислення
значень для дайджесту повідомлення. В таблиці 1.2 A, B, C, D є 32-бітними
регістрами і ініціалізуються наступним чином.
Таблиця 2.2
Приклад виконання кроку 3 хеш-перетворень md5
Слова дайджесту Значення в бітах регістрів слів
Слово А 01 23 45 67
Слово B 89 Ab Компакт диск Ef
Слово С Fe Округ Колумбія Ba 98
Слово D 76 54 32 10
Крок 4: Обробка повідомлення у блоці з 16 слів
MD5 використовує допоміжні функції, які сприймають вхід, як три 32-
бітні числа і видають 32-бітну числову комбінацію на вихід. Ці функції
використовують логічні оператори, такі як OR, XOR, NOR (таблиця 2.3).
Таблиця 2.3
Логічні операції на кроці 4 алгоритму md5
Крокова функція Логічна операція
F(X,Y,Z) XY не (X) Z
G(X,Y,Z) XZ Y не (Z)
H(X,Y,Z) X XOR Y XOR Z
Я(X,Y,Z) Y xor (X не (Z))
Вміст чотирьох буферів змішується з входом з використанням цього
допоміжного буфера і 16 циклів виконуються з використанням 16 основних
операцій.
В результаті перетворень, які відбуваються в на кроці 4, обходи виконані
в буферах A, B, C, D і містять вивід функції MD5, починаючи з молодшого біта
A закінчуючи старшим бітом D.
2.4 Криптоаналіз хеш-функцій
Криптоаналіз хеш-функцій спрямований на дослідження вразливості до
різного виду атак. Основні з них наступні:
- знаходження колізій — ситуація, коли двом різним вихідним
повідомленням відповідає те саме хеш-значення;
- знаходження прообразу - вихідного повідомлення - на його хешу
- при розв’язку методом «грубої сили»:
o друга задача вимагає 2160 операцій;
o перша задача вимагає в середньому 2160/2=280 операцій, якщо
використовувати «парадокс днів народження» [15].
Від стійкості хеш-функції до знаходження колізій залежить безпека
електронного цифрового підпису, який отримується за допомогою даного
хеш-алгоритму. Від стійкості до знаходження прообразу залежить безпека
зберігання хешів паролів з метою автентифікації.
У січні 2005 року Vincent Rijmen та Elisabeth Oswald опублікували
повідомлення про атаку на усічену версію SHA-1 (53 раунди замість 80), яка
дозволяє знаходити колізії менше, ніж за 280 операцій [16].
MD5, разом з іншими подібними хеш-функціями, зазвичай
використовується при створенні цифрових підписів та кодів підтвердження
повідомлень, індексування даних у хеш-таблицях, в якості індикаторів
скопійованих даних, в якості цифрових «відбитків пальців», для сортування та
ідентифікації файлів, а також виступати в якості контрольних сум, у виявленні
ненавмисне пошкодження даних тощо.
Використання MD5 хеш для забезпечення цілісності даних файлів
пояснюється тим, що хеш-алгоритм MD5 має унікальний спосіб отримання
самих результатів, для одного і того ж набору даних.
Слід розуміти, що алгоритм MD5 не реалізує шифрування, він створює
цифровий відбиток для входу. Крім того, дана хеш-функція є односторонньою.
Це означає, що користувач не може скасувати згенерований MD5 хеш, щоб
відновити початковий рядок (відкритий текст).
Початково алгоритм MD5 був розроблений для зберігання
одностороннього хешу пароля. Тому деякі файлові сервери також надають
попередньо обчислену контрольну суму файлу MD5, щоб користувач міг
порівняти з ним контрольну суму завантаженого файлу. Більшість
операційних систем на основі Unix включають утиліти контрольної суми MD5
у пакети розповсюдження того чи іншого сумісного ПЗ.
MD5 хеш генерується шляхом отримання рядка будь-якої бажаної
довжини та кодуванням його в 128-бітний цифровий «відбиток пальця».
Набравши той самий рядок, використовуючи генератор MD5 завжди буде
згенерувати той самий 128-бітовий хеш-результат. В практичних умовах
алгоритм MD5 зазвичай використовуються з меншою бітністю вихідного
рядку при прийнятті та збереженні паролів, номерів кредитних карт або будь-
якої іншої конфіденційної інформації в базах даних, таких як популярна
система зберігання даних у форматі MySQL.
Отже, можна використовувати тільки MD5 в якості базового алгоритму
для обчислення контрольної суми або елемент управління в таблиці бази
даних. З огляду на недостатню на сьогодні криптостійкість в ряді інших задач,
даний алгоритм є цілком придатним для таких задач. MD5 вважається
компактним алгоритмом – його хеш має довжину 32 цифр. Саме тому він не
потребує занадто багато місця для зберігання і може обчислювати і генерувати
хеш в оснастці інформаційної системи. Слід мати на увазі, що рекомендовано
уникати використання MD5 для паролів, дайджестів або інших критичних
систем безпеки.
2.4 Веселкові таблиці в криптоаналізі
Райдужні таблиці також відомі як довідкові таблиці зворотної хеш-
функції. У цьому методі, MD5 обчислює хеш-значення для даних або
повідомлень, що дає змогу досить легко використовувати грубу силу для
пошуку значення функції. Наприклад, можна розпочати обчислення
дайджесту з восьми знаків (літерно-цифрових комбінацій) і аналітик може
подивитися на таблицю паролів, щоб дізнатися, який пароль збігається та з
яким хешем дане значення співставне.
Хоча, свого часу алгоритм MD5 був визнаний криптостійким (без
зіткнень в колізіях), але даний факт також може залежати від того, як і з якою
метою використовується MD5.
Райдужна таблиця створюється шляхом побудови ланцюжків
потенційних паролів. Кожен ланцюжок починається з випадкового можливого
пароля, потім піддається хешування та функції редукції. Ця функція
перетворює результат хеш-функції на певний можливий пароль.
Райдужна таблиця створюється побудовою ланцюжків потенційних
паролів. Кожен ланцюжок починається з випадкового можливого пароля,
потім піддається дії хеш-функції та функції редукції. Ця функція перетворює
результат хеш-функції на певний можливий пароль.
Для відновлення пароля значення хеш-функції піддається обробці
функції редукції і здійснюється пошук в таблиці. Якщо не знайдено збігу, то
знову застосовується хеш-функція та функція редукції. Ця операція триває,
доки не буде знайдено збігів. Після знаходження таких збігів, ланцюжок, що
містить його, відновлюється для знаходження відкинутого значення, яке і буде
шуканим паролем.
В результаті виходить «веселкова» таблиця, яка може з високою
ймовірністю відновити пароль за короткий час.
«Веселкові» таблиці можуть зламувати тільки ту хеш-функцію, для якої
вони створювалися, тобто таблиці для MD5 можуть зламати тільки хеші,
отримані для функції MD5. Теорія для застосування даної технології була
розроблена Philippe Oechslin [17] в якості швидкого варіанту time-memory
tradeoff [18]. Вперше технологія була використана в програмі Ophcrack для
зламування хешів LanMan, які використовуються в операційній системі
Microsoft Windows.
Пізніше була розроблена більш досконала програма RainbowCrack, яка
може працювати з великою кількістю хеш-значень, наприклад LanMan, MD5,
SHA1 та інші. Наступним кроком було створення програми The UDC, яка
дозволяє будувати Hybrid Rainbow таблиці не за набором символів, а за
набором словників, що дозволяє відновлювати паролі більшої довжини
(фактично необмеженої довжини).
При генерації таблиць важливо знайти найкраще співвідношення
взаємозалежних параметрів, таких як:
- ймовірність знаходження пароля за отриманими таблицями;
- часу генерації таблиць;
- час підбору пароля за таблицями;
- займане місце.
Наведені вище параметри залежать від налаштувань заданих при
генерації таблиць:
- допустимий набір символів;
- довжина пароля;
- довжина ланцюжка;
- кількість таблиць.
При цьому час генерації хешів залежить майже виключно від бажаної
ймовірності підбору, використовуваного набору символів та довжини пароля.
Займане таблицями місце залежить від бажаної швидкості підбору
одного пароля по готовим таблицям.
Хоча застосування райдужних таблиць полегшує використання методу
грубої сили (bruteforce) для підбору паролів, у деяких випадках необхідні для
їх генерації або використання обчислювальні потужності не дозволяють
одиночному користувачеві досягти бажаних результатів за прийнятний час.
Наприклад для паролів довжиною трохи більше 8 символів, які з букв, цифр і
спеціальних символів !@#$%^&*()-_+= захешованих алгоритмом MD5
можуть бути генеровані таблиці з наступними параметрами [20]:
• довжина ланцюжка 1400;
• кількість ланцюжків 50000000;
• кількість таблиць 800.
При цьому ймовірність знаходження паролю за допомогою даних
таблиць для випадку хеш-функції MD5 складе 0.7542 (75.42%), а розмір
таблиці для даної розрядності функції складе орієнтовно 596 Гб. Генерація
таких таблиць на комп'ютері CISC архітектури типу x86 при однопоточних
обчисленням, з частотою СЗГ 1 ГГц займатиме 3 роки, а пошук 1 пароля по
готових таблицях - не більше 22 хвилин.
Однак процес генерації таблиць можна розпаралелити, наприклад
розрахунок однієї таблиці з наведеними вище параметрами займає приблизно
33 години. В разі, якщо в розпорядженні криптоаналітика є 100 комп'ютерів,
всі таблиці можна згенерувати за проміжок часу в 11 діб.
2.4.1 Захист від «веселкових» таблиць
Дані таблиці неможливо використовувати проти незворотних хеш-
функцій, які включають salt (сіль). Для прикладу, розглянемо наступну
функцію для створення хешу від пароля:
хеш = MD5 (пароль + сіль), де «+» означає операцію конкатенації.
Для відновлення такого пароля криптоаналітику необхідні таблиці для
всіх можливих значень «затравки».
По суті, «затравка» збільшує довжину і, можливо, складність пароля.
Якщо таблиця розрахована на деяку довжину або на певний обмежений набір
символів, «затравка» може запобігти відновленню пароля.
Практично всі дистрибутиви ОС Unix, GNU/Linux і BSD
використовують хеші з сіллю для зберігання системних паролів, хоча багато
програм, наприклад, інтернет-скріпти на PHP використовують простий хеш
(звичайно MD5) без солі. ОС Microsoft Windows і Windows NT
використовують хеші LAN Manager і NT LAN Manager, які також
використовують сіль, що робить їх одними з найпопулярніших для створення
«веселкових» таблиць.
Тож, можна виділити ключові відмінності між алгоритмами (рис.2.2).
Рис.2.2 – Відмінності алгоритмів MD5 та SHA-1
Таким чином, можна побачити, що обидва алгоритми SHA-1 і MD5,
вийшли від MD4, тому мають багато спільного
РОЗДІЛ 3
РОЗРОБКА ТА ТЕСТУВАННЯ КРИПТОГРАФІЧНОХ ХЕШ-ФУНКЦІЇ
3.1 Алгоритм криптографічної хеш-функції
При розробці алгоритму хеш-функції будемо виходити з того, що вона є
згорткового типу. Для тестування прототипу достатньо зупинитися на 32-
бітному вихідному значенні хеш-функції. Вхідне значення розіб’ємо на 4
блоки, які будемо обробляти за допомогою чотирьох XOR-перетворень. Такий
підхід може викликати колізію вже при вхідному значенні аргументу функції
рівному «0» (null).
Для підготовки даних змінюємо у нашому повідомленні значення
передостаннього біта на 1, останнього на 0 (для випадків, коли будуть тільки
нульові або тільки одиничні біти), а потім дописуємо дзеркально біти,
починаючи з кінця, поки дане повідомлення не буде кратне 64 (якщо не
вистачає бітів, дописуємо нулі):
Початкове повідомлення: 1100 0110 0001 0100 1101 1110 0101 0101 1110
1011 0110 0001 0001;
Відкориговане повідомлення: 1100 0110 0001 0100 1101 1110 0101 0101
1110 1011 0110 0001 0010 0100 1000 0110
Підготовлене повідомлення розбиваємо на блоки по 16 бітів:
b1: 1100 0110 0001 0100
b2: 1101 1110 0101 0101
b3: 1110 1011 0110 0001
b4: 0010 0100 1000 0110
Після цього виконаємо інверсію першого блоку:
b1: 0011 1001 1110 1011
b2: 1101 1110 0101 0101
b3: 1110 1011 0110 0001
b4: 0010 0100 1000 0110
Реалізуємо для отриманих блоків b1, b2, b3, b4 операцію XOR таким
чином:
b12 = b1⊕ b2; b23= b12 ⊕ b3; b34 = b23⊕ b4.
В результаті реалізації наступних перетворень:
b12: 1110 0111 1011 1110
b23: 0000 1100 1101 1111
b34: 0010 1000 0101 1001 – значення хеш-функції.
Для прикладу демонстрації якісних параметрів роботи створеної хеш-
функції, порівняємо результати її роботи з програмними реалізаціями
популярних функцій типу SHA-1 і MD5.
3.2 Програмна реалізація алгоритму розробленої криптографічної
хеш-функції
Для перевірки наведених вище хеш-функцій на наявність колізій було
реалізовано відповідну програму мовою Python.
З метою порівняння результатів роботи розробленої хеш-функції з
аналогічними за призначенням та принципом проведення згортки функції
MD5 та SHA-1. Основною характеристикою якості проведення перетворень
для хеш-функції, як вже було відмічено в розділі 2, є відсутність або
мінімальна присутність колізій (у ідеальної хеш-функції результат на виході
повинен мати рівномірну дисперсію і не підпорядковуватися конгруентному
закону формування результату).
Метод для перевірки можливих колізій для хеш-функції MD5 в ній
реалізований наступним чином:
Код програми:
Метод для перевірки можливих колізій для хеш-функції SHA-1 в ній
реалізований наступним чином:
Метод для перевірки можливих колізій розробленої в роботі хеш-
функції в ній реалізований наступним чином:
Основна програма, яка реалізує:
1. Розроблений алгоритм хешування.
2. Програмну реалізації хеш-функцій MD5, SHA-1 для зняття
порівняльних характеристик розробленого і даних алгоритмів хешування
3. Інтерфейс виводу результатів роботи.
В якості допоміжних модулів в основній програмі використано створені
раніше класи filecheck, random, randrange, hashlib.
3.3 Результати роботи та порівняння отриманих характеристик
розробленої криптографічної хеш-функції
Результати роботи програмної реалізації запропонованої нової хеш-
функції для різної кількості вхідних повідомлень наведені на рис.3.1-3.6.
Далі продемонструємо результати роботи програмної реалізації
запропонованої хеш-функції на 6 фіксованих вхідних наборів даних у
порівнянні з результатами функцій – аналогів SHA-1 і MD5.
Рис.3.1 – Результати роботи програми для 500 заданих повідомлень
Рис.3.2 – Результати роботи програми для 1000 заданих повідомлень
Рис.3.3 – Результати роботи програми для 2000 заданих повідомлень
Рис.3.4 – Результати роботи програми для 5000 заданих повідомлень
Рис.3.5 – Результати роботи програми для 7500 заданих повідомлень
Рис.3.6 – Результати роботи програми для 10000 заданих повідомлень
Отже, згідно з результатами роботи програми можна дійти висновку, що
створена користувацька хеш-функція не є такою криптостійкою з точки зору
наявних колізій порівняно з існуючими алгоритмами MD5 та SHA-1. Поява
колізії (порівняно зі стандартними функціями MD5 і SHA-1) в розробленому
алгоритмі можна пояснити декількома причинами:
1. Довжина функції в 16 біт порівняно з 32 бітами у стандартних
функціях MD5 і SHA-1.
2. Відсутність механізмів корегування та нормалізації вхідних блоків
(дописування бітів контрольних сум, криптографічна сіль тощо).
3. Недосконалий механізм бітової згортки.
Отже, необхідно створити підходи, щодо усунення отриманих в ході
програмного тестування користувацького алгоритму недоліків.
3.4 Вирішення проблеми колізій в хеш-функціях
Хоча проблеми колізій характерна для більшості функцій типу
«згортки». В деяких спеціальних випадках вдається уникнути колізій загалом.
Наприклад, якщо всі ключі елементів відомі заздалегідь (або дуже рідко
змінюються), то для них можна знайти деяку досконалу хеш-функцію, яка
розподілить їх по комірках хеш-таблиці без колізій. Хеш-таблиці, що
використовують подібні хеш-функції, не потребують механізму вирішення
колізій, і називаються хеш-таблицями з прямою адресацією.
3.4.1 Методи боротьби з колізіями в хеш-таблицях
Розв’язок колізій в хеш-таблиці – це завдання, яке розв'язується
декількома способами: метод ланцюжків, відкрита адресація тощо. Дуже
важливо зводити кількість колізій до мінімуму, оскільки це збільшує час
роботи з хеш-таблицями.
Більшість перших робіт, що описують хешування, присвячені методам
боротьби з колізіями в хеш-таблицях [19,20]. Перші хеш-функції
застосовувалися під час пошуку тексту у файлах великого розміру. Відомі два
основних методи боротьби з колізіями в хеш-таблицях:
1. Спосіб ланцюжків (метод прямого зв'язування);
2. Метод відкритої адресації.
3. Лінійне розв’язання колізій.
4. Криптографічна сіль.
Якщо використовується спосіб ланцюжків, то кожна комірка i масиву H
містить покажчик початку списку всіх елементів, хеш-код яких дорівнює i, або
вказує на їх відсутність. Колізії призводять до того, що з'являються списки
розміром більше одного елемента.
Залежно від того, чи потрібна унікальність значень операції вставки,
вона буде працювати різний час. Якщо це не важливо, то можна
використовувати список, час вставки в який буде в гіршому випадку
дорівнювати O(1). Інакше необхідно перевіряти, чи є у списку даний елемент,
а потім у разі його відсутності його необхідно додати. В такому разі вставка
елемента у найгіршому випадку буде виконана за час O(n).
При лінійному розв’язанні колізій час роботи пошуку у найгіршому
випадку пропорційно до довжини списку. Але, якщо всі n ключів
захешувалися в одну й ту саму комірку (створивши список довжиною n), то
час пошуку дорівнюватиме Θ(n) плюс час обчислення хеш-функції, що
нітрохи не краще, ніж використання зв'язкового списку для зберігання всіх nn
елементів.
Видалення елемента може бути виконано за час O(1), як і вставка при
використанні двозв'язкового списку.
Криптографічна «сіль» використовується для захисту паролів та
цифрових підписів від підробки створено кілька методів, що працюють навіть
у тому випадку, якщо криптоаналітику відомі способи побудови колізій для
використовуваної хеш-функції. Одним із таких методів є додавання до вхідних
даних так званої криптографічної "солі" - рядків випадкових даних; іноді
"сіль" додається і до хеш-коду. Додавання випадкових даних значно
ускладнює аналіз підсумкових хеш-таблиць. Цей спосіб, наприклад,
використовується при збереженні паролів у UNIX-подібних операційних
системах.
В запропонованому алгоритмі колізій можна позбутися шляхом
вдосконалення наявного алгоритму, наприклад роботою з більшими за
розмірами вхідними блоками, укладенням процесу згортки повідомлення,
збільшенням кількості ітерацій та розміру самого хешу.
Відредагувавши таким чином користувацьку хеш-функцію, що
повідомлення ділиться на блоки по 32 біти та хеш становить 32 біти, маємо
відповідний результат (рис.3.7-3.12):
Рис.3.7 – Результати роботи програми для 500 заданих повідомлень
Рис.3.8 – Результати роботи програми для 1000 заданих повідомлень
Рис.3.9 – Результати роботи програми для 2000 заданих повідомлень
Рис.3.10 – Результати роботи програми для 5000 заданих повідомлень
Рис.3.11 – Результати роботи програми для 7500 заданих повідомлень
Рис.3.12 – Результати роботи програми для 10000 заданих повідомлень
В таблиці 3.1 наведено результати тестування на появу колізій в двох
стандартних хеш-функціях – MD5, SHA-1 і розробленої криптографічної хеш-
функції (User). Як видно з наведених у таблиці даних, такі методи боротьби з
колізіями в хеш-таблицях, як більшими за розмірами вхідними блоками,
укладенням процесу згортки повідомлення, збільшенням кількості ітерацій та
розміру самого хешу та модифікація процесу підготовки блоків дають змогу
значно покращити якість роботи розробленої хеш-функції.
Таблиця 3.1 – Порівняння наявності колізій в розробленій хеш функції (User)
та існуючих функціях MD5 і SHA-1
Кількість User (16- User (32- MD5 SHA-1
повідомлень бітний хеш) бітний
хеш)
500 2 - - -
1000 6 - - -
2000 25 - - -
5000 162 - - -
7500 384 - - -
10000 694 - - -
З даних, наведених у таблиці 3.1, можна побачити, що при внесенні
коректив в алгоритм роботи нової функції вже на 32 бітних вихідних
значеннях і проведенні 10000 тестів колізій не зафіксовано (рис.3.13).
Для отримання найбільш повних даних всього діапазону значень функції в
даному випадку слід перебрати 232 = 4 294 967 296 даних. І навіть при повному
переборі кількість зафіксованих колізій залишилася на рівні функцій аналогів
- SHA-1 і MD5.
На рис.3.13 наведена графічна залежність кількості отриманих колізій
від кількості повідомлень (тестовано на 10000 прикладах) для розробленої
функції (user).
Залежність числа колізій від кількості повідомлень
для 16-бітної користувацької хеш -функції
700
600
500
400
300
200
100
0
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
КІЛЬКІСТЬ ПОВІДОМЛЕНЬ
Рис.3.13 – графічна залежність кількості колізій в 16 бітному варіанті
розробленої хеш-функції (user) від кількості тестових повідомлень
Як видно з рис.3.13 початкова якість і стійкість до появи колізій у
розробленої функції є незадовільною при довжині результату у 16 біт.
Кількість появи колізій перевищує лінійний показник типу y=kx. А при
збільшенні кількості прикладів кутовий коефіцієнт, що описує графічну
залежність збільшується по закону, близькому до експоненційного. В разі ж
внесення покращень якості через застосовані методи боротьби з колізіями в
хеш-таблицях, якість функції стосовно появи колізій значно покращилася. Як
ЧИСЛО КОЛІЗІЙ
видно з даних, наведених в таблиці 3.1 для функції User (32-бітний хеш) на
всьому проміжку тестових повідомлень (аж до 10000 включно) не зафіксовано
жодної наявної колізії. Це говорить про наближення даної функції до
криптографічно ідеальної по показнику рівномірності дисперсії вихідних
значень.
ВИСНОВКИ
Отже, в результаті проведених при розробці криптографічної хеш-
функції досліджень можна переконатися, що однією з ключових вимог до хеш-
функцій із точки зору криптостійкості є мінімізація так званих колізій.
На практичному прикладі за допомогою відповідного програмного
рішення мовою Python можна дійти висновку, що:
- існуючих алгоритмів хешування MD5 і SHA-1 є надійними
- існує пряма залежності вірогідності появи колізій від розміру
хешу.
- після проведення модернізації алгоритму запропонованої хеш-
функції, кількість зафіксованих випадків колізій є порівняною з аналогами.
Модернізація початкової криптографічної хеш-функції говорить, про
гарну якість запропонованого алгоритму функції.
В зв’язку з тим, що для запропонованої функції не описано жодного
варіанту успішних криптоатак, вона є легкою при апаратній реалізації, можна
вважати дану розробку перспективною в прикладних застосуваннях.
На майбутнє слід перевірити стійкість отриманої функції до атаки по
«веселковим» таблицям та виробити ad-hoc метод криптоаналізу.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Брюс Шнайер. Прикладная криптография. Протоколы, алгоритмы,
исходные тексты на языке Си. — М.: Триумф, 2002. — ISBN 5-89392-055-4.
2. Лапонина О.Р. Криптографические основы безопасности. — М.:
Интернет-университет информационных технологий - ИНТУИТ.ру, 2004. —
С. 320. — ISBN 5-9556-00020-5.
3. П. В. Кравчук. Аналіз застосування функції гешування у
технології BLOCKCHAIN / П. В. Кравчук, І. Д. Горбенко, А. І. Пушкарьов //
Прикладная радиоэлектроника, 2018, Том 17, № 3, 4. – С.147-151.
4. Andreas M. Antonopoulos Mastering Bitcoin: Unlocking Digital
Cryptocurrencies / Andreas M. Antonopoulos – K.: NGITS, 2014. – C. 10–150.
5. Don Tapscott, Alex Tapscott Blockchain Revolution: How the
Technology Behind Bitcoin is Changing Money, Business, and the World / Don
Tapscott, Alex Tapscott Blockchain – K.: Information Systems, 2016 – C. 65–102.
6. Геш-функція. Картка даних терміну: [арх. 23.09.2017] //
Українське агентство зі стандартизації. — Дата звернення: 23.09.2017.
7. Лекция 6 БСит [інтернет-ресурс]. Режим доступу:
https://bit.nmu.org.ua/ua/student/metod/cryptology/%D0%BB%D0%B5%D0%BA
%D1%86%D0%B8%D1%8F17.pdf.м— Дата звернення: 13.04.2022.
8. Ramakrishna, M. V.; Zobel, Justin (1997). "Performance in Practice of
String Hashing Functions". Database Systems for Advanced Applications '97.
DASFAA 1997. pp. 215–224. CiteSeerX 10.1.1.18.7520.
doi:10.1142/9789812819536_0023. ISBN 981-02-3107-5. S2CID 8250194.
Retrieved 2021-12-06.
9. Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, Yarik
Markov. The first collision for full SHA-1. CWI Amsterdam/Google Research.
10. D. Eastlake. US Secure Hash Algorithm 1 (SHA1), Cisco Systems.
September 2001, 3d Motorola, Network Working Group. Access mode:
https://www.ietf.org/rfc/rfc3174.txt
11. Криптоаналіз хеш-функцій [інтернет-ресурс]. Режим доступу:
https://studref.com/403722/informatika/kriptoanaliz_funktsiy - — Дата звернення:
14.04.2022.
12. Хэш-функции, хеш и хеширование, Криптографическая соль.
Інтернет-ресурс. Режим доступу:- https://intellect.icu/khesh-funktsii-khesh-i-
kheshirovanie-kriptograficheskaya-sol-5748— Дата звернення: 15.04.2022.
13. R.C. Merkle. A Certified Digital Signature. In Advances in Cryptology
- CRYPTO '89 Proceedings, Lecture Notes in Computer Science Vol. 435, G.
Brassard, ed, Springer-Verlag, 1989, pp. 218-238.
14. I. Damgård. A Design Principle for Hash Functions. In Advances in
Cryptology - CRYPTO '89 Proceedings, Lecture Notes in Computer Science Vol.
435, G. Brassard, ed, Springer-Verlag, 1989, pp. 416-427.
15. G. Leurent. SHA-1 is a Shambles / G. Leurent , Thomas Peyrin //
Computer Science. Published 2020 Access mode:
https://www.semanticscholar.org/paper/SHA-1-is-a-Shambles-Leurent-
Peyrin/b3acfb1793ba495b165053e90c60030aac75e22d
16. Valeriy, L., Andrii, S., Vladyslav, K., Elena, P., Anatolii, C., Nataliia,
U. (2022). Evaluation of the Probability of Breaking the Electronic Digital Signature
Elements. In: Karrupusamy, P., Balas, V.E., Shi, Y. (eds) Sustainable
Communication Networks and Application. Lecture Notes on Data Engineering and
Communications Technologies, vol 93. Springer, Singapore.
https://doi.org/10.1007/978-981-16-6605-6_48
17. Vincent Rijmen and Elisabeth Oswald. Update on SHA-1. Access
mode: https://eprint.iacr.org/2005/010.pdf
18. Pasini, Sylvain ; Vaudenay, Serge. Hash-and-Sign with Weak Hashing
Made Secure. Lecture Notes in Computer Science, 4586. 12th Australasian
Conference on Information Security and Privacy: ACISP '07, Townsville,
Queensland, Australia, July 2-4, 2007. https:// doi:10.1007/978-3-540-73458-1_25
19. Lu, Yi; Vaudenay, Serge; Meier, Willi; Ding, Liping; Jiang, Jianchun.
Synthetic Linear Analysis: Improved Attacks on CubeHash and Rabbit. Lecture
Notes in Computer Science, CISC, Seoul, Korea, November 30 - December 2, 2011.
7259. Pp. 248-260. https:// doi: 10.1007/978-3-642-31912-9_17
20. RainbowCrack. 2020, RainbowCrack Project. Access mode:
http://project-rainbowcrack.com/