2012-02-09 19 views
6

एक तरफ, मैं लोगों को यह कहते हुए सुनता हूं कि दोनों चाबियाँ पूरी तरह से अदलाबदल करने योग्य हैं, पहला व्यक्ति एन्क्रिप्टेड दूसरे को डिक्रिप्ट करेगा। इससे मुझे लगता है कि दो चाबियाँ अदलाबदल योग्य हैं।क्या सार्वजनिक कुंजी और निजी कुंजी अदला-बदली है?

लेकिन दूसरी तरफ, आरएसए जेनरेट की गई कुंजी अलग-अलग लंबाई में दिखाई देती है, और एक निजी कुंजी के साथ एन्क्रिप्ट करने वाले दूसरे विषय पर "हस्ताक्षर" कहा जाता था और सार्वजनिक कुंजी के साथ एन्क्रिप्ट करने से कम सुरक्षित माना जाता था। (2)

उस के शीर्ष पर विचार है कि निजी कुंजी अज्ञात रखा जाना चाहिए जब सार्वजनिक कुंजी खुले तौर पर जंगलों में वितरित किया जाना चाहिए आता है। (3)

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

मैं एक सार्वजनिक कुंजी वितरित करने और एक निजी एक साथ एन्क्रिप्ट (2) या दूसरी तरह के आसपास को पूरा करने के करना चाहिए?

एनबी: मेरे मामले में, प्रदर्शन कोई मुद्दा नहीं है।

+0

कोई भी शामिल है के क्यू शामिल? कभी भी निजी कुंजी को वितरित न करें – sehe

+0

हस्ताक्षर एन्क्रिप्टिंग "कम सुरक्षित" नहीं है। –

उत्तर

4

आपका सार्वजनिक कुंजी संदेश एन्क्रिप्ट करने के लिए प्रयोग किया जाता है, अपने निजी भी इसे डिक्रिप्ट करने के लिए। इस प्रकार सार्वजनिक कुंजी, जिसे आप वितरित करते हैं, कोई भी ज्ञान में एक संदेश सुरक्षित कर सकता है जो केवल आप (या आपकी निजी कुंजी वाला कोई व्यक्ति) इसे डिक्रिप्ट कर सकता है। सीधे अपने प्रश्न का उत्तर देने के लिए, नहीं, वे विनिमय नहीं कर सकते हैं। आपको अपनी निजी कुंजी कभी वितरित नहीं करनी चाहिए।

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

-1

सार्वजनिक कुंजी एन्क्रिप्ट करें। निजी कुंजी डिक्रिप्ट। वे चारों ओर स्विच नहीं करते हैं।

क्या आप इसे सही पाने के लिए क्या करना चाहिए प्रत्येक ग्राहक (ग्राहक) के लिए एक निजी/सार्वजनिक कुंजी युग्म किया है। जब सर्वर को कुछ डेटा भेजने की आवश्यकता होती है तो उसे क्लाइंट (ग्राहक) से सार्वजनिक कुंजी का अनुरोध करना चाहिए और एन्क्रिप्शन के लिए इसका उपयोग करना चाहिए। फिर ग्राहक (और केवल सही ग्राहक) प्राप्त जानकारी को डिक्रिप्ट करने में सक्षम होंगे (उनकी बारीकी से संरक्षित निजी कुंजी का उपयोग करके)।

11

जवाब आप, या विशुद्ध रूप से व्यावहारिक, क्रिप्टोग्राफिक कारणों के लिए गणित जिज्ञासा से बाहर अपने प्रश्न पूछ रहे हैं कि क्या पर निर्भर करता है।

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

  • गणितीय दृष्टिकोण से, उत्तर ओटीओएच "हां" है, मान लीजिए कि आप निजी कुंजी के आंतरिक प्रतिनिधित्व का उपयोग करते हैं जिसमें केवल मॉड्यूलस एन और एक्सपोनेंट डी होता है, और अन्य एक्सपोनेंट ई यादृच्छिक रूप से उत्पन्न होता है। दो एक्सपोनेंट्स के बीच संबंध का वर्णन करने वाला सूत्र 1 = ई * डी (मॉड फाई (एन)) है, इसलिए गणितीय दृष्टिकोण से यह वास्तव में कोई फर्क नहीं पड़ता कि कौन सा एक्सपोनेंट है।

लेकिन दूसरी तरफ, आरएसए उत्पन्न चाबियाँ, आप एक कार्यान्वयन कि आरएसए निजी कुंजी है कि काफी इसी सार्वजनिक कुंजी से अधिक लंबे पैदा करता है उपयोग कर रहे हैं अलग अलग लंबाई

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

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

गणित के बीच भेद और वास्तविक प्रणाली के व्यावहारिक उपयोग के लिए धन्यवाद। मैंने इस विषय को दोनों तरीकों से प्रस्तुत किया है और यह भेदभाव नहीं हुआ क्योंकि यह विरोधाभास प्रतीत नहीं हुआ था। साथ ही, मुझे लगता है कि कुछ व्यावहारिक सिस्टम डेटा फ़ाइल में सार्वजनिक कुंजी को संग्रहीत करते हैं, जैसे कि यदि आप निजी कुंजी जानते हैं, तो आप सार्वजनिक कुंजी निकाल सकते हैं, जिससे कुछ लोगों को यह निष्कर्ष निकाला जा सकता है कि आप एक निजी कुंजी को सार्वजनिक कुंजी बना सकते हैं। – adg

+3

@adg कुछ मामलों में निजी कुंजी में सहेजी गई जानकारी में प्रमुख कारक (पी, क्यू) और निजी एक्सपोनेंट (डी) शामिल हैं। यह सार्वजनिक एक्सपोनेंट (ई) प्राप्त करने के लिए पर्याप्त है। उत्कृष्ट स्पष्टीकरण के लिए –

+0

बहुत बहुत धन्यवाद। ऐसा लगता है कि स्पष्टीकरण जो दावा करते हैं कि जोड़ी में चाबियाँ गणितीय या कार्यात्मक रूप से समकक्ष हैं, कम से कम कुछ कार्यान्वयन में सही नहीं हैं। – adg