2010-11-13 16 views
6

मैं सोच रहा हूं कि कोई एल्गोरिदम को वापस करने के बारे में कैसे जाता है जैसे कि लॉग इन या पिन कोड संग्रहीत करने के लिए।कोई रिवर्स इंजीनियरिंग एल्गोरिदम के बारे में कैसे जाता है?

चलें कहते हैं कि मैं डेटा की राशि जहां है:

7262627 -> ? -> 8172 

5353773 -> ? -> 1132 

आदि यह एक उदाहरण मात्र है। या एक हेक्स स्ट्रिंग कहें जो किसी दूसरे में तब्दील हो।

&h8712 -> &h1283 या ऐसा कुछ।

मैं यह पता लगाने के बारे में कैसे जा सकता हूं कि वह एल्गोरिदम क्या है? एक कहां से शुरू होता है?

क्या आप अलग-अलग बदलावों, एक्सर्स और कुछ उम्मीदों की कोशिश करना शुरू कर देंगे? मुझे यकीन है कि यह एक बेहतर तरीका है क्योंकि यह अंधेरे में छेड़छाड़ की तरह लगता है।

क्या यह इस तरह के एल्गोरिदम को इंजीनियर करने के लिए व्यावहारिक रूप से संभव है?

क्षमा करें अगर यह एक बेवकूफ सवाल है। आपकी मदद/पॉइंटर्स के लिए धन्यवाद।

+5

यह "असली सवाल नहीं" क्यों है? यह बताने में मुश्किल नहीं है कि यहां क्या पूछा जा रहा है। प्रश्न संदिग्ध, अस्पष्ट, अधूरा या अशिष्ट नहीं है, हालांकि यह संभवतः व्यापक रूप से व्यापक है। इसका उचित रूप से उत्तर दिया जा सकता है: विशेष रूप से जब यह केवल पूछता है कि कैसे एक * हैश फ़ंक्शन को क्रिप्टैनाइज़ करना शुरू कर देगा। यह जवाब देने के लिए पाठ्यपुस्तक नहीं लेता है। –

+0

http://stackoverflow.com/questions/1539286 – sdcvvc

उत्तर

0

क्या यह इस तरह के एल्गोरिदम को इंजीनियर करने के लिए भी व्यावहारिक रूप से संभव है?

यह त्रुटिपूर्ण एल्गोरिदम और पर्याप्त एन्क्रिप्टेड/अनएन्क्रिप्टेड जोड़े के साथ संभव है, लेकिन एक अच्छी तरह से डिज़ाइन किया गया एल्गोरिदम इसे करने की संभावना को खत्म कर सकता है।

3

शायद, आप नहीं कर सकते। मान लीजिए परिवर्तन समारोह में जाना जाता है, की तरह

function hash(text): 
    return sha1("secret salt"+text) 

लेकिन "गुप्त नमक" ज्ञात नहीं है कुछ, और क्रिप्टोग्राफी द्वारा मजबूत (एक बहुत बड़े, यादृच्छिक पूर्णांक) है। आप कभी भी सादे-पाठ, क्रिप्टटेक्स्ट जोड़े की एक बड़ी संख्या से गुप्त नमक को मजबूर नहीं कर सकते।

वास्तव में, यदि सटीक हैश फ़ंक्शन का उपयोग किया जाता है तो दो समान रूप से मजबूत कार्यों में से एक माना जाता है, आप कभी भी एक अनुमान लगा सकते हैं कि किसका उपयोग किया जा रहा था।

+0

+1 भी देखें, लेकिन मेरा अंतिम दावा थोड़ा सा है, मुझे लगता है।यह दो पूरी तरह से मजबूत हैश फ़ंक्शंस के बारे में सच है, लेकिन एक हैश फ़ंक्शन व्यावहारिक रूप से उलटा होने से एक लंबा रास्ता हो सकता है, और फिर भी सांख्यिकीय पूर्वाग्रहों से डेटा की एक व्यावहारिक मात्रा के बाद भी पहचाना जा सकता है। यह सुनिश्चित नहीं है कि वर्तमान में SHA-1 के लिए वर्तमान स्कोर क्या है। यह विभिन्न तरीकों से थोड़ा कमजोर होने की ओर बढ़ रहा है। –

+0

@ स्टेव जेसॉप: मैं निश्चित रूप से इतना स्वीकार करूंगा; जहां तक ​​मुझे पता है, यह दिखाने के लिए कोई सामान्य प्रमाण नहीं है कि हैश फ़ंक्शन में कोई गणितीय कमजोरियां नहीं हैं, लेकिन साथ ही, उन्हें पहचानने और उनका शोषण करने का कोई सामान्य तरीका भी नहीं है। SHA-1 के रूप में कम से कम मजबूत हैश फ़ंक्शन एक्सप्लोर करता है, शायद हमेशा उनकी कमजोरियों के विशिष्ट ज्ञान की आवश्यकता होती है। – SingleNegationElimination

+0

हां, जिस तरह से आप इसे करेंगे (या बल्कि, क्रिप्टो समुदाय इसे करता है) मूल रूप से हर सांख्यिकीय परीक्षा को चलाने के लिए है जिसे आप जानते हैं कि हर हैश पर आप सोच सकते हैं। यदि एक दिया गया हैश एक पूर्वाग्रह दिखाता है, तो उस पूर्वाग्रह का उपयोग आउटपुट से इसे पहचानने के लिए किया जा सकता है। तो निश्चित रूप से आप उस हैश के विशिष्ट ज्ञान का उपयोग कर रहे हैं, या उस हैश सहित कम से कम हैश के वर्ग का उपयोग कर रहे हैं। अपने "दो समान रूप से मजबूत कार्यों" को अलग करने के लिए, आपको उनमें से एक में एक विशेष पूर्वाग्रह के बारे में जानना होगा कि दूसरे को साझा नहीं किया जा सकता है। –

8

कुछ चीजें लोगों की कोशिश कर रहे हैं:

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

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

ध्यान दें कि हैश को रिवर्स इंजीनियरिंग, और वास्तव में इसे उलटकर, दो अलग-अलग चीजें हैं। आप यह पता लगा सकते हैं कि मैं SHA-256 का उपयोग कर रहा हूं, लेकिन इससे आपको रिवर्स करने में मदद नहीं मिलेगी (यानी, आउटपुट दिया गया है, इनपुट मान का काम करें)। कोई भी नहीं जानता कि SHA-256 को पूरी तरह से कैसे उलटया जाए, हालांकि निश्चित रूप से हमेशा इंद्रधनुष सारणी होती है (ऊपर "नमक" देखें) <conspiracy> कम से कम कोई भी स्वीकार नहीं करता है, इसलिए यह आपके या मेरे लिए उपयोग नहीं है। </conspiracy>

2

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

यदि आप पहले से जानते हैं कि खोज करने के लिए एक पैटर्न है, तो कभी-कभी इसे देखने के तरीके भी होते हैं। उदाहरण के लिए, यदि डाटासेट कई इनपुट मानों कि 1 से अलग होता है, इसी उत्पादन मूल्यों की तुलना:

 
7262627 -> 8172 
7262628 -> 819 
7262629 -> 1732 
... 
7262631 -> 3558 

यहाँ यह काफी स्पष्ट है कि (कुछ ही मिनटों के और एक कैलकुलेटर दिया) जब 1, द्वारा इनपुट बढ़ जाती है उत्पादन 913 मॉड्यूलो 8266 (यानी एक साधारण linear congruential generator) द्वारा बढ़ता है।

Differential cryptanalysis एक अपेक्षाकृत आधुनिक जहां सिफर एल्गोरिथम में जाना जाता है के लिए एक समान है, लेकिन और अधिक जटिल विचार पर भरोसा, क्रिप्टोग्राफिक ब्लॉक सिफर की ताकत का विश्लेषण करने के लिए इस्तेमाल की तकनीक है, लेकिन यह माना जाता है निजी कुंजी नहीं है। एक दूसरे से भिन्न इनपुट ब्लॉक एक दूसरे से अलग होते हैं और उस बिट का प्रभाव सिफर के माध्यम से पता लगाया जाता है कि प्रत्येक आउटपुट बिट परिणामस्वरूप "फ्लिप" करना कितना संभव है।

इस तरह की समस्या के करीब आने के अन्य तरीके चरम सीमा (अधिकतम, न्यूनतम मूल्य), वितरण (frequency analysis की ओर अग्रसर), दिशा (क्या संख्या हमेशा बढ़ती है? कमी?) और (यदि इसकी अनुमति है) उस संदर्भ पर विचार करें जिसमें डेटा सेट पाए गए थे। उदाहरण के लिए, कुछ प्रकार के पिन कोडों में हमेशा याद रखने के लिए दोहराए गए अंकों को शामिल किया जाता है (मैं यह नहीं कह रहा हूं कि पिन कोड को किसी अन्य चीज़ से घटाया जा सकता है - बस एक दोहराया गया अंक एक कम अंक है के बारे में चिंता!)।

+1

"यह काफी स्पष्ट है कि इनपुट 1 से बढ़ता है, आउटपुट 913 मॉड्यूलो 8266 द्वारा बढ़ता है" - यही वही है जो मैं बस कहने वाला था। ईमानदार ;-) –

+1

अच्छा ... duh ;-) – SimonJ

संबंधित मुद्दे