आपने बहुत अच्छा सवाल पूछा है। प्रश्न बहुत सरल लगता है, लेकिन वास्तव में इसका उत्तर कुछ अधिक जटिल है। मैं इसका जवाब देने की पूरी कोशिश करूंगा। इसके अलावा, जब से आपने ISAKMP का उल्लेख किया है, मुझे लगता है कि आप IKEv1 में रुचि रखते हैं। IKEv2 (अच्छी तरह से, बहुत कुछ) के लिए चीजें थोड़ी बदल जाती हैं, लेकिन मैं नीचे दिए गए उत्तर का उल्लेख केवल IKEv1 से करना चाहता हूं।
चरण 1 को दो अलग-अलग तरीकों से पूरा किया जा सकता है: मुख्य मोड और आक्रामक मोड। किसी भी मोड में, पहला संदेश इनिशियेटर द्वारा भेजा जाता है, और दूसरा संदेश रेस्पॉन्डर द्वारा भेजा जाता है। इन दोनों संदेशों में शामिल है कि क्रिप्टोग्राफी की दुनिया में एक गैर के रूप में क्या जाना जाता है । एक नॉन बस प्रमुख पीढ़ी में उपयोग करने के लिए एक यादृच्छिक रूप से उत्पन्न संख्या है। (नॉनसे शब्द _N_umber used _Once_) से आया है । इसलिए, मैसेज 1 और मैसेज 2 के बाद, दोनों पक्ष एक-दूसरे के नॉनवेज को जानते हैं।
गुप्त कुंजी बनाने के लिए बीज का मूल्य बनाने के लिए नॉनर्स को प्री-शेयर्ड-की के साथ जोड़ा जाता है। IKE RFC का सापेक्ष भाग यहाँ है:
For pre-shared keys: SKEYID = prf(pre-shared-key, Ni_b | Nr_b)
SKEYID बीज मान है जिसे बाद में अतिरिक्त गुप्त कुंजी उत्पन्न करने के लिए उपयोग किया जाएगा। पूर्व-साझा-कुंजी और दोनों नॉन मान (Ni_b इनिशियेटर नॉनस है, और Nr_B रिस्पोंडर का नॉनस है) एक PRF, या Psuedo रैंडम फ़ंक्शन का उपयोग करके संयुक्त है। एक PRF एक हैशिंग एल्गोरिथ्म की तरह है, सिवाय इसके कि परिणाम आपकी आवश्यकता के अनुसार कई बिट्स हो सकते हैं।
अब, यदि आप शुरू में मेन मोड कर रहे थे, तो संदेश 3 और 4 में इनिशियेटर और रेस्पॉन्डर (क्रमशः) डिफी-हेलमैन सार्वजनिक कुंजी साझा करते हैं। वे दोनों इन मूल्यों का उपयोग डिफी-हेलमैन द्वारा साझा किए गए रहस्य को उत्पन्न करने के लिए करते हैं । यदि आप एग्रेसिव मोड कर रहे थे, तो ये डीएच पब्लिक वैल्यूज़ मेसेज 1 और मैसेज 2 (नॉनवेज के साथ) में भी शामिल हैं।
फिर सीड वैल्यू को तीन सेशन कीज़ बनाने के लिए डीएच शेयर्ड सीक्रेट (और कुछ अन्य वैल्यूज़) के साथ जोड़ दिया जाता है : एक डेरेवेटिव की, एक ऑथेंटिकेशन की, और एक एन्क्रिप्शन की। RFC इसे इस प्रकार बताता है:
या तो मेन मोड या एग्रेसिव मोड के परिणाम को प्रमाणित कुंजीयन सामग्री के तीन समूह हैं:
SKEYID_d = prf(SKEYID, g^xy | CKY-I | CKY-R | 0)
SKEYID_a = prf(SKEYID, SKEYID_d | g^xy | CKY-I | CKY-R | 1)
SKEYID_e = prf(SKEYID, SKEYID_a | g^xy | CKY-I | CKY-R | 2)
SKEYID_d, _a, और _e उपरोक्त तीन सत्र कुंजी हैं। SKEYID
बीज मान है। g^xy
डीएच साझा गुप्त है। CKY-I
और CKI-R
इनिशियेटर और रेस्पोंडर कूकीज़ हैं, ये केवल अतिरिक्त बेतरतीब ढंग से उत्पन्न मूल्य हैं जो बाद में इस विशेष ISAKMP एक्सचेंज और सुरक्षा संघ की पहचान करने के लिए उपयोग किए जाते हैं। 0 1 2
शाब्दिक संख्याएँ 0, 1 और 2 हैं। पाइप का प्रतीक |
संघनन का प्रतिनिधित्व करता है।
किसी भी स्थिति में, इन सभी मूल्यों को एक पीआरएफ का उपयोग करके एक साथ जोड़ दिया जाता है जो तीन सत्र कुंजी बनाता है:
- व्युत्पन्न कुंजी - इस कुंजी का उपयोग ISAKMP द्वारा नहीं किया जाता है, और इसके बजाय IPsec को सौंप दिया जाता है ताकि IPsec अपनी गुप्त कुंजी बना सके
- प्रमाणीकरण कुंजी - इस कुंजी का उपयोग ISAKMP द्वारा अपने HMAC में किया जाता है (उर्फ, हाशिंग एल्गोरिथ्म एक गुप्त कुंजी के साथ सुरक्षित)
- एन्क्रिप्शन कुंजी - इस कुंजी का उपयोग ISAKMP द्वारा सममित रूप से कुछ भी एन्क्रिप्ट करने के लिए किया जाता है जो ISAKMP सुरक्षित रूप से दूसरे सहकर्मी को करना चाहता है। इसलिए यदि चरण 1 के लिए चुने गए एन्क्रिप्शन एल्गोरिदम एईएस है, तो एईएस इस कुंजी का उपयोग सममित रूप से एन्क्रिप्टेड डेटा के लिए करेगा - एईएस अपनी स्वयं की कुंजीयन सामग्री उत्पन्न नहीं करेगा।
प्रमाणीकरण कुंजी और एन्क्रिप्शन कुंजी का उपयोग आगामी चरण 2 वार्ता को सुरक्षित / एन्क्रिप्ट करने के लिए किया जाता है। मेन मोड में, चरण 1 के संदेश 5 और 6 भी इन कुंजियों द्वारा सुरक्षित हैं। इसके अलावा, भविष्य के किसी भी ISAKMP सूचनात्मक आदान-प्रदान (DPD, Rekey इवेंट्स, डिलीट मैसेज आदि) भी इन दोनों कुंजियों द्वारा सुरक्षित हैं।
Derivative Key को IPsec को सौंप दिया जाता है, और IPsec इस Key से अपनी Keying सामग्री तैयार करता है। यदि आप याद करते हैं, तो IPsec में मुख्य रूप से कुंजी विनिमय तंत्र शामिल नहीं है, इसलिए गुप्त कुंजी प्राप्त करने का एकमात्र तरीका उन्हें या तो मैन्युअल रूप से सेट करना है (जो पुरातन है, और वास्तव में कभी भी नहीं किया गया है), या बाहरी सेवा पर निर्भर रहने के लिए ISAKMP की तरह कुंजीयन सामग्री प्रदान करें।
RFC ऐसा कहता है:
SKEYID_e अपने संदेशों की गोपनीयता की सुरक्षा के लिए ISAKMP SA द्वारा उपयोग की जाने वाली कुंजीयन सामग्री है।
SKEYID_a अपने संदेशों को प्रमाणित करने के लिए ISAKMP SA द्वारा उपयोग की जाने वाली कुंजीयन सामग्री है।
SKEYID_d गैर-ISAKMP सुरक्षा संघों की कुंजी प्राप्त करने के लिए उपयोग की जाने वाली कुंजीयन सामग्री है।
उस सभी के साथ, हम आपके प्रश्न का संदर्भ दे सकते हैं: पूर्व-साझा-कुंजी को सुरक्षित करने के लिए किस कुंजी का उपयोग किया जाता है?
मेन मोड में, प्री-शेयर्ड-की (PSK) को मैसेज 5 और 6 में वेरिफाई किया जाता है। मैसेज 5 और 6 को सेशन ISAKMP जेनरेट करता है, जो ऊपर वर्णित है।
आक्रामक मोड में, बातचीत में कोई भी संदेश एन्क्रिप्ट नहीं किया गया है। और PSK को मैसेज 2 और 3. नोटिस में सत्यापित किया गया है, मैंने कहा कि दोनों मामलों में PSK सत्यापित है , और मैंने कभी नहीं कहा कि PSK का आदान-प्रदान हुआ है । जाहिर है, अगर एग्रेसिव मोड में कुछ भी एनक्रिप्टेड नहीं है, और आपने बस प्री-शेयर्ड-की को अनएन्क्रिप्टेड वायर के पार भेजा है, तो भारी गैपिंग सुरक्षा भेद्यता होगी।
हमारे लिए भाग्यशाली, ISAKMP के लेखकों ने पहले से ही ऐसा सोचा था। और परिणामस्वरूप, उन्होंने यह पुष्टि करने के लिए एक विशेष विधि बनाई कि प्रत्येक पार्टी के पास सही PSK है, वास्तव में इसे तार के बिना साझा करने के बिना। दो आइटम हैं जो प्रत्येक पीयर को मान्य करने के लिए उपयोग किए जाते हैं कि उनके पास एक ही PSK है: पहचान विधि और पहचान पहचान ।
वीपीएन पीयर विभिन्न तरीकों से खुद की पहचान करने का विकल्प चुन सकते हैं; सबसे अधिक, सहकर्मी बस अपने स्रोत आईपी पते का उपयोग करेंगे। लेकिन उनके पास FQDN या Hostname का उपयोग करने का विकल्प है। इनमें से प्रत्येक, चुने हुए विधि के सहसंबंधी मूल्य के साथ, पहचान विधि का निर्माण करते हैं। इसलिए, उदाहरण के लिए, अगर मेरे पास आईपी 5.5.5.5 था, और मैं अपने आईपी पते का उपयोग खुद को पहचानने के लिए करना चाहता था, तो मेरी आईडी विधि प्रभावी रूप से [आईपी पता, 5.5.5.5] होगी । (नोट: दोनों मान पूरे आईडी विधि को बनाते हैं)
पहचान विधि हैश बनाने के लिए, पहले से चर्चा की गई सीड वैल्यू (SKEYID) और कुछ अन्य मानों के साथ आईडी विधि फिर संयुक्त (PRF का उपयोग करके) संयुक्त है । स्मरण करो, कि पहले स्थान पर SKEYID बनाने में जो गया वह प्री-शेयर्ड-की था।
फिर आईडी विधि और आईडी हैश को तार के पार भेजा जाता है, और दूसरा पक्ष उसी सूत्र का उपयोग करके आईडी हैश को फिर से बनाने का प्रयास करता है। यदि रिसीवर उसी आईडी हैश को फिर से बनाने में सक्षम है, तो यह रिसीवर को साबित करता है कि प्रेषक के पास सही पूर्व-साझा-कुंजी होनी चाहिए।
यह RFC में यहाँ वर्णित है:
प्रमाणित करने के लिए या तो प्रोटोकॉल के सर्जक एचएएसएचआईआई उत्पन्न करता है और रिस्पोंडर एचएसएच_आर उत्पन्न करता है:
HASH_I = prf(SKEYID, g^xi | g^xr | CKY-I | CKY-R | SAi_b | IDii_b )
HASH_R = prf(SKEYID, g^xr | g^xi | CKY-R | CKY-I | SAi_b | IDir_b )
आईडीआईआई और आईडीआईआर आईडी विधि है। और HASH_I और HASH_R इनिशियेटर और रेस्पोंडर हैश है। ये दोनों ही चरण 1 में साझा किए गए हैं। RFC से:
पूर्व-साझा कुंजी प्रमाणीकरण करते समय, मुख्य मोड निम्नानुसार परिभाषित किया गया है:
Initiator Responder
---------- -----------
HDR, SA -->
<-- HDR, SA
HDR, KE, Ni -->
<-- HDR, KE, Nr
HDR*, IDii, HASH_I -->
<-- HDR*, IDir, HASH_R
पूर्व-साझा कुंजी के साथ आक्रामक मोड निम्नानुसार वर्णित है:
Initiator Responder
----------- -----------
HDR, SA, KE, Ni, IDii -->
<-- HDR, SA, KE, Nr, IDir, HASH_R
HDR, HASH_I -->
और अब, हम अंत में आपके प्रश्न का पूरी तरह से उत्तर दे सकते हैं:
प्री-शेयर-की को नॉन के साथ एक पीआरएफ का उपयोग करके संयुक्त किया जाता है, और बातचीत में किसी और को ज्ञात अन्य मूल्यों का एक गुच्छा। परिणाम एक मूल्य है जो केवल दो पक्षों द्वारा पारस्परिक रूप से प्राप्त किया जा सकता है यदि दोनों पार्टियां समान मूल्यों के साथ शुरू हुईं - उर्फ, समान पूर्व-साझा-कुंजी। परिणामी मूल्य वह है जो तार पर साझा किया जाता है, दो पक्षों को सत्यापित करने की अनुमति देता है कि उनके पास प्री-शेयर्ड-कीज़ से मेल खाते हैं वास्तव में प्री-साझा-कुंजी के बारे में कोई भी जानकारी उजागर किए बिना।
मुख्य मोड ऊपर वर्णित "परिणामी मूल्य" के आदान-प्रदान को एन्क्रिप्ट करके भी अधिक सुरक्षित हो जाता है, जिससे पूर्व-साझा-कुंजी के बारे में किसी भी उपयोगी जानकारी को निकालना और भी मुश्किल हो जाता है।
(ऐसा लगता है कि मैं इस का जवाब देने में बुरी तरह से विफल रहा)