क्या किसी फ़ाइल को दुर्भावनापूर्ण तरीके से बदला जा सकता है जो उसके मूल SHA-1 हैश को बनाए रखता है?


33

इस लेख के अनुसार , और कई अन्य, SHA-1 सुरक्षित नहीं है।

मेरे मामले में, मुझे पासवर्ड या डिजिटल प्रमाणपत्रों की चिंता नहीं है। मैं फ़ाइल अखंडता के बारे में चिंतित हूं।

क्या यह किसी फ़ाइल के लिए उचित रूप से संभव है (उदाहरण के लिए ISO छवि या निष्पादन योग्य फ़ाइल) दुर्भावनापूर्ण तरीके से बदल दिया जाना चाहिए:

  • मूल फ़ाइल का SHA-1 हैश, और बनाए रखता है
  • फ़ाइल की समग्र सामग्री और संचालन को बनाए रखता है (लेकिन निश्चित रूप से अब इसमें दुर्भावनापूर्ण सामग्री शामिल है जो मूल रूप से नहीं थी)

जिस तरह से मैं इसे देखता हूं, एक फाइल को इस तरह से बदलते हुए कि एक SHA-1 टकराव होता है, वह फ़ाइल पूरी तरह से बेकार हो जाएगी। आईएसओ पूरी तरह से भ्रष्ट होगा, या निष्पादन योग्य फ़ाइल इतनी पूरी तरह से खराब हो जाएगी कि यह अब भी निष्पादन योग्य फ़ाइल नहीं होगी।

लेकिन, जिस तरह से मैं देख रहा हूं वह गलत हो सकता है। फ़ाइल सत्यापन के लिए SHA-1 की निरंतर उपयुक्तता के संबंध में अब तक मुझे Google खोजों पर कुछ भी नहीं मिला है। कोई अंतर्दृष्टि?


7
उत्तर है, यह निर्भर करता है"। यदि आईएसओ में आपके लक्ष्य निष्पादन योग्य के साथ - साथ बहुत सारे जेपीईजी या मूवी फाइलें हैं, तो यह संभव है। आप अपने आकार या दृश्य उपस्थिति को बदलने के बिना नाटकीय रूप से jpeg फ़ाइलों को संशोधित कर सकते हैं। अंत में, बड़ी फ़ाइल, जितना अधिक आप के साथ खेलना होगा, और एक गैर विनाशकारी टकराव की संभावना बेहतर होगी।
पॉल

7
@cpast बिल्कुल, कई वेबसाइटें आपके डाउनलोड को सत्यापित करने की अनुमति देने के लिए SHA-1 हैश को सूचीबद्ध करती हैं। इसके बारे में सोचकर, यह कहीं अधिक संभावना है कि एक हैकर सामग्री और प्रकाशित हैश को बदलकर एक वेबसाइट से समझौता करेगा । तो फिर तुम सच में खराब हो।
misha256

1
बस फी, मेरा प्रश्न SHA-1 के बारे में विशेष रूप से पूछता है क्योंकि यह काफी सामान्य है, विशेष रूप से Microsoft / MSDN से डाउनलोड के साथ। बेशक कुछ वेबसाइट MD5 हैश, अन्य SHA256, आदि प्रकाशित करती हैं
misha256

2
सवाल है, यही कारण है कि आप चाहते हैं चाहते हैं एक हैश है कि उपयोग करने के लिए किसी भी , ज्ञात कमजोरियों जब वहाँ विकल्प है कि बस के रूप में तेजी से कर रहे हैं, आसान उपयोग करने के लिए कर रहे हैं, और व्यापक रूप से उपलब्ध नहीं है कि (जैसे। SHA-256) ? इसके अतिरिक्त, एक कारण है कि क्रिप्टोग्राफ़र हैश असुरक्षित घोषित करने के बाद केवल एक भेद्यता पाया जाता है: इतिहास ने दिखाया है कि जब एक पाया जाता है, तो अन्य लोग जल्दी से पालन करते हैं। प्रसिद्ध ब्रूस श्नेयर का उद्धरण है "हमले हमेशा बेहतर होते हैं, वे कभी खराब नहीं होते हैं"
ब्लूराजा - डैनी पफ्लुगुफ़ेर्ट

3
@ misha256 उन sha1 हैश आपको डाउनलोड भ्रष्टाचार के लिए जाँच करने के लिए हैं, सुरक्षा के लिए नहीं। यदि आप सुरक्षा चाहते हैं तो gpg हस्ताक्षरित फ़ाइलों का उपयोग करें
Daenyth

जवाबों:


41

किसी ने भी अभी तक SHA-1 के लिए इसे पूरा नहीं किया है। यह सिद्धांत में संभव है, लेकिन अभी भी व्यावहारिक नहीं है। SHA-1 में असुरक्षा के बारे में रिपोर्टों का मतलब सिर्फ इतना है कि सुरक्षा स्तर उतना अधिक नहीं है जितना हम चाहते हैं और इसका मतलब है कि हमारे पास इस बारे में चिंता करने के लिए उतने साल नहीं हैं जितना हमने सोचा था कि हमने किया था।

एक दिए गए फ़ाइल के समान SHA-1 हैश के साथ एक फ़ाइल का निर्माण करना कठिन है, क्योंकि यह एक ही SHA-1 हैश के साथ दो फ़ाइलों को स्वयं बनाना है। और जहाँ तक हम जानते हैं, दुनिया में कहीं भी किसी ने भी इस आसान काम को पूरा नहीं किया है। इसका मतलब यह नहीं है कि यह कल नहीं हो सकता है।


क्या किसी दिए गए फ़ाइल के साथ टकराव के लिए SHA-1 पर एक ज्ञात हमला भी है? मैं इस धारणा के तहत था कि वह हमला MD5 या SHA-1 के लिए नहीं पाया गया है (वहाँ सिर्फ एक टकराव का हमला है, दूसरा-
प्राइमेज

@cpast फ्लेम मालवेयर Microsoft और हाईजैक विंडोज अपडेट से प्रकट होने के लिए MD5 टकराव का उपयोग करता है। उनके पास चुनने के लिए Microsoft सीट्स का एक गुच्छा हो सकता है, लेकिन वे केवल MD5 के साथ किसी भी 2 फ़ाइलों को खोजने की कोशिश नहीं कर रहे थे।
एरन फोस्टर

2
@ एरन नहीं, वह किसी दिए गए फ़ाइल के साथ टकराव का उदाहरण नहीं था। फ्लेम के साथ, Microsoft के पास एक लाइसेंसिंग सर्वर था जो एक प्रमाणपत्र हस्ताक्षर अनुरोध के अनुसार X.509 प्रमाणपत्रों पर हस्ताक्षर करता था, जिसका अर्थ है कि हमलावर नियंत्रित करता है कि कुछ सीमाओं के भीतर क्या हस्ताक्षर किया जा रहा है। उनके पास कोई टकराव होने का कोई प्रमाणिक प्रमाण नहीं था; Microsoft ने सक्रियण के भाग के रूप में ग्राहकों से CSR पर हस्ताक्षर किए, जो टकराव के हमले का उपयोग करने की अनुमति देता है (जो कि दूसरा-प्राइमेज हमला नहीं है)।
cpast

2
@OlivierDulac नहीं, यह वास्तव में कभी नहीं किया गया है। कोई ज्ञात SHA-1 टक्कर नहीं है। अनुमानित लागत केवल एक अनुमान है - ऐसा नहीं है कि किसी ने यह किया और यह है कि हम इसे कितना सोचते हैं, यह किसी ने नहीं किया है, लेकिन हम सोचते हैं कि यह कितना खर्च होगा
cpast

4
@cpast हमें निश्चित रूप से पता नहीं है कि किया गया है या नहीं, लेकिन $ 3 मिलियन का हमला NSA के वार्षिक बजट के 0.03% से कम है (वास्तव में, हमला सस्ता होना चाहिए क्योंकि वे पहले से ही हार्डवेयर के मालिक हैं और नहीं किराए पर लेना है)। यह निष्कर्ष निकालना उचित है कि, क्योंकि उनके पास यह करने के लिए साधन और प्रेरणा है, तो वे शायद पहले से ही कर चुके थे। लौ याद है ।
बैन

26

यह सैद्धांतिक रूप से संभव है, लेकिन यह अभी तक नहीं किया गया है।

आप जिस चीज की तलाश कर रहे हैं उसे "हैश टक्कर:" एक ही हैश वाली दो फाइलें कहा जाता है। SHA-1 जैसे क्रिप्टोग्राफ़िक हैश कोड आमतौर पर इस मुश्किल को बनाने के लिए डिज़ाइन किए गए हैं। क्योंकि SHA-1 एक 160 बिट कोड है, यह एक डुप्लिकेट खोजने के लिए औसतन 2 ^ 159 ब्रूट बल प्रयासों को लेगा। यदि एक एल्गोरिथ्म पाया जाता है जो मज़बूती से क्रिप्टोग्राफ़िक हैश के मुकाबले बेहतर होता है, तो हैश को "टूटा हुआ" माना जाता है।

एमडी -5 बहुत टूटे हुए हैश का एक उदाहरण है। यह 128 बिट्स की ताकत होना चाहिए था, औसतन 2 ^ 127 प्रयासों की आवश्यकता थी। जैसा कि ज्ञात कमजोरियों का दुरुपयोग है, आवश्यक प्रयासों की वास्तविक संख्या 2 ^ 47 तक कम हो सकती है। यह 2 ^ 127 से छोटा है। वास्तव में, यह एक दिन में एक आधुनिक कंप्यूटिंग क्लस्टर पर किया गया है।

मैं वह उदाहरण देता हूं क्योंकि वह निकटतम है जो आप SHA-1 का उपयोग करना चाहते हैं। हालाँकि, यह सुनिश्चित करने के लिए सबसे आम तरीका नहीं है कि क्रिप्टैनालिसिस का उपयोग सुनिश्चित करने के लिए हैश को तोड़ा नहीं जाता है। वे आम तौर पर दो फ़ाइलों के बीच टकराव की अनुमति देते हैं, जैसा कि हमलावर द्वारा चुना जाता है, इसके बजाय आप एक फ़ाइल और हमलावर इसे लेने की मांग करते हैं। इस तरह के हमले से बेंचमार्क के लिए आसान होने का एक फायदा है। अगर मुझे लगता है कि आपकी फ़ाइल को क्रैक करना "कठिन" है, तो क्या इसका मतलब यह है कि एक और फ़ाइल समान रूप से मजबूत है? यह हमला जहां हमलावर को दोनों फाइलों को चुनने के लिए मिलता है, यह सुनिश्चित करता है कि हम सबसे खराब को पकड़ते हैं।

इस तरह के हमले से एक दिलचस्प चाल को " जन्मदिन के हमले " के रूप में जाना जाता है । लंबी कहानी छोटी, जन्मदिन के हमले का उपयोग करने के लिए एल्गोरिथ्म की ताकत को कम करता है, इसलिए SHA-1 को 2 ^ 80 प्रयासों (औसतन) और MD5 के लिए 2 ^ 64 प्रयासों (औसतन) की आवश्यकता होती है। ये क्रमशः 160 और 128 के आधे हैं।

SHA-1 ने उन हमलों को जाना है जो इसकी ताकत को 2 ^ 80 से घटाकर 2 ^ 69 कर देते हैं। यह आपके लिए ज्यादा मायने नहीं रखता। 2 ^ 69 प्रयास एक लंबा समय है।

हालांकि, इतिहास से, हमने पाया है कि हैश एल्गोरिदम अनायास नहीं टूटे हैं, बल्कि समय के साथ टूट गए हैं। कोई भी एक एल्गोरिथ्म को नहीं तोड़ता है जैसे एमडी -5 इसे रात में 2 ^ 64 से 2 ^ 47 तक ले जाता है। यह समय के साथ होता है, क्योंकि कई व्यक्ति गणित के बारे में कागजात प्रकाशित करते हैं जो वे इसके खिलाफ उपयोग कर रहे हैं। आमतौर पर एल्गोरिदम की शुरुआत से हमलों की जटिलता धीरे-धीरे नीचे जा सकती है (जहां सबसे अच्छा हमला आमतौर पर जन्मदिन का हमला होता है)।

यह तथ्य कि हम टकरावों में कुछ बदलाव देख रहे हैं, पता चलता है कि SHA-1 सुरंग के अंत में प्रकाश देख रहा है। यह अभी भी मजबूत है, लेकिन नवीनतम SHA-3 में जाने की इच्छा हो सकती है जो वर्तमान में बहुत अधिक सुरक्षित है।

आपको वास्तव में इस तरह के फैसले को खतरे के नजरिए से करना चाहिए। एक हमलावर द्वारा कितना नुकसान हो सकता है यदि वे इन टक्करों में से एक प्राप्त करते हैं। क्या आपके हमलावर स्क्रिप्ट कुछ छोटे लैपटॉप तक पहुंच वाले हैं, या उनके निपटान में पूरे सुपरकंप्यूटिंग क्लस्टर्स वाली सरकारें हैं। किसी हमलावर का कोई उपयोग नहीं होने से पहले कितने समय तक विंडो को एक हैश को तोड़ना पड़ता है (क्रिप्टोग्राफी के कई उपयोगों में "गार्ड को बदलना," जैसे पासवर्ड रोटेशन) शामिल है। ये सभी प्रभावित होंगे कि आप कितनी गंभीरता से टकरावों पर विचार करेंगे।


8
आपके जन्मदिन के हमले के पैराग्राफ के बारे में, 2 ^ 80 2 ^ 160 का वर्गमूल है, इसका आधा नहीं (जो 2 ^ 159 होगा)।
एंड्रयू मॉर्टन

सवाल दूसरे-प्रिमिज हमलों के बारे में है, लेकिन आपका जवाब टकरावों के बारे में है। SHA-1 & mdash के खिलाफ प्राइमेज अटैक; और यहां तक ​​कि MD5 & mdash; बेतुके अव्यवहारिक हैं। (MD5 के खिलाफ 2 ^ 123 प्रीइमेज अटैक है, लेकिन SHA-1 के साथ आप 2 ^ 160uteute बल के साथ फंस गए हैं।)
मैट नॉर्डहॉफ

"क्योंकि SHA-1 एक 160 बिट कोड है, यह एक डुप्लिकेट को खोजने के लिए औसतन 2 ^ 159 ब्रूट बल प्रयास करेगा।" लेकिन एक 2 ^ 2 कोड में 2 ^ 2 अनुमान लगते हैं। मैं नहीं देख रहा हूं कि आप -1 क्यों। "लंबी कहानी छोटी," ... "एल्गोरिथ्म की ताकत को आधा कर देती है, इसलिए SHA-1 के लिए 2 ^ 80 की आवश्यकता होती है ..." MD5 के लिए 2 ^ 64 की आवश्यकता होती है ... "ये क्रमशः 160 और 128 के आधे हैं।" यहां आपके पास -1’एड होना चाहिए। बिट्स तेजी से ताकत बढ़ाते हैं, इसलिए 160 बिट हैश की ताकत को कम करके इसे 159 बिट हैश माना जाएगा, न कि 80 बिट हैश। प्रत्येक बिट एक क्रूर बल हमले की चुनौती को दोगुना कर देता है।
TOOGAM

@TOOGAM: उन्होंने कहा 'औसतन'; कई परीक्षणों से अधिक, कुंजी अंतरिक्ष के केवल 50% की खोज की जानी चाहिए औसतन एक जानवर बल हमले में सफल होने के लिए। ऊपर टिप्पणी के रूप में, एंड्रयू मॉर्टन की टिप्पणी ऊपर बताती है कि; यह वर्गमूल होना चाहिए, जटिलता का आधा नहीं।
रीड

@AndrewMorton अच्छी बात है, मैं अपने शब्दों के साथ स्पष्ट नहीं था। मुझे राज्यों की संख्या के आधार पर साहित्य स्विच और राज्यों की संख्या का आधार -2 लघुगणक अक्सर मिलता है। मेरे शब्दों को बिट्स की संख्या को आधा करने के लिए संदर्भित किया जाता है क्योंकि लोग बिट्स की संख्या में "ताकत" के बारे में बात करते हैं। मुझे इतना आगे-पीछे करने की आदत थी कि मैंने ऐसा अनजाने में किया। मैं भ्रम को दूर करने के लिए संपादन करूंगा।
Cort Ammon - मोनिका

8

उस लेख में चर्चा की गई SHA-1 की खामियां बहुत विशिष्ट हैं: वे हमलावरों को दो चीजें बनाने की अनुमति देते हैं जो एक ही मूल्य के लिए हैश (इसे "टकराव का हमला" कहा जाता है)। हालाँकि, टकराव के हमले के लिए आवश्यक है कि हमलावर दोनों फाइलों को नियंत्रित करे । यदि हमलावर मूल फ़ाइल को नियंत्रित नहीं करता है, तो टक्कर का हमला उन्हें उसी हैश मान के साथ दूसरी फ़ाइल खोजने नहीं देता है।

टीएलएस / एसएसएल (और सामान्य रूप से हस्ताक्षर) के लिए यही कारण है कि उन लोगों के साथ, एक हमलावर अक्सर दोनों फाइलों को नियंत्रित कर सकता है । एक टीएलएस प्रमाणपत्र ज्यादातर यह अनुरोध करने वाले व्यक्ति द्वारा बनाया जाता है (बिट्स जो वे नियंत्रित नहीं करते हैं वे अक्सर अनुमानित होते हैं), इसलिए टकराव उन्हें एक वैध प्रमाण पत्र और एक नाजायज बनाने देता है, वैध एक हस्ताक्षरित प्राप्त करें, और हस्ताक्षर हस्तांतरित करें।

फ़ाइलों के लिए, वही स्थिति हमेशा लागू नहीं होती है। यदि आपकी चिंता यह है कि फ़ाइल बनाने वाला व्यक्ति हमलावर है (जैसे कि वे स्वतंत्र रूप से अच्छे के रूप में सत्यापित एक चीज़ प्राप्त करेंगे, और फिर आपको उसी हैश के साथ दुष्ट पेलोड भेजेंगे), तो SHA-1 हमला लागू होता है, और आपको देखना चाहिए इसे चरणबद्ध करने की दिशा में (हालांकि यह अभी तक महत्वपूर्ण नहीं है, जैसा कि डेविड श्वार्ट्ज ने उल्लेख किया है)। यदि मूल फ़ाइल पर भरोसा किया जाता है, तो एक हमलावर वर्तमान में ज्ञात SHA-1 हमलों को लागू नहीं कर सकता है, हालांकि आपको अभी भी इसे चरणबद्ध करने के बारे में सोचना चाहिए यदि आप कर सकते हैं (यदि आपके पास कोई विकल्प है, तो SHA- जैसे ज्ञात हमलों के बिना हैश का उपयोग करें। 2)।


"टक्कर उपयोगी नहीं होगी" के जवाब में - जबकि एक हमले के लिए एक हमलावर को एक उपयोगी टक्कर लेने में सक्षम होने की आवश्यकता नहीं होती है , यह आम तौर पर "टक्कर" को "उपयोगी टक्कर" में बदलने के लिए मुश्किल नहीं है। कई फ़ाइल स्वरूपों में एक उचित मात्रा में कमरा होता है जिसमें आप फ़ाइल की कार्यक्षमता को प्रभावित किए बिना जो चाहें कर सकते हैं; एक हमलावर आमतौर पर संशोधित कर सकता है ताकि टकराव प्राप्त करने के लिए (यदि टकराव व्यावहारिक रूप से खोजे जाने योग्य हैं), जबकि कार्यात्मक भाग को वे जो भी चाहते हैं, रखते हुए। "अकादमिक हमले" और "व्यावहारिक हमले" के बीच की खाई बड़ी हो सकती है; "किसी भी टक्कर" और "उपयोगी टक्कर" के बीच की खाई आम तौर पर बहुत छोटी होती है।


अधिक गंभीर मुद्दा, जो एल्गोरिथ्म की पसंद से संबंधित नहीं है, यह है कि आप कैसे हैश प्राप्त कर रहे हैं। सभी हैश करता है कि समस्या को "वास्तविक फ़ाइल प्राप्त करें" से "वास्तविक हैश मूल्य प्राप्त करने के लिए" स्थानांतरित करना है; एक ही सर्वर से भेजा गया हैश मान और उसी प्रकार के कनेक्शन पर, जैसा कि फ़ाइल दुर्भावनापूर्ण संशोधन के खिलाफ पूरी तरह से बेकार है (कोई भी हमलावर जो फ़ाइल के साथ छेड़छाड़ कर सकता है, हैश के साथ छेड़छाड़ कर सकता है)। यदि आप फ़ाइल पर भरोसा कर सकते हैं तो हैश पर अधिक भरोसा कर सकते हैं, इसके लिए हैश केवल इसके लिए उपयोगी हैं; जबकि ऐसा कभी-कभी होता है (torrents, दर्पण), वे अक्सर उपयोग किए जाते हैं जब यह मामला नहीं होता है। इसलिए आपको इस बारे में बहुत सावधानी बरतनी चाहिए कि जब भी अखंडता सत्यापन के लिए हैश का उपयोग करें।


5

आप एक टक्कर के हमले और एक प्रारंभिक हमले के बीच अंतर करना होगा । ढूँढना किसी भी दो संदेशों एक ही मूल्य है कि हैश एक टक्कर हमला है।
एक विशेष, दिए गए संदेश (यहां: एक निष्पादन योग्य) को दूसरे संदेश के साथ प्रतिस्थापित करना, जिसमें एक ही हैश है एक (दूसरा) प्रिमिज अटैक।

SHA-1 टूटा हुआ इंफ़ॉसर है क्योंकि एक टकराव के हमले को एक विकिपीडिया लेख के अनुसार 2 52 ऑपरेशनों में किया जा सकता है जो उस नंबर के लिए प्रशस्ति पत्र प्रदान नहीं करता है (सबसे अच्छा हमला जिससे मैं वाकिफ हूं, जो वास्तव में विश्वसनीय है, मार्क स्टेंसिल्स द्वारा एक है , जो 2 60 ऑपरेशन लेता है )। लेकिन चलो 2 52 के निराशावादी मामले को मान लेते हैं ।

यह इस बात से संबंधित है क्योंकि उस पैमाने पर हमला न केवल सैद्धांतिक रूप से बोधगम्य है, बल्कि बहु-जीपीयू रिग पर एक दिन के तहत वास्तव में पूरी तरह से उल्लेखनीय है । यह निश्चित रूप से अनुप्रयोगों के लिए एक समस्या है जहां "कोई भी दो" संदेश करेंगे। यहां तक ​​कि स्टीवंस द्वारा दिए गए 2 60 का आंकड़ा (जो कि 256 गुना अधिक काम है) पूरी तरह से संभव है यदि आपका हमलावर समस्या में कुछ अतिरिक्त पैसा फेंकने के लिए तैयार है, या एक वर्ष का समय बिताने के लिए तैयार है।
जो वास्तव में इस तरह की चीज है जो जासूसी या साइबर अपराध में शामिल किसी व्यक्ति को प्रमाण पत्र बनाने से नहीं रोकेगा

अब, प्रीइमेज अटैक में एक घातांक होता है जो दो बार बड़ा होता है, इसलिए टक्कर के हमले के लिए 2 52 मानकर , यह 2 104 ऑपरेशन होगा, जो एक बिल्कुल अलग बॉलपार्क है।

यह न केवल अव्यावहारिक है (एक मशीन जो पिछले पैराग्राफ में उल्लिखित एक से एक अरब गुना अधिक तेज है, फिर भी लगभग 6 मिलियन या इतने वर्षों का समय लगेगा), लेकिन ऊर्जा को उत्पन्न करने के लिए हमारे दंडात्मक साधन दिए गए यह पूरी तरह से असंभव है।

इस तरह के बड़े पैमाने पर गणना करने के लिए एक ऊर्जा स्रोत की आवश्यकता होती है, जो कि किसी एक ऑपरेशन के लिए समर्पित करने के लिए हमारे द्वारा वहन की जाने वाली किसी भी चीज़ से बहुत बड़ा होता है। नहीं, काफी ऊर्जा का स्रोत सूरज का आकार नहीं है, लेकिन अभी भी काफी बड़ा है

आप वास्तविक रूप से एक वॉट में से 10 से 50 GFLOPS से कुछ भी प्राप्त करने की उम्मीद कर सकते हैं। यह मानते हुए कि किसी प्रकार का चमत्कार होता है और प्रोसेसर रात में कई हजार गुना अधिक ऊर्जा कुशल हो जाते हैं, कोई 1 SHA quite 1 FLOP (काफी आशावादी!) मान सकता है। इसका मतलब यह होगा कि 10 वर्षों के भीतर 2 104 हैश गणना करने के लिए , आपको 10 12 डब्ल्यू बिजली संयंत्र की आवश्यकता है। 1 साल के भीतर हमले को चलाने के लिए, आपको 10 13 डब्ल्यू बिजली संयंत्र की आवश्यकता है। यह संयुक्त राज्य अमेरिका, फ्रांस और जापान के पूरे परमाणु ऊर्जा संयंत्रों का लगभग 50 गुना है, केवल एक हैश के लिए फोर्जिंग कर सकते हैं।

यह नहीं होने जा रहा है , एक ही लक्ष्य प्राप्त करने के बहुत आसान तरीके हैं (सर्वर का उपयोग जो मूल हैश को संग्रहीत करता है और उस एक को प्रतिस्थापित करता है, किसी को ब्लैकमेल करना, आदि)।


"... एक ही चीज़ को प्राप्त करने के बहुत आसान तरीके ..." जैसा कि xkcd.com/538
राल्फ जे

2

प्रश्न में संदर्भित लेख का सामान्य बिंदु यह है: SHA1 को पदावनत किया गया है और इसे चरणबद्ध किया जाना चाहिए, जबकि आपके पास अभी भी इसे सुचारू रूप से करने का समय है। कुछ क्षेत्रों में, समय समाप्त हो रहा है क्योंकि Google और Microsoft समय सीमा लागू करते हैं।

पदावनत प्रौद्योगिकी के लिए अंगूठे का नियम :

  • यदि आप एक नया डिज़ाइन करते हैं या सुविधाएँ जोड़ते हैं, तो इसका उपयोग न करें (SHA1)।
  • यदि आप कुछ पुराना बनाए रखते हैं, तो उसे बदलने के लिए एक योजना बनाएं (SHA1)।

ब्रूस श्नेयर द्वारा 2012 ब्लॉग पोस्ट से सारांश उद्धरण। "बिंदु यह है कि हमें समुदाय में अब SHA-1 से दूर और SHA-2 / SHA-3 से प्रवास शुरू करने की आवश्यकता है।"


2

आपके प्रश्न के SHA-1 हैश टक्कर भाग के लिए, यह कुछ उत्तरों द्वारा संबोधित किया गया है।

हालाँकि, इस प्रकार का एक बड़ा हिस्सा जिस फ़ाइल के साथ हम काम कर रहे हैं, उस पर टिका है:

फ़ाइल की समग्र सामग्री और संचालन को बनाए रखता है (लेकिन निश्चित रूप से अब इसमें दुर्भावनापूर्ण सामग्री शामिल है जो मूल रूप से परिवर्तित सामग्री नहीं थी )

इसका अर्थ यह है कि परिवर्तनों का पता लगाने पर बहुत भिन्नता है:

  • यदि यह एक हस्ताक्षरित निष्पादन योग्य है, न कि (उचित) मौका: आपको किसी तरह दो हैश टकराव प्राप्त करने होंगे: फ़ाइल का SHA-1 और आंतरिक .exe हस्ताक्षर।
  • यदि यह एक अहस्ताक्षरित निष्पादन योग्य है। ऑपरेशन।
  • यदि यह एक स्रोत कोड फ़ाइल या समान संरचना (.cs, .c, .hc, .rb, .yml, .config, .xml, .pl, .bat, .ini) के अतिरिक्त है, परिवर्धन, संशोधन या निष्कासन। वैध टिप्पणी वाक्यविन्यास के लिए विवश किया जा सकता है कि यह परिवर्तन अधिकांश उपयोगों (इसे संकलित करने या चलाने, इसे पाठ संपादक के साथ नहीं खोलने) से स्पष्ट नहीं होगा।
  • यदि यह एक .iso या .zip या अन्य कंटेनर प्रारूप है, तो यह अधिक संभावना नहीं है क्योंकि अधिकांश यादृच्छिक परिवर्तन कंटेनर को दूषित कर देंगे। यह करना संभव है: एक फर्जी फ़ाइल प्रविष्टि जोड़ें या कंटेनर के भीतर एक सामग्री को बदल दें और इसे रीचेक करें, लेकिन आप जटिलता की एक परत जोड़ रहे हैं और परिणाम की जांच करने के लिए अतिरिक्त समय जोड़ रहे हैं, साथ ही सम्मान के साथ स्वतंत्रता की सीमित डिग्री प्राप्त कर रहे हैं। कैसे और क्या सामग्री को बदला जा सकता है।
  • यदि यह एक पाठ या पाठ की तरह प्रारूप है, तो उन्हें लगभग किसी भी तरह से बदला जा सकता है जबकि आप अभी भी 'मान्य' फ़ाइल हैं, हालांकि सामग्री संभवतः ध्यान देने योग्य होगी।
  • .Rtf, .doc, .html, .xslx, और अन्य मार्कअप-एस्क फॉर्मेट जैसे कई प्रारूपों के साथ, उन्हें उन तरीकों से जोड़ा या संशोधित किया जा सकता है जो पार्सर्स द्वारा undetectable होंगे, इसलिए लंबाई के अलावा (या एक विवश लंबाई के साथ भी) , कम स्वतंत्रता) फाइलों को बदल दिया जा सकता है (अंततः) एक हैश टकराव हो सकता है, जबकि अभी भी न केवल एक वैध फ़ाइल है, लेकिन यह किसी भी तरह से नहीं बदला गया है जो कि उन विशिष्ट अनुप्रयोगों के लिए दिखाई देगा, जिनके साथ उनका उपयोग किया जाएगा।

तो, जो कुछ आप छोड़ रहे हैं वह यह है कि जो भी संरचना गैर-रक्तस्रावी है और उसमें कुछ डिग्री है, उसमें टकराव कैसे हो सकता है:

  1. अपनी इच्छानुसार कोई भी कार्यात्मक परिवर्तन (शायद दुर्भावनापूर्ण सामग्री का सम्मिलन) करें और फ़ाइल स्वरूप विशिष्ट वैधता को बनाए रखने के लिए कोई अतिरिक्त परिवर्तन करें
  2. एक अनुभाग जोड़ें जो गैर-कार्यात्मक होगा (टिप्पणी ब्लॉक के बीच, 3k कैरेज़ रिटर्न के साथ एक टेक्स्ट फ़ाइल के बहुत अंत में, वर्तमान टिप्पणी ब्लॉक को अलग करें)
  3. संशोधन के लिए एक चरित्र / कोड पॉइंट / बाइट जोड़ें या चुनें और हर संभव वैध संयोजन की कोशिश करें (प्रत्येक बाइट संयोजन अलग-अलग एन्कोडिंग के लिए मान्य नहीं है, उदाहरण के लिए)।
  4. हैश को पुनः प्राप्त करें, देखें कि क्या टक्कर मेल खाती है।
  5. अगर यह नहीं है, गोटो 3।

मान लीजिए कि आपके पास एक सुपर फास्ट कंप्यूटर और एक छोटा फ़ाइल है, जैसे कि एक वैध बाइट अनुक्रम के साथ संशोधन और हैश को फिर से विभाजित करने में 1 मिलीसेकंड लेता है (शायद कुछ समर्पित हार्डवेयर की आवश्यकता होती है)। यदि हैश वितरण पूरी तरह से यादृच्छिक है और पूरी रेंज में वितरित किया जाता है, तो आपको SHA-1 हर 2^160प्रयास (इसे मजबूर करने वाला जानवर) के साथ टकराव मिलेगा ।

2^160/1000/60/60/24/365.24 
= 4.63x10^37 years 
= 46,300,000,000,000,000,000,000,000,000,000,000,000 years 
= 46 undecillion years.

लेकिन हे, चलो कोशिश करते हैं 2^60और 2^52संस्करण, और दिखावा करते हैं कि वे हमें किसी भी तरह से फ़ाइल को संशोधित करने की अनुमति देते हैं (जैसे वे नहीं) और वे भी, प्रत्येक प्रयास में 1ms में किया जा सकता है:

2^52 yields 142,714 years 
/*humans might still be around to care, but not about these antiquated formats*/
2^60 yields 3.65x10^7 years = 36,500,000 years 
/*machines will probably have taken over anyway*/

लेकिन हे, तुम भाग्यशाली हो सकते हैं। वास्तव में, वास्तव में, अधिक-से-चमत्कार-से-कुछ भी-लोग-कॉल-चमत्कार भाग्यशाली।


0

वास्तव में नहीं, आप एक समय में उन शर्तों में से एक को संतुष्ट कर सकते हैं, लेकिन दोनों को नहीं .. दो अलग-अलग फ़ाइलों के लिए एक ही हैश प्राप्त करना संभव है, लेकिन किसी के लिए किसी फ़ाइल को बदलना और फिर उसी हैश को प्राप्त करने की कोशिश करना बहुत असंभव है जैसे कि जहाँ तक मुझे पता है


1
अभी तक बहुत असंभव है । पर्याप्त कंप्यूटिंग शक्ति के साथ सब कुछ संभव है।

-6

हाँ यह संभव है। सोचें कि EXE पर वायरस कैसे काम करते हैं। मैलवेयर पेलोड को मूल EXE से जोड़ा जाता है, ताकि प्रोग्राम अभी भी वही करता है जो उसने मूल रूप से किया था, लेकिन वायरस के रूप में भी फैलता है। अब, उसी हैश को बनाए रखने के लिए, आपको अतिरिक्त विशेष रूप से तैयार किए गए पैडिंग की आवश्यकता होगी ।

इसका मतलब है कि फ़ाइल बड़ी होगी। लेकिन एक EXE के मामले में, शायद आप कुछ कम उपयोग किए गए कोड को हटा सकते हैं, ताकि प्रोग्राम केवल शुरुआत में काम करे। जेपीईजी के मामले में, आप छवि को आगे संकुचित कर सकते हैं या पूरी तरह से एक अलग छवि का उपयोग कर सकते हैं। आईएसओ के लिए, आप फ़ाइलों के सेट को निकाल सकते हैं। हैश को दोहराने के लिए आवश्यक गणना अधिक कठिन होगी, और शायद विशिष्ट मामलों के लिए गणितीय रूप से असंभव है, लेकिन सामान्य रूप से अभी भी संभव होगा।


7
-1 इस पोस्ट में सब कुछ पूरी तरह से बना हुआ है। लंबाई-विस्तार के हमले "एक ही हैश को बनाए नहीं रखते हैं" (हैश सिर्फ एक ज्ञात तरीके से बदलता है) । इसके अलावा, कोई कारण नहीं है कि एक वायरस को "कम-उपयोग किए गए कोड" को निकालना होगा (यह कैसे निर्धारित करेगा कि यह क्या है?) । और jpegs का किसी भी चीज़ से क्या लेना देना है !?
ब्लूराजा - डैनी पफ्लुगुएफ्ट

2
यह पूरी तरह से गलत है, मैं पूरे उत्तर को फिर से लिखने के बिना सुधार का सुझाव देना भी शुरू नहीं कर सकता
मार्क के कोवान

2
-1 बिल्कुल नहीं। उर्फ "गलत भी नहीं" (वोल्फगैंग पाउली)
ओलिवियर दुलक

1
ठीक है, हम इस तथ्य से शुरू कर सकते हैं कि अगर कुछ सामान्य रूप से संभव है, तो यह स्पष्ट रूप से एक विशिष्ट मामले में संभव है । विपरीत हमेशा सच नहीं होता है, हालांकि: एक ऐसी समस्या की कल्पना करना आसान है जिसे किसी विशिष्ट मामले के लिए हल किया जा सकता है, लेकिन आम तौर पर नहीं।
एक CVn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.