Ім'я файлу: Криптографічні функції мови РНР.docx
Розширення: docx
Розмір: 607кб.
Дата: 15.05.2020
скачати

НАЦІОНАЛЬНА АКАДЕМІЯ ДЕРЖАВНОЇ ПРИКОРДОННОЇ

СЛУЖБИ УКРАЇНИ ІМЕНІ Б. ХМЕЛЬНИЦЬКОГО




КАФЕДРА ТЕЛЕКОМУНІКАЦІЙ ТА РАДІОТЕХНІКИ

Реферат з дисципліни:

«ВЕБ програмування»

Тема: «Криптографічна геш-функція»



Виконав: курсант Гуцуляк Р.П. 532 НГ

м. Хмельницький – 2018 р.

Зміст


  1. Криптографічна геш-функція ………………………………………………..3

  2. Властивості…………………………………………………………………....5

  3. Застосування…………………………………………………………...……...7

  4. Геш-функції засновані на блочних шифрах …..…………………………....8

  5. Будова Меркла-Демґарда ………………………………………………........9

  6. Використання в побудові інших криптографічних примітивів ...………..10

  7. Конкатенація криптографічних геш-функцій……………………………...11

  8. Висновок….……….…………………………………………………………13













































1.Криптографічна геш-функція


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

Ідеальна криптографічна геш-функція має чотири основні або значимі властивості:

  • легкість обчислення геш-значення для будь-якого повідомлення

  • нездійсненно утворити повідомлення для заданого геш-значення

  • нездійсненно змінити повідомлення без зміни геша

  • нездійсненно знайти два різних повідомлення з тим самим гешем

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



Криптографічна геш-функція (а саме, SHA-1) в роботі.

2.Властивості


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

Криптографічна геш-функція повинна витримувати всі відомі типи криптографічних атак. Щонайменше, вона повинна мати наступні властивості:

  • Першовзорова стійкість

для певного гешу {\displaystyle h\,} має бути складно знайти повідомлення{\displaystyle m\,}{\displaystyle h=\mathrm {hash} (m)\,}. Ця концепція стосується односторонньої функції. Функції, що не відповідають цій властивості вразливі до атак знаходження першовзору.

  • Друга першовзорова стійкість

Для певного входу {\displaystyle m_{1}\,}має бути складно знайти інший вхід {\displaystyle m_{2}\,}{\displaystyle \mathrm {hash} (m_{1})=\mathrm {hash} (m_{2})\,}. Цю властивість іноді називають слабка колізійна стйкість , і функцій, що не мають цієї властивості вразливі до атак знаходження першовзору другого роду.

  • Колізійна стійкість

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

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

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

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

Алгоритми контрольних сум, такі як CRC32 та інші циклічні надлишкові перевірки, спроектовані із дотриманням набагато слабших вимог, і зазвичай непридатні для використання як криптографічні геш-функції. Наприклад, CRC використовували для цілісності повідомлень в WEP стандарті шифрування, але була легко віднайдена атака, що використовувала лінійність контрольної суми.

Ступінь складності


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

В деяких теоретичних аналізах складність має особливе математичне значення, таке як нерозв'язний за асимптотичний поліноміальний час. Такі інтерпретації складності важливі у вивчанні доказово безпечних криптографічних геш-функцій, але зазвичай не мають сильного зв'язку з практичною безпекою. Наприклад, алгоритм експоненці́йного часу іноді може бути досить швидким для здійсненної атаки. І навпаки, алгоритм поліноміального часу (наприклад, такий що вимагає n20 кроків для ключа в n цифр) може бути заповільним для практичного використання.

3.Застосування

Перевірка цілісності файлів або повідомлень


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

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

Ідентифікатор файлу або даних


Геш-значення також може слугувати як спосіб надійного ототожнення файлів; декілька систем керування версіями, включно з GitMercurial і Monotone, використовують sha1sum різнотипного вмісту для унікального ототожнення. Геші використовують для ідентифікації фалів в peer-to-peer мережах спільного використання файлів. Наприклад, ed2k link, варіант геша MD4 поєднаний із розміром файлу, забезпечує достатню інформацію для знаходження джерела файлу, завантаження файлу і перевірки його вмісту. Інший приклад — це magnet-посилання. Такі файлові геші часто використовують як кореневі геші геш-списків або геш-дерев.

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

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

Псевдовипадкова генерація й утворення ключів


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

4.Геш-функції засновані на блочних шифрах


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

Методи нагадують режими операцій блочних шифрів зазвичай використовні для шифрування. Всі добре відомі геш-функції, включно з MD4MD5SHA-1 і SHA-2 побудовані зі складових подібних до блочних шифрів спроектованих для них, із гарантією, що отримана функція не бієктивна. Серед фіналістів змагання геш-функцій від NIST (SHA-3) присутні геш-функції зі складовими подібними до блочних шифрів (наприклад, Skein, BLAKE) та функції на основі інших дизайнів (Наприклад, JHKeccak).

Стандартний блочний шифр такий як AES можна використати замість цих спеціальних блочних шифрів; це може бути корисним коли вбудована система має забезпечувати шифрування і гешування з мінімальним за розміром кодом або розміром плати. Однак, такий підхід відбувається на дієвості і безпеці. Шифри в геш-функціях створені для гешування: вони використовують великі ключі і блоки, можуть дієво змінювати ключ щоблока, і розроблені і перевірені на стійкість до атак з пов'язаними ключами. Шифри загального призначення мають різні цілі. Зокрема, розміри ключа і блоку в AES роблять нетривіальним використання його для утворення довгих геш-значень; шифрування з AES стає менш дієвим коли ключ змінюється щоблока; і атака з пов'язаними ключами робить його менш безпечним для використання в геш-функціях ніж для шифрування.

5.Будова Меркла-Демґарда




Будова геша за Мерклом-Демґардом.

Геш-функція повинна бути в змозі перевести повідомлення довільної довжини в вихід встановленої довжини. Цього можна досягти через розбиття даних на вході в ряд блоків однакової довжини, і опрацювання їх послідовно із використанням односторонньої функції стискання. Функція стискання може бути розроблена для гешування або утворена з блочного шифру. Геш-функція побудована за будовою Меркла-Демґарда є настільки колізійно стійкою наскільки така її функція стискання; Будь-яку колізію геш-функції в цілому можна прослідити до колізії в функції стискання.

Останній оброблений блок також повинен бути однозначно довжинно-доповненим; це критично для безпеки побудови. Такий підхід зветься — будова Меркла-Демґарда. Найширше використовні геш-функції, включно з SHA-1 і MD5, мають такий вигляд.

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

6.Використання в побудові інших криптографічних примітивів


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

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

Так само як і блочні шифри можливо використовувати для будови геш-функцій, геш-функції можливо використовувати для побудови шифрів. Будови Luby-Rackoff із використанням геш-функцій можуть бути доказово безпечними, якщо підлегла функція безпечна. Також багато геш-функцій (включно з SHA-1 і SHA-2) побудовані із використанням спеціально розроблених блочних шифрів в будові Дейвіса-Меєра або іншій.

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

Деякі функції, такі як SkeinKeccak і RadioGatún видають довільної довжини потік і їх можна використати як потоковий шифр, хоча потоковий шифр також можна побудувати і з геш-функції з дайджестом встановленого розміру. Часто це роблять спочатку будуючи криптографічно безпечний генератор псевдовипадкових чисел і тоді використовуючи цей потік як ключ. Потоковий шифр SEAL, що використовує SHA-1 для побудови внутрішніх таблиць, які потім використовуються в генераторі ключа. Не надається гарантії, що SEAL так само сильний або слабкий як SHA-1.

7.Конкатенація криптографічних геш-функцій


Зчеплюючи виходи кількох геш-функцій ми отримуємо стійкість до колізій настільки високу як у найсильнішого з використаних алгоритмів. Наприкад, старіші версії TLS/SSL використовують об'єднані суми MD5 і SHA-1; це гарантувало, що метод віднайденя колізій в одній з цих функцій не дозволить підробити трафік захищений обома.

Для геш-функцій Меркла-Демгарда, зчеплена функція так само колізійно-стійка як і її найсильніша складова, але не більше Joux зауважив, що 2 колізії призводять до n колізій: якщо здійсненно знайти два повідомлення з однаковим гешем MD5, тоді фактично не більш складно знайти скільки завнодно повідомлень з таким самим гешем MD5. Посеред n повідомлень з однаковим гешем MD5, ймовірно трапиться колізія в SHA-1. Додаткова робота по знаходженню колізій SHA-1 поліноміальна. Цей довід підсумований Finney. Сучаснішій документ з повним доведенням безпечності такої поєднаної конструкції і чіткішим і повним поясненням викладеного.

Криптографічні геш-алгоритми


Існує велика кількість криптографічних геш-функцій, багато з них виявили вразливість і не повинні використовуватись. Навіть вдала атака проти послабленого варіанту може підірвати впевненість експертів і призвести до припинення застосування. Наприклад, в серпні 2004 знайшли слабкість в багатьох поширених на той час функціях, включно з SHA-0, RIPEMD і MD5. Це поставило питання про безпечність в перспективі геш-функцій отриамних на їх основі — зокрема, SHA-1 (посилена версія SHA-0), RIPEMD-128 і RIPEMD-160 (посилені версії RIPEMD). Ані SHA-0, ані RIPEMD не використовувались широко, бо були замінені на посилені версії.

Станом на 2009, найвживаніші криптографічні геш-функції це MD5 і SHA-1. Однак, MD5 зламали; атаку проти них використали для зламу SSL в 2008.

Геш-функції SHA-0 і SHA-1 розробило NSA. У лютому 2005, повідомили про успішну атаку на SHA-1, знаходження колізій за приблизно 269 операцій гешування, замість 280 очікуваних для 160-бітної геш-функції. В серпні 2005, повідомили про іншу успішну атаку на SHA-1, знаходження колізій за 263 операцій. Нові застосунки можуть уникнути ціього через використання наступних членів сім'ї SHA, таких як SHA-2, або використання підходів на кшталт випадкового гешування за якого вхід опрацьовується із якимсь випадковим значенням перед застосуванням геш-функції, які не потребують колізійної стійкості.

Однак, для гарантування тривалої міцності застосунків, що використовують геш-функції, запроваджено змагання з метою заміни для SHA-2, нова геш-функція отримає ім'я SHA-3 і стане федеральним стандартом у 2012.

У 2015 році в Україні розроблено геш-функцію Купина, яку введено в дію як національний стандарт ДСТУ 7564:2014 «Інформаційні технології. Криптографічний захист інформації. Функція хешування».

Висновок

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

У багатьох країнах прийняті національні стандарти шифрування.

У 2001 році в США прийнятий стандарт симетричного шифрування AES на основі алгоритму Rijndael з довжиною ключа 128, 192 і 256 біт. Алгоритм AES прийшов на зміну колишньому алгоритмові DES, який тепер рекомендовано використовувати тільки в режимі Triple DES (3DES).

В Україні діють такі стандарти криптографічних перетворень: ДСТУ ГОСТ 28147:2009 — шифрування та формування імітовставкиДСТУ 4145-2002 — електронний цифровий підпис та ГОСТ 34.311 — геш-функція.
скачати

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