2011-09-01 24 views
6

कहें कि मैं SHA-256 HMAC के साथ संदेशों को हस्ताक्षर/सत्यापित करने के लिए लाइब्रेरी डिज़ाइन कर रहा हूं। यदि अंतिम उपयोगकर्ता कमजोर साझा कुंजी का उपयोग करता है और बहुत सारे छोटे संदेश भेजता है, तो मुझे लगता है कि कुंजी की खोज करने वाले हमलावर का खतरा होगा।संदेश हस्ताक्षर के लिए एचएमएसी का उपयोग करते समय, कुंजी, संदेश या दोनों को नमक करना बुद्धिमानी है?

मेरा अंतर्ज्ञान कहता है कि मुझे रिवर्स-इंजीनियरिंग को कठिन बनाने के लिए कुंजी को एक अद्वितीय (प्रति संदेश) नमक जोड़ना चाहिए।

कुंजी लवण सहायता कितनी होगी, और क्या मुझे संदेशों को सलाम करके कुछ भी हासिल होगा?

उत्तर

3

आम तौर पर लोग कुंजी को नमक करते हैं। यह सुरक्षा को बढ़ाता है, क्योंकि यह रिवर्स-इंजीनियरिंग को कठिन बनाता है, और क्योंकि एक ही संदेश में हमेशा एक ही मैक नहीं होता है, इसलिए हमलावर एक संदेश को फिर से भेज नहीं सकता जो पहले उसी मैक के साथ भेजा गया था। मैं नहीं देखता कि संदेश को सलाम करने के साथ-साथ आपको मिल जाएगा।

+1

मैं मानता हूं कि संदेश को नमस्कार कुछ भी नहीं करता है (एचएमएसी/एसएचए -256 कम्प्यूटेशनल रूप से गहन नहीं है, यहां तक ​​कि लंबे संदेशों तक भी), और कुंजी को सलाम करने का तरीका है। यदि आप कुंजी को नमक बनाना चाहते हैं, तो आपको एक कम्प्यूटेशनल गहन प्रक्रिया जैसे [पीबीकेडीएफ 2] (http://en.wikipedia.org/wiki/PBKDF2) का उपयोग करने की आवश्यकता है या अन्यथा आप वास्तव में कोई सुरक्षा नहीं जोड़ रहे हैं। – kbolino

+0

तो मैं इस [पीबीकेडीएफ 2 फ़ंक्शन] के साथ कुंजी बनाउंगा (http://www.itnewb.com/v/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2- मानक) तो बस प्रेषित संदेश में पुनरावृत्ति गणना जोड़ें? वांछित कुंजी लंबाई कैसे निर्धारित करें? –

+1

जैसा कि मैं इसे समझता हूं, पुनरावृत्ति गणना आमतौर पर कार्यान्वयन के निरंतर के रूप में माना जाता है। यही है, आप 10,000 की तरह एक मूल्य चुनते हैं और फिर इसे पहले से साझा करते हैं (यानी, इसे सॉफ़्टवेयर में हार्ड-कोडिंग करके)। यदि आप इसे परिवर्तनीय बनाना चाहते हैं, तो आपको काफी उच्च निचले बाउंड को सेट और लागू करना चाहिए। – kbolino