Портал освітньо-інформаційних послуг «Студентська консультація»

  
Телефон +3 8(066) 185-39-18
Телефон +3 8(093) 202-63-01
 (093) 202-63-01
 studscon@gmail.com
 facebook.com/studcons

<script>

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)

  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

 

  ga('create', 'UA-53007750-1', 'auto');

  ga('send', 'pageview');

 

</script>

Хеш-функція

Предмет: 
Тип роботи: 
Курсова робота
К-сть сторінок: 
28
Мова: 
Українська
Оцінка: 

style="text-align: justify;">Умовні позначення.

 
1) RF - раундова функція, яка визначається за наступною таблицею.
Таблиця 2.1.1.
Раундові функції RF
 
2) tj - j-а 32-бітова частина блоку вихідного повідомлення Т зі зворотним порядком проходження байт;
3) ki - ціла частина константи, яка визначається за формулою
ki = 232 * | sin(i + 16 * (r - 1)) |, 
де i - номер ітерації циклу (i = 1..16);
r - номер раунду (r = 1..4).
Аргумент функції sin вимірюється в радіанах.
4) ⊞ - додавання за модулем 232.
5) <<< si – циклічний зсув вліво на si розрядів.
Використовувана 32-бітова частина блоку вихідного повідомлення tjі величина циклічного сдвигу вліво siзалежать ві номеру ітерації та приведені в таблиці 2.1.2.
Після 4 раундів нове (модифіковане) значення кожної з змінних ABCD складається (⊞) з вихідним (значенням змінної до 1-го раунду)[9].
Перестановка байт в змінних ABCD.
Після обробки всіх блоків вихідного повідомлення для кожної змінної виконується зворотна перестановка байт, і в результаті ми отримаємо наш MD5 хеш[10].
 
Таблиця 2.1.2.
Величини, що використовуються на етапі циклу раунду
 
2.2. Приклади MD5-хешей
 
Хеш містить 128 біт (16 байт) і зазвичай представляється як послідовність з 32 шістнадцятирічних цифр[11].
Кілька прикладів хешу:
Навіть невелика зміна вхідного повідомлення (в нашому випадку на один біт: ASCII символ «5» з кодом3516 = 0001101012замінюється на символ «4» з кодом 3416 = 0001101002) призводить до повної зміни хешу. Така властивість алгоритму називається лавинним ефектом[12].
MD5 ("md4") = C93D3BF7A7C4AFE94B64E30C2CE39F4F
Приклад MD5-хеша для «нульового» рядка:
MD5 ("") = D41D8CD98F00B204E9800998ECF8427E
 
2.2.Основи безпеки при використанні MD5
 
Цей стандарт кодування є одним з найпоширеніших методів захисту даних не тільки в прикладному, але і в веб-програмуванні. Тому не буде зайвим убезпечити свій md5 hash від навмисного злому.
Основним способом, що гарантує безпеку хешу вашого пароля, є використання «солі». Він заснований на додаванні до паролю кількох випадкових символів і подальшому хешуванні результату[13].
У багатьох мовах програмування для цього використовуються спеціальні класи і функції. Не є винятком з правил і серверні мови програмування.
Створити хеш-код MD5 в php можна за допомогою декількох функцій:
  • md5 () - в якості одного з параметрів приймає значення «солі»;
  • crypt () - на відміну від попередньої ця функція повністю автоматизує весь процес, в тому числі і генерування значення солі.
Її синтаксис:
string crypt ( string$str [, string $salt ] )
Приклад використання:
hash = crypt('password')
При використанні функції md5 () в PHP для завдання значення солі використовують методи генерації випадкових чисел. Наприклад, rand ():
 
Крім застосування «солі» було розроблено ще кілька методів захисту хешу MD5:
  • MD5 (Unix) - задане первинне значення проходить цикл хеширования близько 1000 разів;
  • MD5 (HMAC) - даний метод заснований на використанні в хешуванні спеціального ключа;
  • MD5 (Base64) - отриманий хеш ще раз кодуються за допомогою алгоритму Base64.
У цьому розділі наведено лише початкові відомості про забезпечення безпеки хешу, отриманого за допомогою цього алгоритму. Найпростішим і ефективним з них є використання унікального значення «солі», яка дозволяє істотно «насолити» зловмисникові і «підсолодити» життя власникузламуваного паролю[14].
 
3.НАДІЙНІСТЬ
 
Здавалося б, що MD5 повинна забезпечувати 100% гарантії невразливості і збереження даних. Але навіть цього виявилося мало. В ході проведених досліджень вченими було виявлено цілу низку прогалин і вразливостей в цьому вже поширеному на той момент алгоритмі. Основною причиною слабкої захищеності MD5 є відносно легке знаходження колізій при шифруванні.
Під колізією розуміють можливість отримання однакового результату обчислень хеш-функції при різних вхідних значеннях[15].
Простіше кажучи, чим більша ймовірність знаходження колізій, тим надійність використовуваного алгоритму нижче. Імовірність знаходження колізій при шифруванні більш надійними хеш-функціями практично зводиться до 0.
Тобто велика ймовірність розшифровки паролів MD5 є основною причиною відмови від використання цього алгоритму. Більшість криптологів (фахівці з шифрування даних) пов'язують низьку надійність MD5 з малою довжиною одержуваного хеш-коду.У 1996 році Ганс Доббертін знайшов псевдоколлізії в MD5, використовуючи певний започатковано буффер (ABCD). Також в 2004 році китайські дослідники Ван Сяоюн, Фен Денгуо, Лай Сюецзя і ЮйХунбо оголосили про виявлену ними уразливості в алгоритмі, що дозволяє за невеликий час (1 година на кластері IBM p690) знаходити колізії. Однак в 2006 році чеський дослідник Властіміл Клима опублікував алгоритм, що дозволяє знаходити колізії на звичайному комп'ютері з будь-яким початковим вектором (A, B, C, D) за допомогою методу, названого їм «туннелювання»[16].
 
3.1.ВзломMD5
 
В Інтернеті можна знайти багато програм, які обіцяють знайти рядок, для якої алгоритм MD5 видає заданий результат. Ці програми дійсно працюють. Раніше зазначалося, що відновити параметр неможливо. Як же працюють ці програми? Вони перебирають всі можливі рядки, застосовують до них алгоритм MD5, а потім порівнюють зі зразком. Якщо значення співпали, це означає, що програма знайшла необхідний рядок. Але у цих програм
Фото Капча