
हैश टकराव और शोषण
अन्जे अल्बर्टिनी और मार्क स्टीवंस द्वारा।
प्रश्न: क्या किसी फ़ाइल को मनमाना MD2/MD4/MD5/MD6/SHA1/SHA2/SHA3 हैश, या किसी अन्य फ़ाइल के समान हैश प्राप्त करना संभव है?
उत्तर: नहीं।
प्रश्न: क्या कोई समान हैश वाली 2 अलग-अलग फ़ाइलें बना सकता है?
उत्तर: MD5 के साथ, एक मानक कंप्यूटर पर कुछ सेकंड में। SHA1 के साथ, यह संभव है लेकिन अंतिम उपयोगकर्ताओं के लिए व्यावहारिक नहीं है (जटिलता: 2^61.2 लागत: $11k)।
प्रश्न: क्या कोई सामग्री जोड़कर 2 अलग-अलग फ़ाइलों को समान हैश प्राप्त करा सकता है?
उत्तर: MD5 के साथ, एक मानक कंप्यूटर पर कुछ घंटों में। SHA1 के साथ, यह संभव है लेकिन अंतिम उपयोगकर्ताओं के लिए व्यावहारिक नहीं है (जटिलता: 2^63.4 लागत: $45K)
प्रश्न: क्या 2 फ़ाइलें मान्य बनी रहेंगी?
उत्तर: सामान्यतः हाँ, क्योंकि अधिकांश फ़ाइल प्रारूप जोड़े गए डेटा को सहन करते हैं। दूसरी ओर फ़ाइल हस्ताक्षर संभवतः टूट जाएंगे।
प्रश्न: क्या कोई मनमानी सामग्री और समान हैश वाली 2 अलग-अलग फ़ाइलें बना सकता है?
उत्तर: हाँ, विशेष फ़ाइल संरचनाओं पर भरोसा करके इसे तुरंत किया जा सकता है:
प्रश्न: किन प्रारूपों के लिए मैं तत्काल MD5-टकराव वाली फ़ाइलों की जोड़ी प्राप्त कर सकता हूँ?
उत्तर: JPG, PNG, GIF, GZIP, Portable Executable, MP4, JPEG2000, PDF, DOCX/PPTX/XSLX, EPUB, 3MF, XPS। बस विशिष्ट स्क्रिप्ट चलाएँ।
प्रश्न: SHA1 के बारे में क्या?
उत्तर: SHA1 के लिए, PDF में JPG की गणना और कार्यान्वयन किया गया है।
प्रश्न: उन प्रारूपों के बारे में क्या जो MD5 के लिए पहले से समर्थित हैं (JPG, PNG...), लेकिन SHA1 के लिए?
उत्तर: वे संभवतः SHA1 के साथ भी समर्थित हैं, लेकिन उनके टकरावों की गणना नहीं की गई है।
प्रश्न: क्या समान (लेकिन अलग) सामग्री के लिए गणनाएँ तेज़ होती हैं?
उत्तर: नहीं। किसी भी छोटे अंतर के लिए पूर्ण गणना की आवश्यकता होती है।
प्रश्न: किन प्रारूपों में ऐसा शॉर्टकट नहीं है?
उत्तर: ELF, Mach-O, Java Class, TAR, ZIP (अन्य के अलावा...)
प्रश्न: क्या इन प्रारूपों के साथ क्लासिक टकराव (कुछ घंटों में) अभी भी संभव हैं?
उत्तर: हाँ, जब तक किसी भी मात्रा में जोड़े गए डेटा को सहन किया जाता है (अर्थात् संभवतः ZIP या Class नहीं)।
प्रश्न: क्या आप टकरावों के उदाहरण प्रदान करते हैं?
उत्तर: हाँ।
लक्ष्य मौजूदा हमलों का व्यापक रूप से पता लगाना है - और साथ ही यह दिखाना है कि MD5 कितना कमज़ोर है (किसी भी JPG, PNG, PDF, MP4, PE... का तत्काल टकराव) - और सामान्य फ़ाइल प्रारूपों का विस्तार से पता लगाना भी है ताकि यह निर्धारित किया जा सके कि वर्तमान या भविष्य के हमलों से उनका कैसे शोषण किया जा सकता है।
वास्तव में, एक ही फ़ाइल प्रारूप चाल का उपयोग कई हैशों पर किया जा सकता है (वही JPG चालें MD5, दुर्भावनापूर्ण SHA-1 और SHA1 के लिए उपयोग की गई थीं), जब तक टकराव समान बाइट पैटर्न का पालन करते हैं।
यह दस्तावेज़ नए हमलों के बारे में नहीं है (सबसे हालिया हमला 2012 में प्रलेखित किया गया था), बल्कि मौजूदा हमलों के शोषण के नए रूपों के बारे में है।
ज्ञात हमलों की वर्तमान स्थिति:
किसी फ़ाइल को किसी अन्य फ़ाइल का हैश या कोई दिया गया हैश प्राप्त कराना: असंभव
दो अलग-अलग फ़ाइलों को समान MD5 प्राप्त कराना: तत्काल
दो मनमानी फ़ाइलों को समान MD5 प्राप्त कराना: कुछ घंटे (72 कोर-घंटे)
विशिष्ट फ़ाइल प्रारूपों (PNG, JPG, PE...) की दो मनमानी फ़ाइलों को समान MD5 प्राप्त कराना: तत्काल
दो अलग-अलग फ़ाइलों को समान SHA1 प्राप्त कराना: 6500 कोर-वर्ष
(*) crypt के साथ उदाहरण - धन्यवाद Sven!```
import crypt crypt.crypt("5dUD&66", "br") 'brokenOz4KxMc' crypt.crypt("O!>',%$", "br") 'brokenOz4KxMc'
# हमले
MD5 और SHA1 64 बाइट्स के ब्लॉक में काम करते हैं।