MD5 - MD5

MD5
Umumiy
DizaynerlarRonald Rivest
Birinchi marta nashr etilgan1992 yil aprel
SeriyaMD2, MD4, MD5, MD6
Shifrlash tafsiloti
Ovqat hazm qilish o'lchamlari128 bit
Blok o'lchamlari512 bit
TuzilishiMerkle-Damgård qurilishi
Davralar4[1]
Eng yaxshi jamoatchilik kriptanaliz
2013 yilda Xie Tao, Fanbao Lyu va Dengguo Feng tomonidan qilingan hujum MD5ni buzadi to'qnashuv qarshilik 2 ichida18 vaqt. Ushbu hujum oddiy kompyuterda bir soniyadan kamroq vaqt ichida ishlaydi.[2]MD5 moyil uzunlikni kengaytirish hujumlari.

The MD5 xabarlarni hazm qilish algoritmi keng tarqalgan xash funktsiyasi ishlab chiqarish 128-bit xash qiymati. MD5 dastlab a sifatida ishlatilishi uchun mo'ljallangan bo'lsa-da kriptografik xash funktsiyasi, bu keng zaifliklardan aziyat chekishi aniqlandi. U hali ham a sifatida ishlatilishi mumkin summa tekshirish uchun ma'lumotlar yaxlitligi, lekin faqat bilmagan holda korruptsiyaga qarshi. U boshqa kriptografik bo'lmagan maqsadlar uchun, masalan, bo'lingan ma'lumotlar bazasida ma'lum bir kalit uchun bo'limni aniqlash uchun mos keladi.[3]

MD5 tomonidan ishlab chiqilgan Ronald Rivest oldingi xash funktsiyasini almashtirish uchun 1991 yilda MD4,[4] va 1992 yilda ko'rsatilgan RFM 1321.

Har qanday kriptografik xash funktsiyasining asosiy talablaridan biri shu bo'lishi kerak hisoblash mumkin emas bir xil qiymatga aralashgan ikkita aniq xabarni topish. MD5 ushbu talabni katastrofik tarzda bajarmaydi; shunday to'qnashuvlar oddiy uy kompyuterida bir necha soniya ichida topish mumkin.

MD5 ning zaif tomonlari bu sohada ishlatilgan, eng shafqatsizlar Olovli zararli dastur 2012 yilda CMU dasturiy muhandislik instituti MD5 ni "kriptografik jihatdan buzilgan va undan keyingi foydalanish uchun yaroqsiz" deb hisoblaydi.[5]

2019 yildan boshlab, MD5 xavfsizlik bo'yicha mutaxassislar tomonidan yaxshi tasdiqlangan zaif tomonlari va eskirganligiga qaramay, keng qo'llanilmoqda.[6]

Tarix va kriptanaliz

MD5 - bu ketma-ket bittasi Xabar hazm qilish professor tomonidan ishlab chiqilgan algoritmlar Ronald Rivest ning MIT (Rivest, 1992). Analitik ish MD5 ning avvalgisini ko'rsatganda MD4 Ishonchsiz bo'lishi mumkin edi, Rivest 1991 yilda MD5-ni ishonchli almashtirish sifatida ishlab chiqardi. (Xans Dobbertin Keyinchalik MD4da zaif tomonlarni topdi.)

1993 yilda Den Boer va Bosselaers cheklangan bo'lishiga qaramay erta natijani berishdi "psevdo-to'qnashuv "MD5 ning siqish funktsiyasi; ya'ni ikki xil ishga tushirish vektorlari bir xil dayjest ishlab chiqaradi.

1996 yilda Dobbertin MD5 (Dobbertin, 1996) siqishni funktsiyasining to'qnashuvini e'lon qildi. Bu to'liq MD5 xash funktsiyasiga hujum bo'lmasa-da, kriptograflar almashtirishga o'tishni tavsiya qilishlari uchun etarlicha yaqin edi, masalan. SHA-1 yoki RIPEMD-160.

Xash qiymatining o'lchami (128 bit) a ni o'ylash uchun etarlicha kichik tug'ilgan kungi hujum. MD5CRK edi a tarqatilgan loyiha MD5 tug'ilgan kungi hujum yordamida to'qnashuvni topish orqali deyarli xavfli emasligini namoyish qilish maqsadida 2004 yil mart oyida boshlangan.

MD5CRK 2004 yil 17 avgustdan ko'p o'tmay tugadi to'qnashuvlar to'liq MD5 tomonidan e'lon qilindi Xiaoyun Vang, Dengguo Feng, Xuejia Lay va Hongbo Yu.[7][8] Ularning analitik hujumi faqat bir soat davom etganligi xabar qilingan IBM p690 klaster.[9]

2005 yil 1 martda, Arjen Lenstra, Xiaoyun Vang va Benne de Veger ikkitasining qurilishini namoyish etdi X.509 har xil ochiq kalitlarga ega bo'lgan sertifikatlar va bir xil MD5 xash qiymati, namoyish etiladigan amaliy to'qnashuv.[10] Qurilishda ikkala ochiq kalit uchun ham shaxsiy kalitlar mavjud edi. Bir necha kundan keyin, Vlastimil Klima MD5 to'qnashuvlarini bir necha soat ichida bitta daftar kompyuterida qurishga qodir bo'lgan takomillashtirilgan algoritmni tasvirlab berdi.[11] 2006 yil 18 martda Klima tunnel deb ataydigan usul yordamida bitta daftar kompyuterida to'qnashuvni bir daqiqada topishi mumkin bo'lgan algoritmni e'lon qildi.[12]

MD5 bilan bog'liq har xil RFC xatolari nashr etilgan. 2009 yilda, Amerika Qo'shma Shtatlarining kiber qo'mondonligi o'zlarining rasmiy timsolining bir qismi sifatida o'zlarining missiyalari bayonotining MD5 xash qiymatidan foydalanganlar.[13]

2010 yil 24 dekabrda Tao Xie va Dengguo Feng birinchi nashr etilgan bitta blokli (512 bitli) MD5 to'qnashuvini e'lon qilishdi.[14] (Oldingi to'qnashuv kashfiyotlari ko'p blokli hujumlarga asoslangan edi.) "Xavfsizlik sababli" Xie va Feng yangi hujum usulini oshkor qilmadilar. Ular kriptografik hamjamiyatga qarshi chiqish qilib, 2013 yil 1 yanvardan oldin 64 baytlik to'qnashuvni birinchi topuvchiga 10000 AQSh dollari miqdorida mukofot taklif qilishdi. Mark Stivens da'vatga javob berdi va to'qnash keladigan bitta blokli xabarlarni, shuningdek qurilish algoritmi va manbalarini e'lon qildi.[15]

2011 yilda axborot RFC 6151[16] MD5-dagi xavfsizlik masalalarini yangilash uchun tasdiqlangan[17] va HMAC-MD5.[18]

Xavfsizlik

MD5 xash funktsiyasining xavfsizligi jiddiy buzilgan. A to'qnashuv hujumi 2,6 gigagertsli Pentium 4 protsessori bo'lgan kompyuterda bir necha soniya ichida to'qnashuvlarni topishi mumkin (murakkabligi 224.1).[19] Bundan tashqari, a tanlangan-prefiks to'qnashuv hujumi Ikkala kirish uchun to'qnashuvni aniq prefikslar bilan bir necha soniya ichida amalga oshirish mumkin, bu kompyuterning texnik vositalaridan foydalanadi (murakkablik 239).[20]To'qnashuvlarni topish qobiliyatiga do'kondan foydalanish katta yordam berdi Grafik protsessorlar. NVIDIA GeForce 8400GS grafik protsessorida soniyada 16-18 million xeshni hisoblash mumkin. NVIDIA GeForce 8800 Ultra sekundiga 200 milliondan ortiq xeshlarni hisoblashi mumkin.[21]

Ushbu xash va to'qnashuv hujumlari jamoatchilikda turli vaziyatlarda, shu jumladan to'qnashgan hujjatlar fayllarida namoyish etildi[22][23] va raqamli sertifikatlar.[24] 2015 yildan boshlab MD5 hali ham keng qo'llanilganligi, xususan xavfsizlik tadqiqotlari va antivirus kompaniyalari tomonidan namoyish etilgan.[25]

2019 yildan boshlab to'rtdan bir qismi keng qo'llaniladi tarkibni boshqarish tizimlari uchun hali ham MD5 dan foydalanilganligi haqida xabar berilgan parolni aralashtirish.[6]

Xavfsizlik masalalariga umumiy nuqtai

1996 yilda MD5 dizaynida nuqson topildi. O'sha paytda bu o'lik zaif deb hisoblanmagan bo'lsa-da, kriptograflar boshqa algoritmlardan foydalanishni tavsiya qila boshladilar, masalan. SHA-1, bundan keyin ham zaif deb topildi.[26]2004 yilda MD5 emasligi ko'rsatildi to'qnashuvlarga chidamli.[27] Shunday qilib, MD5 shunga o'xshash dasturlar uchun mos emas SSL sertifikatlar yoki elektron raqamli imzolar raqamli xavfsizlik uchun ushbu xususiyatga tayanadigan. Shuningdek, 2004 yilda tadqiqotchilar MD5-dagi yanada jiddiy kamchiliklarni aniqladilar va ularni amalga oshirishni ta'rifladilar to'qnashuv hujumi - MD5 bir xil ishlab chiqaradigan juft yozuvlarni yaratish usuli soliq summasi.[7][28] 2005, 2006 va 2007 yillarda MD5ni buzishda keyingi yutuqlarga erishildi.[29] 2008 yil dekabr oyida bir guruh tadqiqotchilar ushbu texnikani SSL sertifikatining haqiqiyligini soxtalashtirish uchun ishlatishdi.[24][30]

2010 yildan boshlab CMU dasturiy muhandislik instituti MD5ni "kriptografik jihatdan buzilgan va undan keyingi foydalanish uchun yaroqsiz" deb hisoblaydi,[31] va AQSh hukumatining aksariyat dasturlari endi talab qiladi SHA-2 xash funktsiyalar oilasi.[32] 2012 yilda Olov zararli dastur Microsoft-ni soxtalashtirish uchun MD5-ning zaif tomonlaridan foydalangan elektron raqamli imzo.[33]

To'qnashuvning zaif tomonlari

1996 yilda MD5 siqishni funktsiyasida to'qnashuvlar topildi va Xans Dobbertin da yozgan RSA laboratoriyalari texnik yangiliklar, "Taqdim etilgan hujum hali MD5ning amaliy dasturlariga tahdid solmaydi, ammo bu juda yaqin ... kelajakda MD5 endi amalga oshirilmasligi kerak ... to'qnashuvlarga chidamli xash funktsiyasi zarur bo'lgan joyda."[34]

2005 yilda tadqiqotchilar juftlarni yaratishga muvaffaq bo'lishdi PostScript hujjatlar[35] va X.509 sertifikatlar[36] xuddi shu xash bilan. O'sha yili MD5-ning dizaynerlari Ron Rivest "md5 va sha1 ikkalasi ham aniq (to'qnashuv qarshiligi nuqtai nazaridan) buzilgan" deb yozgan edi.[37]

2008 yil 30-dekabrda bir guruh tadqiqotchilar 25-da e'lon qilishdi Xaos kongressi MD5 to'qnashuvlaridan qanday qilib MD5 xash tomonidan tekshirilganda qonuniy ko'rinadigan oraliq sertifikat vakolati sertifikatini yaratish uchun foydalanganliklari.[24] Tadqiqotchilar klasteridan foydalanganlar Sony PlayStation 3 birliklari EPFL yilda Lozanna, Shveytsariya[38] tomonidan berilgan oddiy SSL sertifikatini o'zgartirish uchun RapidSSL ishlaydiganga CA sertifikati ushbu emitent uchun, keyinchalik qonuniy ko'rinadigan va RapidSSL tomonidan chiqarilgan boshqa sertifikatlarni yaratish uchun ishlatilishi mumkin. VeriSign, RapidSSL sertifikatlari emitentlari, zaiflik e'lon qilingandan so'ng, RapidSSL uchun nazorat summasi algoritmi sifatida MD5 dan foydalangan holda yangi sertifikatlar berishni to'xtatganliklarini aytishdi.[39] Verisign MD5 yordamida imzolangan mavjud sertifikatlarni bekor qilishdan bosh tortgan bo'lsa-da, ekspluatatsiya mualliflari tomonidan ularning javoblari etarli deb topildi (Aleksandr Sotirov, Mark Stivens, Jeykob Appelbaum, Arjen Lenstra, Devid Molnar, Dag Arne Osvik va Benne de Veger).[24] Bryus Shnayer hujum haqida "biz MD5 buzilgan xash funktsiyasi ekanligini allaqachon bilganmiz" va "endi MD5ni hech kim ishlatmasligi kerak" deb yozgan.[40] SSL tadqiqotchilari "Bizning xohlagan ta'sirimiz shundan iboratki, sertifikatlashtirish idoralari yangi sertifikatlar berishda MD5 dan foydalanishni to'xtatadi. Shuningdek, boshqa dasturlarda MD5 dan foydalanish ham qayta ko'rib chiqiladi deb umid qilamiz."[24]

2012 yilga ko'ra Microsoft, mualliflari Olov zararli dastur Windows kodini imzolash sertifikatini soxtalashtirish uchun MD5 to'qnashuvidan foydalangan.[33]

MD5-dan foydalanadi Merkle-Damgård qurilishi, shuning uchun bir xil xashga ega ikkita prefiksni yaratish mumkin bo'lsa, to'qnashuvni undan foydalangan holda dastur tomonidan haqiqiy ma'lumotlar sifatida qabul qilish ehtimoli yuqori bo'lishi uchun ikkalasiga ham umumiy qo'shimchalar qo'shilishi mumkin. Bundan tashqari, to'qnashuvni aniqlashning joriy texnikasi o'zboshimchalikni aniqlashga imkon beradi prefiks: tajovuzkor ikkalasi bir xil tarkib bilan boshlanadigan ikkita to'qnashuvchi fayl yaratishi mumkin. Faqatgina tajovuzkor to'qnash keladigan ikkita faylni yaratishi kerak - bu to'qnashuvlarni aniqlash algoritmi bilan erkin ravishda o'zgartirilishi mumkin bo'lgan 64 baytli chegarada hizalanan, 128 baytli ma'lumotlar blokiga ega shablon fayli. Ikkita xabar 6 bitdan farq qiladigan MD5 to'qnashuviga misol:

d131dd02c5e6eec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f8955ad340609f4b302 83e488832571415a 085125e8f7cdc99f d91dbdf280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e2b487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080a80d1e c69821bcb6a88393 96f9652b6ff72a70
d131dd02c5e6eec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f8955ad340609f4b302 83e4888325f1415a 085125e8f7cdc99f d91dbd7280373c5bd8823e3156348f5b ae6dacd436c919c6 dd53e23487da03fd 02396306d248cda0e99f33420f577ee8 ce54b67080280d1e c69821bcb6a88393 96f965ab6ff72a70

Ikkalasi ham MD5 xashini ishlab chiqaradi 79054025255fb1a26e4bc422aef54eb4.[41]Ikkala namunaning farqi shundaki, har birida etakchi bit tishlamoq aylantirildi. Masalan, eng yuqori namunadagi 20-bayt (0x13 ofset), 0x87, ikkilikda 10000111. Baytdagi etakchi bit (birinchi niblda ham etakchi bit) pastki namunada ko'rsatilgandek 0x07 bo'lgan 00000111 ga aylantiriladi.

Keyinchalik alohida tanlangan prefikslar bilan ikkita fayl o'rtasida to'qnashuvlar yaratish mumkinligi aniqlandi. Ushbu uslub 2008 yilda soxta CA sertifikatini yaratishda ishlatilgan. Parallellashtirilgan to'qnashuvning yangi variantidan foydalanib qidirish MPI Anton Kuznetsov tomonidan 2014 yilda taklif qilingan, bu hisoblash klasterida 11 soat ichida to'qnashuvni topishga imkon berdi.[42]

Preimage zaifligi

2009 yil aprel oyida MD5-ga qarshi MD5-ni buzadigan hujum e'lon qilindi preimage qarshilik. Ushbu hujum faqat nazariy, hisoblash murakkabligi 2 ga teng123.4 to'liq preimage uchun.[43][44]

Ilovalar

MD5 hazm qilish keng tarqalgan bo'lib dasturiy ta'minot O'tkazilgan fayl buzilmaganligiga ishonch hosil qilish uchun dunyo. Masalan, fayl serverlari ko'pincha oldindan hisoblab chiqilgan MD5-ni taqdim etadi (nomi ma'lum md5sum ) summa fayllar uchun, shuning uchun foydalanuvchi yuklab olingan faylning nazorat summasini unga taqqoslashi mumkin. Unix asosidagi operatsion tizimlarning aksariyati tarqatish paketlariga MD5 so'mlik yordam dasturlarini kiritadi; Windows foydalanuvchilari qo'shilgan narsadan foydalanishlari mumkin PowerShell "Get-FileHash" funktsiyasi, Microsoft yordam dasturini o'rnating,[45][46] yoki uchinchi tomon dasturlaridan foydalaning. Android ROM-larda ushbu turdagi summa ham qo'llaniladi.

Diagram showing use of MD5 hashing in file transmission

MD5 to'qnashuvlarini yaratish oson bo'lganligi sababli, faylni yaratgan kishi bir xil chegara summasi bilan ikkinchi faylni yaratishi mumkin, shuning uchun bu usul zararli buzg'unchilikning ba'zi shakllaridan himoya qila olmaydi. Ba'zi hollarda, tekshiruv summasiga ishonib bo'lmaydi (masalan, agar u yuklab olingan fayl bilan bir xil kanal orqali olingan bo'lsa), bu holda MD5 faqat xatolarni tekshirish funksiyasini taqdim etishi mumkin: u buzilgan yoki to'liq bo'lmagan yuklab olishni tan oladi, bu esa katta hajmdagi fayllarni yuklab olishda ko'proq ehtimol.

Tarixiy jihatdan, MD5 a-ning bir tomonlama xashini saqlash uchun ishlatilgan parol, ko'pincha tugmachani cho'zish.[47][48] NIST parolni saqlash uchun tavsiya etilgan xeshlar ro'yxatiga MD5 ni kiritmaydi.[49]

MD5 shuningdek, sohasida qo'llaniladi elektron kashfiyot, qonuniy kashf qilish jarayonida almashinadigan har bir hujjat uchun noyob identifikatorni taqdim etish uchun. Ushbu usulni almashtirish uchun ishlatilishi mumkin Bates shtampi qog'oz hujjatlarni almashtirish paytida o'nlab yillar davomida ishlatilgan raqamlash tizimi. Yuqorida aytib o'tilganidek, to'qnashuv hujumlari qulayligi tufayli ushbu foydalanishdan voz kechish kerak.

Algoritm

Shakl 1. Bitta MD5 operatsiyasi. MD5 ushbu operatsiyalarning 64 tasidan iborat bo'lib, 16 ta operatsiyaning to'rt bosqichida to'plangan. F chiziqli bo'lmagan funktsiya; har bir turda bitta funktsiyadan foydalaniladi. Mmen xabar kiritishning 32-bitli blokini bildiradi va Kmen har bir operatsiya uchun har xil bo'lgan 32 bitli doimiyni bildiradi. <<<s chap tomonga burilishni bildiradi s joylar; s har bir operatsiya uchun farq qiladi. qo'shimcha modul 2 ni bildiradi32.

MD5 o'zgarmaydigan uzunlikdagi xabarni 128 bitli doimiy uzunlikka chiqishga ishlov beradi. Kirish xabari 512 bitli bloklarning qismlariga bo'linadi (o'n oltita 32 bitli so'zlar); xabar to'ldirilgan shuning uchun uning uzunligi 512 ga bo'linadi. To'ldirish quyidagicha ishlaydi: avval xabarning oxiriga bitta bit, 1 qo'shiladi. Buning ortidan xabar uzunligini 64 bitga 512 multiplikatoridan kamroq qilish uchun qancha nol kerak bo'lsa, qolgan bitlar asl xabarning uzunligini ko'rsatuvchi 64 bit bilan to'ldiriladi, modul 264.

Asosiy MD5 algoritmi 128 bitli holatda ishlaydi, to'rtta 32 bitli so'zlarga bo'linadi A, B, Cva D.. Ular ma'lum bir sobit konstantalarga moslashtiriladi. Keyin asosiy algoritm holatni o'zgartirish uchun har bir 512-bitli xabarlar blokidan o'z navbatida foydalanadi. Xabar bloklarini qayta ishlash shunga o'xshash to'rt bosqichdan iborat bo'lib, ular muddatiga to'g'ri keladi turlar; har bir tur chiziqsiz funktsiyaga asoslangan 16 ta shunga o'xshash operatsiyalardan iborat F, modulli qo'shilish va chap aylanish. 1-rasmda tur doirasidagi bitta operatsiya tasvirlangan. Mumkin bo'lgan to'rtta funktsiya mavjud; har bir turda boshqasidan foydalaniladi:

ni belgilang XOR, VA, Yoki va YO'Q navbati bilan operatsiyalar.

Psevdokod

MD5 xash shu algoritmga muvofiq hisoblanadi. Barcha qiymatlar ichida ozgina endian.

// : Barcha o'zgaruvchilar imzosiz 32 bitli va hisoblashda 2 ^ 32 modulini o'rashadivar int s [64], K [64]var int men// s har bir smenaning miqdorini belgilaydis [0..15]: = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22} s [16..31]: = {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20} s [32..47]: = {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23} s [48..63]: = {6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}// Doimiy ravishda butun sonlar (Radians) sinuslarining ikkilik tamsay qismidan foydalaning:uchun men dan 0 ga 63 qil    K [i]: = qavat (232 × abs (gunoh (i + 1)))uchun tugatish// (Yoki faqat quyidagi oldindan hisoblangan jadvaldan foydalaning):K [0 .. 3]: = {0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee} K [4 .. 7]: = {0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501} K [8..8x9, 8x8, 8x8] = 0xffff5bb1, 0x895cd7be} K [12..15]: = {0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821} K [16..19]: = {0xf61e2562, 0xc040b340, 0xc040b340, 0x265e5a5 Kb [12..15] = 20] 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8} K [24..27]: = {0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed} K [28..31]: 0cf8x8x08, 0x3a9, 0x3a9, 0x3a3] ]: = {0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c} K [36..39]: = {0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70} K [40..43]: 008f08988, 0a8 44..47]: = {0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665} K [48..51]: = {0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039} K [52..55] 0x85845dd1} K [56..59]: = {0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1} K [60..63]: = {0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb 86d391}// O'zgaruvchilarni ishga tushirish:var int a0: = 0x67452301 // Avar int b0: = 0xefcdab89 // Bvar int c0: = 0x98badcfe // Cvar int d0: = 0x10325476 // D// Oldindan ishlov berish: bitta bit qo'shishqo'shib qo'ying "1" bit ga xabar     // Izoh: kirish baytlari bit satrlari sifatida qaraladi, // bu erda birinchi bit baytning eng muhim bitidir.[50]// Oldindan ishlov berish: nol bilan to'ldirishqo'shib qo'ying "0" bit qadar xabar uzunligi bitlar bilan ≡ 448 (mod 512)qo'shib qo'ying asl uzunligi bit bilan mod 264 ga xabar// Xabarni ketma-ket 512 bitli qismlarga ishlov bering:har biriga 512-bit parcha ning to'ldirilgan xabar qil    qismni o'n oltita 32-bitli M [j], 0 ≤ j-15 so'zlarga aylantiring    // Ushbu qism uchun xash qiymatini boshlang:    var int A: = a0 var int B: = b0 var int C: = c0 var int D: = d0    // Asosiy tsikl:    uchun men dan 0 ga 63 qil        var int F, g agar 0 ≤ i ≤ 15 keyin            F: = (B va C) yoki ((emas B) va D) g: = i boshqa bo'lsa 16 ≤ i ≤ 31 keyin            F: = (D. va B) yoki ((emas D) va C) g: = (5 × i + 1) mod 16        boshqa bo'lsa 32 ≤ i ≤ 47 keyin            F: = B xor C xor D g: = (3 × i + 5) mod 16        boshqa bo'lsa 48 ≤ i ≤ 63 keyin            F: = C xor (B. yoki (emas D)) g: = (7 × i) mod 16        // Quyidagi a, b, c, d ta'riflaridan ehtiyot bo'ling        F: = F + A + K [i] + M [g]  // M [g] 32 bitli blok bo'lishi kerak        A: = D D: = C C: = B B: = B + chap tomonga burish(F, s [i]) uchun tugatish    // Hozirgacha natijaga erishish uchun ushbu xashni qo'shing:    a0: = a0 + A b0: = b0 + B c0: = c0 + C d0: = d0 + Duchun tugatishvar char dayjest [16]: = a0 qo'shib qo'ying b0 qo'shib qo'ying c0 qo'shib qo'ying d0 // (Chiqish juda oz endian)// chap tomondagi funktsiyalarning ta'rifichap tomonga burish (x, c) qaytish (x << c) ikkilik yoki (x >> (32-c));

Asl nusxadan tuzish o'rniga RFM 1321 ko'rsatilgan holda, samaradorlikni oshirish uchun quyidagilardan foydalanish mumkin (agar yig'ilish tili ishlatilsa foydali bo'ladi - aks holda kompilyator odatda yuqoridagi kodni optimallashtiradi. Har bir hisoblash ushbu formulalarda boshqasiga bog'liq bo'lganligi sababli, bu odatda yuqoridagi usuldan sekinroq bo'ladi. nand / va parallel bo'lishi mumkin):

(0 ≤ i-15): F: = D xor (B. va (C xor D)) (16-i-31): F: = C xor (D. va (B. xor C))

MD5 xeshlari

128 bitli (16 baytli) MD5 xeshlari (shuningdek, shunday nomlanadi xabar hazm qiladi) odatda 32 ketma-ketligi sifatida ifodalanadi o'n oltinchi raqamlar. Quyidagi 43 baytni namoyish etadi ASCII kirish va tegishli MD5 xash:

MD5 (""Tez jigarrang tulki dangasa itning ustidan sakrab chiqadi ") = 9e107d9d372bb6826bd81d3542a419d6

Xabarning ozgina o'zgarishi ham (katta ehtimollik bilan) asosan turli xashga olib keladi qor ko'chkisi ta'siri. Masalan, gap oxiriga nuqta qo'shish:

MD5 (""Tez jigarrang tulki dangasa itning ustidan sakrab chiqadi.") = e4d909c290d0fb1ca068ffaddf22cbd0

Nol uzunlikdagi satrning xeshi:

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

MD5 algoritmi har qanday sonli bitdan iborat bo'lgan xabarlar uchun belgilanadi; u sakkiz bitning ko'paytmasi bilan cheklanmaydi (oktetlar, bayt ). Kabi ba'zi MD5 dasturlari md5sum oktet bilan cheklangan bo'lishi mumkin yoki ular qo'llab-quvvatlamasligi mumkin oqim dastlab aniqlanmagan uzunlikdagi xabarlar uchun.

Amaliyotlar

Quyida MD5-ni qo'llab-quvvatlaydigan kriptografiya kutubxonalari ro'yxati keltirilgan:

Shuningdek qarang

Adabiyotlar

  1. ^ Rivest, R. (1992 yil aprel). "Qadam 4. Xabarni 16 so'zli bloklarda qayta ishlash". MD5 xabarlarni tarqatish algoritmi. IETF. p. 5. sek. 3.4. doi:10.17487 / RFC1321. RFC 1321. Olingan 10 oktyabr 2018.
  2. ^ Xie Tao; Fanbao Liu va Dengguo Feng (2013). "MD5 tez to'qnashuv hujumi" (PDF). Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  3. ^ Kleppmann, Martin (2017 yil 2-aprel). Ma'lumotlarni intensiv dasturlarni loyihalash: ishonchli, o'lchovli va saqlanadigan tizimlar ortidagi katta g'oyalar (1 nashr). O'Reilly Media. p. 203. ISBN  978-1449373320.
  4. ^ Ciampa, Mark (2009). CompTIA Security + 2008 chuqurligi. Avstraliya; Amerika Qo'shma Shtatlari: Kurs texnologiyasi / Cengage Learning. p.290. ISBN  978-1-59863-913-1.
  5. ^ Chad R, Dougherty (2008 yil 31-dekabr). "Vul # 836068 MD5 zaifligi to'g'risida to'qnashuv hujumlariga qarshi himoyalangan". Zaifliklar to'g'risidagi eslatmalar ma'lumotlar bazasi. CERT Karnegi Mellon universiteti dasturiy ta'minot muhandisligi instituti. Olingan 3 fevral 2017.
  6. ^ a b Cimpanu, Katalin. "Asosiy CMS-larning to'rtdan bir qismi eskirgan MD5-ni standart parol bilan xeshlash sxemasi sifatida ishlatadi. ZDNet. Olingan 17 iyun 2019.
  7. ^ a b J. Blek, M. Kokran, T. Xayland: MD5 hujumlarini o'rganish: tushuncha va takomillashtirish Arxivlandi 2015 yil 1-yanvar kuni Orqaga qaytish mashinasi, 2006 yil 3 mart. Qabul qilingan 27 iyul 2008 yil.
  8. ^ Xoks, Filipp; Paddon, Maykl; Rose, Gregori G. (2004 yil 13 oktyabr). "Vangdagi musiqalar va boshq. MD5 to'qnashuvi". Kriptologiya ePrint arxivi. Arxivlandi asl nusxasi 2018 yil 5-noyabr kuni. Olingan 10 oktyabr 2018.
  9. ^ Bishop Fox (26 sentyabr 2013). "Tez MD5 va MD4 to'qnashuv generatorlari". Olingan 10 fevral 2014. Texnikalarni tezroq amalga oshirish MD5 va boshqa hash funktsiyalarini qanday sindirish kerak, Xiaoyun Vang va boshq. IBM P690 superkompyuterida eski (2006) o'rtacha ishlash vaqti: 1 soat. P4 1.6 gigagertsli kompyuterda yangi o'rtacha ishlash vaqti: 45 daqiqa.
  10. ^ Lenstra, Arjen; Vang, Xiaoyun; Weger, Benne de (2005 yil 1 mart). "To'qnashuv X.509 sertifikatlari". Kriptologiya ePrint arxivi. Olingan 10 oktyabr 2018.
  11. ^ Klima, Vlastimil (2005 yil 5 mart). "MD5 to'qnashuvlarini topish - daftar uchun o'yinchoq". Kriptologiya ePrint arxivi. Olingan 10 oktyabr 2018.
  12. ^ Vlastimil Klima: Hash funktsiyalaridagi tunnellar: MD5 daqiqada to'qnashuvlar, Kriptologiya ePrint arxiv hisoboti 2006/105, 2006 yil 18 mart, 2006 yil 17 aprelda qayta ko'rib chiqilgan. 2008 yil 27-iyulda qabul qilingan.
  13. ^ "Kod buzildi! Kiber buyruqlar logotipi sirlari hal qilindi". USCYBERCOM. Simli yangiliklar. 2010 yil 8-iyul. Olingan 29 iyul 2011.
  14. ^ Tao Sie; Dengguo Feng (2010). "Faqat bitta xabar blokidan foydalangan holda MD5 to'qnashuvlarini yarating" (PDF). Olingan 28 iyul 2011.
  15. ^ "Mark Stivens - Tadqiqot - MD5-ga bitta blokli to'qnashuv hujumi". Marc-stevens.nl. 2012 yil. Olingan 10 aprel 2014.
  16. ^ "RFC 6151 - MD5 Message-Digest va HMAC-MD5 algoritmlari uchun xavfsizlik nuqtai nazarini yangilandi". Internet muhandisligi bo'yicha maxsus guruh. 2011 yil mart. Olingan 11 noyabr 2013.
  17. ^ "RFC 1321 - MD5 xabarlarni tarqatish algoritmi". Internet muhandisligi bo'yicha maxsus guruh. 1992 yil aprel. Olingan 5 oktyabr 2013.
  18. ^ "RFC 2104 - HMAC: xabarni tasdiqlash uchun kalit-xashlash". Internet muhandisligi bo'yicha maxsus guruh. 1997 yil fevral. Olingan 5 oktyabr 2013.
  19. ^ M.M.J. Stivens (2007 yil iyun). "MD5 uchun to'qnashuvlar to'g'risida" (PDF). [...] biz MD5 uchun to'qnashuvlarni taxminan 2 da topa olamiz24.1 tavsiya etilgan IHV uchun kompressiyalar, bu taxminan. 2,6 gigagertsli Pentium 4-da 6 soniya. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  20. ^ Mark Stivens; Arjen Lenstra; Benne de Weger (2009 yil 16-iyun). "MD5 va ilovalar uchun tanlangan prefiks to'qnashuvlari" (PDF). Arxivlandi asl nusxasi (PDF) 2011 yil 9-noyabrda. Olingan 31 mart 2010. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  21. ^ "Yangi GPU MD5 krakeri soniyasiga 200 milliondan ziyod xeshlarni yorib chiqmoqda."
  22. ^ Magnus Daum, Stefan Lyuks. "Hash to'qnashuvi (zaharlangan xabar hujumi)". Evrokript 2005 yilgi sessiya. Arxivlandi asl nusxasi 2010 yil 27 martda.
  23. ^ Maks Gebxardt; Georg Illies; Verner Shindler (2017 yil 4-yanvar). "Maxsus fayl formatlari uchun bitta aralashma to'qnashuvlarining amaliy qiymati to'g'risida eslatma" (PDF). Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  24. ^ a b v d e Sotirov, Aleksandr; Mark Stivens; Jeykob Appelbaum; Arjen Lenstra; Devid Molnar; Dag Arne Osvik; Benne de Veger (2008 yil 30-dekabr). "MD5 bugungi kunda zararli hisoblanadi". Olingan 30 dekabr 2008. E'lon qilindi 25-da Xaos kongressi.
  25. ^ "Zaharli MD5 - Qo'ylar orasidagi bo'rilar | Jim signal signallari texnologiyasi". Olingan 10 iyun 2015.
  26. ^ Xans Dobbertin (1996 yil yoz). "Yaqinda qilingan hujumdan keyin MD5 holati". CryptoBytes. Olingan 22 oktyabr 2013.
  27. ^ Xiaoyun Vang va Hongbo Yu (2005). "MD5 va boshqa hash funktsiyalarini qanday sindirish kerak" (PDF). Kriptologiya sohasidagi yutuqlar - kompyuter fanidan ma'ruza matnlari. 19-35 betlar. Arxivlandi asl nusxasi (PDF) 2009 yil 21 mayda. Olingan 21 dekabr 2009.
  28. ^ Xiaoyun Vang, Dengguo, k., M., M, HAVAL-128 va RIPEMD, 2004 yil 16 avgustda Cryptology ePrint arxiv hisoboti, 2004 yil 17 avgustda qayta ko'rib chiqilgan. 2008 yil 27-iyulda qabul qilingan.
  29. ^ Mark Stivens, Aryen Lenstra, Benne de Veger: MD5 uchun tanlangan prefiks to'qnashuvlariga dasturiy ta'minotning yaxlitligi va kodlarni imzolash dasturlarining zaifligi, 30 Noyabr 2007. Qabul qilingan 27 iyul 2008 yil.
  30. ^ Stray, Jonathan (30 dekabr 2008 yil). "Veb-brauzerdagi nuqson elektron tijorat xavfsizligini xavf ostiga qo'yishi mumkin". CNET.com. Olingan 24 fevral 2009.
  31. ^ "CERT zaifliklari uchun eslatma VU # 836068". Kb.cert.org. Olingan 9 avgust 2010.
  32. ^ "NIST.gov - kompyuter xavfsizligi bo'limi - kompyuter xavfsizligi resurs markazi". Csrc.nist.gov. Arxivlandi asl nusxasi 2011 yil 9-iyunda. Olingan 9 avgust 2010.
  33. ^ a b "Alovli zararli dasturlarning to'qnashuvi hujumi tushuntirildi. Arxivlandi asl nusxasi 2012 yil 8 iyunda. Olingan 7 iyun 2012.
  34. ^ Dobbertin, Xans (1996 yil yoz). "Yaqinda qilingan hujumdan keyin MD5 holati" (PDF). RSA Laboratories CryptoBytes. 2 (2): 1. Olingan 10 avgust 2010. Taqdim etilgan hujum hali MD5 ning amaliy dasturlariga tahdid solmaydi, ammo juda yaqin. .... [sic ] kelajakda MD5 endi amalga oshirilmasligi kerak ... [sic ] bu erda to'qnashuvlarga chidamli xesh funktsiyasi zarur.[doimiy o'lik havola ]
  35. ^ "Shnayer xavfsizlik to'g'risida: MD5 bilan to'qnashuvlar ko'proq". Schneier.com. Olingan 9 avgust 2010.
  36. ^ "To'qnashuv X.509 sertifikatlari". Win.tue.nl. Olingan 9 avgust 2010.
  37. ^ "[Python-Dev] hashlib - tezroq md5 / sha, sha256 / 512-ni qo'llab-quvvatlaydi". Mail.python.org. Olingan 9 avgust 2010.
  38. ^ "Tadqiqotchilar PlayStation klasteridan veb-skelet kalitini yasash uchun foydalanadilar". Simli. 31 dekabr 2008 yil. Olingan 31 dekabr 2008.
  39. ^ Callan, Tim (2008 yil 31-dekabr). "Bugun ertalab MD5 hujumi hal qilindi". Verisign. Arxivlandi asl nusxasi 2009 yil 16-yanvarda. Olingan 31 dekabr 2008.
  40. ^ Bryus Shnayer (2008 yil 31-dekabr). "SSL sertifikatlarini soxtalashtirish". Shnayer xavfsizlik to'g'risida. Olingan 10 aprel 2014.
  41. ^ Erik Reskorla (2004 yil 17-avgust). "Haqiqiy MD5 to'qnashuvi". Bilimli taxminlar (blog). Arxivlandi asl nusxasi 2014 yil 15-avgustda. Olingan 13 aprel 2015.
  42. ^ Anton A. Kuznetsov. "Yuqori samaradorlik hisoblash klasteridan foydalangan holda MD5 bitta blokli to'qnashuv hujumi algoritmi" (PDF). IACR. Olingan 3 noyabr 2014.
  43. ^ Yu Sasaki; Kazumaro Aoki (2009 yil 16 aprel). "To'liq qidiruvdan ko'ra tezroq MD5-da premajlarni topish". Kriptologiya sohasidagi yutuqlar - EUROCRYPT 2009 y. Kompyuter fanidan ma'ruza matnlari. 5479. Springer Berlin Heidelberg. 134-152 betlar. doi:10.1007/978-3-642-01001-9_8. ISBN  978-3-642-01000-2.
  44. ^ Ming Mao va Shaohui Chen va Tszin Syu (2009). "MD5 ning oldindan hujumi uchun dastlabki inshootni qurish". 2009 yil Xalqaro hisoblash intellekti va xavfsizligi bo'yicha konferentsiya. Hisoblash razvedkasi va xavfsizligi bo'yicha xalqaro konferentsiya. 1. IEEE Kompyuter jamiyati. 442-445 betlar. doi:10.1109 / CIS.2009.214. ISBN  978-0-7695-3931-7. S2CID  16512325.
  45. ^ "Faylni tekshirish summasi yaxlitligini tekshiruvchi yordam dasturining mavjudligi va tavsifi". Microsoft ko'magi. 2013 yil 17-iyun. Olingan 10 aprel 2014.
  46. ^ "Fayl uchun MD5 yoki SHA-1 kriptografik xash qiymatlarini qanday hisoblash mumkin". Microsoft ko'magi. 2007 yil 23-yanvar. Olingan 10 aprel 2014.
  47. ^ "FreeBSD qo'llanmasi, xavfsizlik - DES, Blowfish, MD5 va Crypt". Olingan 19 oktyabr 2014.
  48. ^ "Sinopsis - odam sahifalari 4-bo'lim: Fayl formatlari". Docs.oracle.com. 2013 yil 1-yanvar. Olingan 10 aprel 2014.
  49. ^ NIST SP 800-132 5.1-bo'lim
  50. ^ RFM 1321, 2-bo'lim, "Terminologiya va yozuvlar", 2-bet.

Qo'shimcha o'qish

Tashqi havolalar