[Security] हैशिंग और एन्क्रिप्शन एल्गोरिदम के बीच मौलिक अंतर


Answers

एक हैश फ़ंक्शन को रोटी की रोटी पकाने के समान माना जा सकता है। आप इनपुट (आटा, पानी, खमीर, आदि ...) के साथ शुरू करते हैं और हैश फ़ंक्शन (मिश्रण + बेकिंग) लगाने के बाद, आप आउटपुट के साथ समाप्त होते हैं: रोटी का एक रोटी।

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

इनपुट के कई अलग-अलग रूप सैद्धांतिक रूप से समान रोटी का उत्पादन करेंगे (उदाहरण के लिए 2 कप पानी और खमीर के 1 टीबीपी बिल्कुल उसी रोटी का उत्पादन करते हैं जैसे 2.1 कप पानी और खमीर के 0.9tsbp), लेकिन उन रोटी में से एक को दिया गया है, आप नहीं बता सकते वास्तव में इनपुट के कॉम्बो ने इसे कैसे बनाया।

दूसरी तरफ, एन्क्रिप्शन को एक सुरक्षित जमा बॉक्स के रूप में देखा जा सकता है। जो भी आप वहां डालते हैं, वह वापस आ जाता है, जब तक आपके पास उस कुंजी के साथ होता है जिसके साथ इसे पहले स्थान पर बंद कर दिया गया था। यह एक सममित ऑपरेशन है। एक कुंजी और कुछ इनपुट देखते हुए, आपको एक निश्चित आउटपुट मिलता है। आउटपुट, और एक ही कुंजी को देखते हुए, आप मूल इनपुट वापस ले लेंगे। यह 1: 1 मैपिंग है।

Question

मैं हैश और एन्क्रिप्शन एल्गोरिदम के बीच बहुत भ्रम देखता हूं और मैं इसके बारे में कुछ और विशेषज्ञ सलाह सुनना चाहता हूं:

  1. हैश बनाम एन्क्रिप्शन का उपयोग कब करें

  2. क्या हैश या एन्क्रिप्शन एल्गोरिदम अलग करता है (एक सैद्धांतिक / गणितीय स्तर से) यानी हैश को अपरिवर्तनीय बनाता है (इंद्रधनुष के पेड़ की सहायता के बिना)

यहां कुछ समान SO प्रश्न हैं जो मैं जितना विस्तार कर रहा था उतना विस्तार नहीं किया:

Obfuscation, हैशिंग, और एन्क्रिप्शन के बीच क्या अंतर है?
एन्क्रिप्शन और हैशिंग के बीच अंतर




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

जब प्राधिकरण की बात आती है तो आप हैशिंग का उपयोग करते हैं। हैशिंग में कोई कुंजी नहीं है

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

हैशिंग अपरिवर्तनीय क्यों है:

हैशिंग उलटा नहीं है क्योंकि इनपुट-टू-हैश मैपिंग 1-से-1 नहीं है। एक ही हैश मान पर दो इनपुट मानचित्र होने के कारण आमतौर पर "हैश टकराव" के रूप में जाना जाता है। सुरक्षा उद्देश्यों के लिए, "अच्छे" हैश फ़ंक्शन के गुणों में से एक यह है कि टकराव व्यावहारिक उपयोग में दुर्लभ हैं।




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

कई हैश फ़ंक्शन वास्तव में एन्क्रिप्शन एल्गोरिदम (या एन्क्रिप्शन एल्गोरिदम के प्राइमेटिव्स) का उपयोग करते हैं। उदाहरण के लिए, SHA-3 उम्मीदवार Skein प्रत्येक ब्लॉक को संसाधित करने के लिए अंतर्निहित विधि के रूप में थ्रीफ़िश का उपयोग करता है। अंतर यह है कि सिफरटेक्स्ट के प्रत्येक ब्लॉक को रखने के बजाय, वे विनाशकारी हैं, निश्चित रूप से एक निश्चित लंबाई में एक साथ विलय कर दिया




एक हैश फ़ंक्शन एक परिवर्तनीय आकार की टेक्स्ट को एक निश्चित आकार के टेक्स्ट में बदल देता है।

स्रोत: https://en.wikipedia.org/wiki/Hash_function

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

स्रोत: https://en.wikipedia.org/wiki/Encryption

आइए इसे क्रिया में देखें। मैं इसके लिए PHP का उपयोग करता हूं।

HASH:

$str = 'My age is 29';
$hash = hash('sha1', $str);
echo $hash; // OUTPUT: 4d675d9fbefc74a38c89e005f9d776c75d92623e

DEHASH:

एसएचए 1 एक तरफा हैश है। जिसका मतलब है कि आप हैश को नहीं हटा सकते हैं।

हालांकि, आप हैश को बलपूर्वक बल दे सकते हैं।

कृपया देखें: https://hashkiller.co.uk/sha1-decrypter.aspx

आप इस वेबसाइट पर एमडी 5 डेहशेर पा सकते हैं: http://md5portal.com/

एन्क्रिप्ट करें:

$cipher = MCRYPT_RIJNDAEL_128;
$key = 'A_KEY';
$data = 'My age is 29';
$mode = MCRYPT_MODE_ECB;

$encryptedData = mcrypt_encrypt($cipher, $key , $data , $mode);
var_dump($encryptedData);

//OUTPUT:
string '„Ùòyªq³¿ì¼üÀpå' (length=16)

डिक्रिप्ट:

$decryptedData = mcrypt_decrypt($cipher, $key , $encryptedData, $mode);
$decryptedData = rtrim($decryptedData, "\0\4"); // Remove the nulls and EOTs at the END
var_dump($decryptedData);

//OUTPUT:
string 'My age is 29' (length=12)



हैशिंग और एन्क्रिप्शन / डिक्रिप्शन तकनीकों का मूल अवलोकन है।

hashing:

यदि आपके पास फिर से कोई सादा पाठ है तो आपको हैश टेक्स्ट से एक ही सादा पाठ नहीं मिल सकता है । बस, यह एक तरफा प्रक्रिया है।

एन्क्रिप्शन और डिक्रिप्शन:

यदि आप किसी कुंजी के साथ किसी भी सादा पाठ को फिर से एन्क्रिप्ट करते हैं तो आप उसी (सममित) / diffrent (asymentric) कुंजी के साथ एन्क्रिप्टेड टेक्स्ट पर डिक्रिप्शन करके एक ही सादा पाठ प्राप्त कर सकते हैं

अद्यतन: संपादित प्रश्न में उल्लिखित बिंदुओं को संबोधित करने के लिए।

1. हैश बनाम एन्क्रिप्शन का उपयोग कब करें

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

अगर आप कहते हैं कि किसी को भेजने का संदेश है तो एन्क्रिप्शन अच्छा है। आप संदेश को कुंजी के साथ एन्क्रिप्ट करते हैं और प्राप्तकर्ता मूल संदेश वापस पाने के लिए (या शायद एक अलग) कुंजी के साथ डिक्रिप्ट करता है। credits

2. क्या हैश या एन्क्रिप्शन एल्गोरिदम अलग करता है (एक सैद्धांतिक / गणितीय स्तर से) यानी हैश को अपरिवर्तनीय बनाता है (इंद्रधनुष के पेड़ की सहायता के बिना)

मूल रूप से हैशिंग एक ऐसा ऑपरेशन है जो जानकारी खो देता है लेकिन एन्क्रिप्शन नहीं । आइए हम आसानी से समझने के लिए सरल गणितीय तरीके में अंतर देखें, निश्चित रूप से दोनों में इसमें दोहराए गए पुनरावृत्ति के साथ अधिक जटिल गणितीय ऑपरेशन है

एन्क्रिप्शन / डिक्रिप्शन (रिवर्सिबल):

अतिरिक्तता :

4 + 3 = 7  

इसे जोड़ों में से एक को जोड़कर घटाकर घटाया जा सकता है

7 - 3 = 4     

गुणा :

4 * 5 = 20  

इसे उत्पादकों और कारकों में से किसी एक द्वारा विभाजित करके उलट किया जा सकता है

20 / 4 = 5    

तो, यहां हम मान सकते हैं कि जोड़ों में से एक / कारक एक डिक्रिप्शन कुंजी है और परिणाम (7,20) एक भ्रमित पाठ है।

हैशिंग (रिवर्सिबल नहीं):

मॉडुलो डिवीजन :

22 % 7 = 1   

इसे उलट नहीं किया जा सकता है क्योंकि विभाजक (या इसके विपरीत) का पुनर्गठन करने के लिए आप कोई भी ऑपरेशन नहीं कर सकते हैं।

क्या आप '?' कहां भरने के लिए एक ऑपरेशन पा सकते हैं है?

1  ?  7 = 22  
1  ?  22 = 7

तो हैश फ़ंक्शंस में समान गणितीय गुणवत्ता मॉड्यूलो डिवीजन के रूप में होती है और जानकारी खो देती है।

credits