MD5 (Message Digest 5) — 128-бітний алгоритм хешування, розроблений професором Рональдом Л. Рівестом в 1991 році. Призначений для створення «відбитків» або «дайджестів» повідомлень довільної довжини. Прийшов на зміну MD4, що був недосконалим. Описаний в RFC 1321. З 2011 року відповідно RFC 6151 алгоритм вважається ненадійним.
У 2004 році китайські дослідники Сяоюнь Ван (Xiaoyun Wang), Денгуо Фен (Dengguo Feng), Сюецзя Лай (Xuejia Lai) і Хонбо Ю (Hongbo Yu) повідомили про знаходження ними вразливості в алгоритмі, що дозволяє за невеликий час (1 годину на кластері IBM p690) знаходити колізії хеш-функцій.
У 2006 році чеський дослідник Властимил Клима опублікував алгоритм, що дозволяє знаходити колізії з довільним початковим вектором (A,B,C,D) на звичайному комп'ютері за лічені хвилини, цей метод було названо «тунелюванням».
2009 року підрозділ Національного управління кібербезпеки США [en] рекомендував відмовитися від застосування цього алгоритму через виявлені вразливості Відповідний RFC 6151 було опубліковано в березні 2011 року.
Одною базовою вимогою для будь-якої криптографічної хеш-функції є те, що має бути неможливо знайти два конкретні повідомлення, які хешують одне значення. MD5 не задовільняє цієї вимоги. Такі колізії можуть виявлятися за секунди на звичайному настільному комп'ютері.
На 2023 рік, MD5 все ще широко використовується,[] незважаючи на свої вразливості.
Використання MD5
Цей розділ треба для відповідності Вікіпедії. (квітень 2021) |
Цей розділ не містить . (квітень 2021) |
В іншому мовному розділі є повніша стаття MD5#Applications(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської. (квітень 2021)
|
Вибірки повідомлень MD5 широко використовувались у світі програмного забезпечення для гарантування правильної передачі файла. Наприклад, файлові сервери часто надають попередньо підраховану контрольну суму MD5 (відому як md5sum) для файлів, так що користувач може порівняти контрольну суму завантаженого файла з нею. Більшість юніксових операційних систем включають утиліти MD5 до своїх дистрибутивів. Користувачі Windows можуть використовувати інтегровану функцію PowerShell "Get-FileHash", інсталювати утиліту Microsoft або використовувати сторонні програми.
Оскільки дуже легко генерувати колізії у MD5, особа, яка створила файл, може створити другий файл із такою ж контрольною сумою, тому цей прийом не може захистити від деяких форм зловмисного втручання. У деяких випадках контрольній сумі не можна довіряти (наприклад, якщо вона була отримана за тим самим каналом, що і завантажений файл), у цьому випадку MD5 може забезпечити лише функціональність перевірки помилок: він розпізнає пошкоджене або неповне завантаження, що часто трапляється при завантаженні великих файлів.
Історично MD5 використовувався для зберігання одностороннього хешу пароля, часто з розтягуванням ключів. NIST не включає MD5 у свій список рекомендованих хешів для зберігання паролів.
MD5 також використовується в галузі електронних розслідувань, щоб надати унікальний ідентифікатор для кожного документа, яким обмінюються під час юридичного розслідування. Цей метод може бути використаний для заміни системи нумерації штампів Бейтса, яка використовувалася протягом десятиліть під час обміну паперовими документами. Як і вище, слід відмовляти від цього способу через легкість атак щодо створення колізій.
Алгоритм MD5
Початковий етап підготовки
- Вхідні дані вирівнюються так, щоб їхній розмір можна було порівняти з 448 по модулю з 512. Спочатку дописують одиничний біт (навіть якщо довжина порівняна з 448), далі необхідна кількість нульових бітів .
- Дописування 64-бітного представлення довжини даних по вирівнюванню. Якщо довжина перевищує , то дописують молодші біти.
Допоміжні таблиці та функції
- Ініціалізуть 4 змінних розміром по 32 біта:
- А = 01 23 45 67;
- В = 89 AB CD EF;
- С = FE DC BA 98;
- D = 76 54 32 10.
Вирівнювані дані розбиваються на блоки по 32 біта, і кожен проходить 4 раунди з 16 операторів. Всі оператори однотипні і мають вигляд: [abcd k s i], визначений як , де X - блок даних, а T[1..64] - 64-елементна таблиця, побудована наступним чином: , s - циклічний зсув вліво на s біт отриманого 32-бітного аргументу.
- В першому раунді FunF(X, Y, Z) = XY v (not X)Z
- В другому раунді FunG(X, Y, Z) = XZ v (not Z)Y.
- В третьому раунді FunН(Х, Y, Z) = Х xor Y xor Z.
- В четвертому раунді FunI(Х, Y, Z) = Y xor (X v (not Z)).
Циклічна процедура обчислення
Саме обчислення проходить наступним чином:
- Зберігаються значення A, B, C і D, що залишились після операцій з попередніми блоками(або їх початкові значення якщо блок перший)
AA = A
BB = B
CC = C
DD = D
Раунд 1
/*[abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4] [ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8] [ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12] [ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]
Раунд 2
/*[abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20] [ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24] [ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28] [ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]
Раунд 3
/*[abcd k s i] a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36] [ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40] [ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44] [ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48]
Раунд 4
/*[abcd k s i] a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ [ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52] [ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56] [ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60] [ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64]
Проміжний результат
Виконати наступні операції
A = AA + A B = BB + B C = CC + C D = DD + D
Після цього перевірити, чи є ще блоки, якщо є, то повторюють циклічну процедуру обчислення для наступного 32-х бітового блоку.
Результат
Після обчислення для всіх блоків даних, отримуємо кінцевий хеш у регістрах A B C D. Якщо вивести слова у зворотному порядку DCBA, то отримаємо MD5 хеш.
MD5-хеші
Хеш містить 128 біт (16 байт) і зазвичай представляється як послідовність з 32 шістнадцяткових цифр.
Кілька прикладів хешу:
MD5 ("md5") = 1bc29b36f623ba82aaf6724fd3b16718
Навіть невелика зміна вхідного повідомлення (у нашому випадку на один біт: ASCII символ «5» з кодом 0x35 16 = 00011010 '1 ' 2 замінюється на символ «4» з кодом 0x34 16 = 00011010 '0 ' 2 ) призводить до повної зміни хешу. Така властивість алгоритму називається лавинним ефектом.
MD5 ("md4") = c93d3bf7a7c4afe94b64e30c2ce39f4f
Приклад MD5-хешу для «нульового» рядка:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
Імплементації і використання
Наступні криптографічні бібліотеки підтримують MD5:
- Botan
- Bouncy Castle
- [en]
- [en]
- Libgcrypt
- [en]
- OpenSSL
- wolfSSL
Джерела
- Xiaoyun Wang and Dengguo Feng and Xuejia Lai and Hongbo Yu (received 16 Aug 2004, last revised 17 Aug 2004). . Cryptology ePrint Archive: Report 2004/199. Архів оригіналу за 9 червня 2020. Процитовано 12 листопада 2018.
- Philip Hawkes and Michael Paddon and Gregory G. Rose (13 жовтня 2004). . Cryptology ePrint Archive: Report 2004/264. Архів оригіналу за 5 листопада 2018. Процитовано 12 листопада 2018.
- Vlastimil Klima (received 18 Mar 2006, last revised 17 Apr 2006). . Cryptology ePrint Archive: Report 2006/105. Архів оригіналу за 5 листопада 2018. Процитовано 12 листопада 2018.
- . Software Engineering Institute. Original Release Date: 2008-12-31; Last Revised: 2009-01-21. Архів оригіналу за 12 листопада 2018. Процитовано 12 листопада 2018.
Посилання
- RFC 1321
- Generate MD5 Online (онлайн сервіс для генерування MD5)[недоступне посилання з серпня 2019](англ.)
Це незавершена стаття з криптографії. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
MD5 Message Digest 5 128 bitnij algoritm heshuvannya rozroblenij profesorom Ronaldom L Rivestom v 1991 roci Priznachenij dlya stvorennya vidbitkiv abo dajdzhestiv povidomlen dovilnoyi dovzhini Prijshov na zminu MD4 sho buv nedoskonalim Opisanij v RFC 1321 Z 2011 roku vidpovidno RFC 6151 algoritm vvazhayetsya nenadijnim U 2004 roci kitajski doslidniki Syaoyun Van Xiaoyun Wang Denguo Fen Dengguo Feng Syueczya Laj Xuejia Lai i Honbo Yu Hongbo Yu povidomili pro znahodzhennya nimi vrazlivosti v algoritmi sho dozvolyaye za nevelikij chas 1 godinu na klasteri IBM p690 znahoditi koliziyi hesh funkcij U 2006 roci cheskij doslidnik Vlastimil Klima opublikuvav algoritm sho dozvolyaye znahoditi koliziyi z dovilnim pochatkovim vektorom A B C D na zvichajnomu komp yuteri za licheni hvilini cej metod bulo nazvano tunelyuvannyam 2009 roku pidrozdil Nacionalnogo upravlinnya kiberbezpeki SShA en rekomenduvav vidmovitisya vid zastosuvannya cogo algoritmu cherez viyavleni vrazlivosti Vidpovidnij RFC 6151 bulo opublikovano v berezni 2011 roku Odnoyu bazovoyu vimogoyu dlya bud yakoyi kriptografichnoyi hesh funkciyi ye te sho maye buti nemozhlivo znajti dva konkretni povidomlennya yaki heshuyut odne znachennya MD5 ne zadovilnyaye ciyeyi vimogi Taki koliziyi mozhut viyavlyatisya za sekundi na zvichajnomu nastilnomu komp yuteri Na 2023 rik MD5 vse she shiroko vikoristovuyetsya dzherelo nezvazhayuchi na svoyi vrazlivosti Vikoristannya MD5Cej rozdil treba vikifikuvati dlya vidpovidnosti standartam yakosti Vikipediyi Bud laska dopomozhit dodavannyam dorechnih vnutrishnih posilan abo vdoskonalennyam rozmitki statti kviten 2021 Cej rozdil ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cej rozdil dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno kviten 2021 V inshomu movnomu rozdili ye povnisha stattya MD5 Applications angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi kviten 2021 Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad Android ROMs vikoristovuyut takij tip kontrolnoyi sumi Vibirki povidomlen MD5 shiroko vikoristovuvalis u sviti programnogo zabezpechennya dlya garantuvannya pravilnoyi peredachi fajla Napriklad fajlovi serveri chasto nadayut poperedno pidrahovanu kontrolnu sumu MD5 vidomu yak md5sum dlya fajliv tak sho koristuvach mozhe porivnyati kontrolnu sumu zavantazhenogo fajla z neyu Bilshist yuniksovih operacijnih sistem vklyuchayut utiliti MD5 do svoyih distributiviv Koristuvachi Windows mozhut vikoristovuvati integrovanu funkciyu PowerShell Get FileHash instalyuvati utilitu Microsoft abo vikoristovuvati storonni programi Oskilki duzhe legko generuvati koliziyi u MD5 osoba yaka stvorila fajl mozhe stvoriti drugij fajl iz takoyu zh kontrolnoyu sumoyu tomu cej prijom ne mozhe zahistiti vid deyakih form zlovmisnogo vtruchannya U deyakih vipadkah kontrolnij sumi ne mozhna doviryati napriklad yaksho vona bula otrimana za tim samim kanalom sho i zavantazhenij fajl u comu vipadku MD5 mozhe zabezpechiti lishe funkcionalnist perevirki pomilok vin rozpiznaye poshkodzhene abo nepovne zavantazhennya sho chasto traplyayetsya pri zavantazhenni velikih fajliv Istorichno MD5 vikoristovuvavsya dlya zberigannya odnostoronnogo heshu parolya chasto z roztyaguvannyam klyuchiv NIST ne vklyuchaye MD5 u svij spisok rekomendovanih heshiv dlya zberigannya paroliv MD5 takozh vikoristovuyetsya v galuzi elektronnih rozsliduvan shob nadati unikalnij identifikator dlya kozhnogo dokumenta yakim obminyuyutsya pid chas yuridichnogo rozsliduvannya Cej metod mozhe buti vikoristanij dlya zamini sistemi numeraciyi shtampiv Bejtsa yaka vikoristovuvalasya protyagom desyatilit pid chas obminu paperovimi dokumentami Yak i vishe slid vidmovlyati vid cogo sposobu cherez legkist atak shodo stvorennya kolizij Algoritm MD5Blok shema roboti algoritmu MD5 Pochatkovij etap pidgotovki Vhidni dani virivnyuyutsya tak shob yihnij rozmir mozhna bulo porivnyati z 448 po modulyu z 512 Spochatku dopisuyut odinichnij bit navit yaksho dovzhina porivnyana z 448 dali neobhidna kilkist nulovih bitiv Dopisuvannya 64 bitnogo predstavlennya dovzhini danih po virivnyuvannyu Yaksho dovzhina perevishuye 2 64 1 displaystyle 2 64 1 to dopisuyut molodshi biti Dopomizhni tablici ta funkciyi Inicializut 4 zminnih rozmirom po 32 bita A 01 23 45 67 V 89 AB CD EF S FE DC BA 98 D 76 54 32 10 Virivnyuvani dani rozbivayutsya na bloki po 32 bita i kozhen prohodit 4 raundi z 16 operatoriv Vsi operatori odnotipni i mayut viglyad abcd k s i viznachenij yak a b a F u n b c d X k T lt i gt lt lt lt s displaystyle a b a Fun b c d X k T lt i gt lt lt lt s de X blok danih a T 1 64 64 elementna tablicya pobudovana nastupnim chinom T i i n t 4294967296 s i n i displaystyle T i int 4294967296 sin i s ciklichnij zsuv vlivo na s bit otrimanogo 32 bitnogo argumentu V pershomu raundi FunF X Y Z XY v not X Z V drugomu raundi FunG X Y Z XZ v not Z Y V tretomu raundi FunN H Y Z H xor Y xor Z V chetvertomu raundi FunI H Y Z Y xor X v not Z Ciklichna procedura obchislennya Same obchislennya prohodit nastupnim chinom Zberigayutsya znachennya A B C i D sho zalishilis pislya operacij z poperednimi blokami abo yih pochatkovi znachennya yaksho blok pershij AA A BB B CC C DD D Raund 1 abcd k s i a b a F b c d X k T i lt lt lt s ABCD 0 7 1 DABC 1 12 2 CDAB 2 17 3 BCDA 3 22 4 ABCD 4 7 5 DABC 5 12 6 CDAB 6 17 7 BCDA 7 22 8 ABCD 8 7 9 DABC 9 12 10 CDAB 10 17 11 BCDA 11 22 12 ABCD 12 7 13 DABC 13 12 14 CDAB 14 17 15 BCDA 15 22 16 Raund 2 abcd k s i a b a G b c d X k T i lt lt lt s ABCD 1 5 17 DABC 6 9 18 CDAB 11 14 19 BCDA 0 20 20 ABCD 5 5 21 DABC 10 9 22 CDAB 15 14 23 BCDA 4 20 24 ABCD 9 5 25 DABC 14 9 26 CDAB 3 14 27 BCDA 8 20 28 ABCD 13 5 29 DABC 2 9 30 CDAB 7 14 31 BCDA 12 20 32 Raund 3 abcd k s i a b a H b c d X k T i lt lt lt s ABCD 5 4 33 DABC 8 11 34 CDAB 11 16 35 BCDA 14 23 36 ABCD 1 4 37 DABC 4 11 38 CDAB 7 16 39 BCDA 10 23 40 ABCD 13 4 41 DABC 0 11 42 CDAB 3 16 43 BCDA 6 23 44 ABCD 9 4 45 DABC 12 11 46 CDAB 15 16 47 BCDA 2 23 48 Raund 4 abcd k s i a b a I b c d X k T i lt lt lt s ABCD 0 6 49 DABC 7 10 50 CDAB 14 15 51 BCDA 5 21 52 ABCD 12 6 53 DABC 3 10 54 CDAB 10 15 55 BCDA 1 21 56 ABCD 8 6 57 DABC 15 10 58 CDAB 6 15 59 BCDA 13 21 60 ABCD 4 6 61 DABC 11 10 62 CDAB 2 15 63 BCDA 9 21 64 Promizhnij rezultat Vikonati nastupni operaciyi A AA A B BB B C CC C D DD D Pislya cogo pereviriti chi ye she bloki yaksho ye to povtoryuyut ciklichnu proceduru obchislennya dlya nastupnogo 32 h bitovogo bloku Rezultat Pislya obchislennya dlya vsih blokiv danih otrimuyemo kincevij hesh u registrah A B C D Yaksho vivesti slova u zvorotnomu poryadku DCBA to otrimayemo MD5 hesh MD5 heshiHesh mistit 128 bit 16 bajt i zazvichaj predstavlyayetsya yak poslidovnist z 32 shistnadcyatkovih cifr Kilka prikladiv heshu MD5 md5 1bc29b36f623ba82aaf6724fd3b16718 Navit nevelika zmina vhidnogo povidomlennya u nashomu vipadku na odin bit ASCII simvol 5 z kodom 0x35 16 00011010 1 2 zaminyuyetsya na simvol 4 z kodom 0x34 16 00011010 0 2 prizvodit do povnoyi zmini heshu Taka vlastivist algoritmu nazivayetsya lavinnim efektom MD5 md4 c93d3bf7a7c4afe94b64e30c2ce39f4f Priklad MD5 heshu dlya nulovogo ryadka MD5 d41d8cd98f00b204e9800998ecf8427eImplementaciyi i vikoristannyaNastupni kriptografichni biblioteki pidtrimuyut MD5 Botan Bouncy Castle en en Libgcrypt en OpenSSL wolfSSLDzherelaXiaoyun Wang and Dengguo Feng and Xuejia Lai and Hongbo Yu received 16 Aug 2004 last revised 17 Aug 2004 Cryptology ePrint Archive Report 2004 199 Arhiv originalu za 9 chervnya 2020 Procitovano 12 listopada 2018 Philip Hawkes and Michael Paddon and Gregory G Rose 13 zhovtnya 2004 Cryptology ePrint Archive Report 2004 264 Arhiv originalu za 5 listopada 2018 Procitovano 12 listopada 2018 Vlastimil Klima received 18 Mar 2006 last revised 17 Apr 2006 Cryptology ePrint Archive Report 2006 105 Arhiv originalu za 5 listopada 2018 Procitovano 12 listopada 2018 Software Engineering Institute Original Release Date 2008 12 31 Last Revised 2009 01 21 Arhiv originalu za 12 listopada 2018 Procitovano 12 listopada 2018 PosilannyaRFC 1321 Generate MD5 Online onlajn servis dlya generuvannya MD5 nedostupne posilannya z serpnya 2019 angl Ce nezavershena stattya z kriptografiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi