ऐसा लगता है कि वे दोनों एन्क्रिप्शन एल्गोरिदम हैं जिन्हें सार्वजनिक और निजी कुंजी की आवश्यकता होती है। मैं अपने क्लाइंट सर्वर एप्लिकेशन में एन्क्रिप्शन प्रदान करने के लिए एक बनाम दूसरे को क्यों चुनूंगा?
ऐसा लगता है कि वे दोनों एन्क्रिप्शन एल्गोरिदम हैं जिन्हें सार्वजनिक और निजी कुंजी की आवश्यकता होती है। मैं अपने क्लाइंट सर्वर एप्लिकेशन में एन्क्रिप्शन प्रदान करने के लिए एक बनाम दूसरे को क्यों चुनूंगा?
जवाबों:
जिक्र करते हुए, https://web.archive.org/web/20140212143556/http://courses.cs.tamu.edu:80/pooch/665_spring2008/Australian -sec-2006/ less19.html
RSA
RSA एन्क्रिप्शन और डिक्रिप्शन कम्यूटेटिव हैं,
इसलिए इसका उपयोग सीधे एक डिजिटल सिग्नेचर स्कीम के रूप में किया जा सकता है,
जो एक आरएसए स्कीम {(e, R), (d, p, q)}
को एक संदेश M, गणना करने के लिए देता है:
S = M पॉवर d (मॉड आर)
एक हस्ताक्षर को सत्यापित करने के लिए, गणना करें:
एम = एस पावर ई (मॉड आर) = एम पावर एड (मॉड आर) = एम (मॉड आर)
RSA का उपयोग एन्क्रिप्शन और डिजिटल हस्ताक्षरों दोनों के लिए किया जा सकता है,
बस उस क्रम को उलट कर जिसमें एक्सपोजर का उपयोग किया जाता है: हस्ताक्षर बनाने के लिए गुप्त घातांक (d), किसी को भी हस्ताक्षर को सत्यापित करने के लिए सार्वजनिक घातांक (e)। बाकी सब कुछ समान है।
DSA (डिजिटल सिग्नेचर एलगोरिदम)
DSA, ElGamal और Schnorr एल्गोरिदम पर एक प्रकार है, जो 320 बिट हस्ताक्षर बनाता है, लेकिन 512-1024 बिट सुरक्षा सुरक्षा के साथ फिर से कंप्यूटिंग असतत लघुगणक की कठिनाई पर टिकी हुई है, जिसे व्यापक रूप से स्वीकार किया गया
DSA कुंजी जनरेशन
सबसे पहले वैश्विक सार्वजनिक रूप से साझा किया गया है
प्रमुख मान (p, q, g) चुने गए हैं:
एक बड़ा प्राइम p = 2 पॉवर L चुनें,
जहाँ L = 512 से 1024 बिट्स है और 64
चुनिंदा q का एक गुणक है, p-1 का एक 160 बिट प्राइम फैक्टर
g = h चुनें पावर (p-1) / q
किसी भी h1 के लिए
तब प्रत्येक उपयोगकर्ता एक निजी कुंजी चुनता है और अपनी सार्वजनिक कुंजी की गणना करता है:
x कंप्यूट y = g पावर x (mod p) चुनें
डीएसए प्रमुख पीढ़ी से संबंधित है, लेकिन एल गमाल की तुलना में कुछ अधिक जटिल है। अधिकतर इसलिए कि माध्यमिक 160-बिट मापांक q का उपयोग गणना में तेजी लाने और परिणामी हस्ताक्षर के आकार को कम करने में मदद के लिए किया जाता है।
डीएसए सिग्नेचर क्रिएशन एंड वेरिफिकेशन
टू साइन ए मैसेज एम
जनरेट रैंडम सिग्नेचर की k, k कंप्यूट
आर = (जी पावर k (मॉड पी)) (mod q)
s = k-१.SHA (M) + xr (mod q)
सेंड हस्ताक्षर
को सत्यापित करने के लिए संदेश के साथ हस्ताक्षर (r, s) :
w = s-1 (mod q)
u1 = (SHA (M) .w) (mod q)
u2 = rw (mod q)
v = (g शक्ति) u1.y पॉवर u2 (mod p)) (mod q)
यदि v = r है तो हस्ताक्षर सत्यापित है
हस्ताक्षर निर्माण फिर से प्रति संदेश अस्थायी हस्ताक्षर कुंजी k के उपयोग के साथ ElGamal के समान है, लेकिन परिणाम का आकार कम करने के लिए कैल्क पहले मॉड पी, फिर मॉड क्यू। ध्यान दें कि हैश फ़ंक्शन SHA का उपयोग यहाँ स्पष्ट है। सत्यापन में दो संगणनाओं की तुलना करना, फिर से थोड़ा अधिक जटिल होना, लेकिन एल गमाल से संबंधित हैं।
ध्यान दें कि लगभग सभी गणनाएं मॉड क्यू हैं, और इसलिए बहुत तेज हैं।
लेकिन, आरएसए के विपरीत, डीएसए का उपयोग केवल डिजिटल हस्ताक्षर के लिए किया जा सकता है
डीएसए सुरक्षा
एक अचेतन चैनल की उपस्थिति कई योजनाओं में मौजूद है (कोई भी जिसे यादृच्छिक संख्या के लिए चुना जाना चाहिए), न कि केवल डीएसए। यह "सिस्टम सुरक्षा" की आवश्यकता पर जोर देता है, न कि केवल एक अच्छा एल्गोरिथ्म।
नीचे AVA के उत्तर की जाँच करें ।
मेरा पुराना उत्तर गलत लगता है
संदर्भ के man ssh-keygen
साथ, NIST के 186-2 के अनुपालन के लिए DSA कुंजी की लंबाई वास्तव में 1024 बिट तक सीमित है। बहरहाल, लंबे समय तक डीएसए कुंजी सैद्धांतिक रूप से संभव है; दान 186-3 स्पष्ट रूप से उन्हें अनुमति देता है। इसके अलावा, सुरक्षा अब 1024 बिट लंबे आरएसए या डीएसए कुंजी के साथ गारंटी नहीं है।
अंत में, 2048 बिट आरएसए कुंजी वर्तमान में सबसे अच्छा विकल्प है।
एक सुरक्षित SSH कनेक्शन की स्थापना सुरक्षित एन्क्रिप्शन कुंजी जोड़ी प्रौद्योगिकी का चयन करने से अधिक की आवश्यकता होती है। एडवर्ड स्नोडेन के एनएसए खुलासे के मद्देनजर, किसी को पहले से पर्याप्त समझा गया था।
सिर्फ एक उदाहरण का नाम देने के लिए, एक सुरक्षित कुंजी विनिमय एल्गोरिथ्म का उपयोग करना उतना ही महत्वपूर्ण है। यहाँ वर्तमान सर्वोत्तम SSH सख्त प्रथाओं का अच्छा अवलोकन है ।
ssh-keygen
अन्य पुराने आकार की कुंजियों के लिए अनुमति देने के कुछ पुराने संस्करण (मैं खुद ssh-keygen
RHEL पर उपयोग करके उत्पन्न 2048 बिट DSA कुंजी का उपयोग करता हूं )।