आपको जावा में एन्क्रिप्शन के बारे में जानना होगा



यह लेख आपको जावा में एन्क्रिप्शन के विस्तृत और व्यापक ज्ञान और उदाहरणों के साथ इसका उपयोग करने का तरीका प्रदान करेगा।

एन्क्रिप्शन गणितीय एल्गोरिदम का उपयोग करने के लिए सूचना के एक टुकड़े के अर्थ को छलावरण करने की विधि है, ताकि केवल अधिकृत पक्ष ही इसे समझ सकें। इस लेख में, हम एन्क्रिप्शन और डिक्रिप्शन में चर्चा करेंगे निम्नलिखित क्रम में:

जावा में एन्क्रिप्शन का परिचय

एन्क्रिप्शन हमारे डेटा (जैसे ग्रंथ, वार्तालाप विज्ञापन आवाज) की रक्षा के लिए लागू किया जाता है, चाहे वह कंप्यूटर पर बैठा हो या इसे इंटरनेट पर भेजा जाता है। हाल की एन्क्रिप्शन प्रौद्योगिकियाँ किसी भी सुरक्षित कंप्यूटिंग वातावरण के आवश्यक तत्व हैं।





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

जावा में एन्क्रिप्शन और डिक्रिप्शन



सममित एन्क्रिप्शन

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

जानने के लिए आसान नहीं है

असममित (या सार्वजनिक कुंजी) एन्क्रिप्शन एल्गोरिदम

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



किसी भी बुनियादी एन्क्रिप्शन योजना को सुरक्षित रूप से कॉन्फ़िगर करने के लिए, यह बहुत महत्वपूर्ण है कि ऐसे सभी पैरामीटर (न्यूनतम पर) सही तरीके से डिज़ाइन किए गए हों:

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

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

वर्ग पदानुक्रमों की शुरुआत, बहुत सारे अतिभारित निर्माणकर्ता / तरीके और इतने पर, कई जटिलताओं को जोड़ते हैं, जो इसे अनावश्यक बनाते हैं। काश जावा बुनियादी विन्यास को जटिल नहीं करता और बस Microsoft की तरह एक अधिक सरलीकृत वास्तुकला को रोजगार देता, जहां ऐसे सभी पैरामीटर एक एकल वर्ग सममिति एल्गोरिथम और असममित एल्गोरिथम की परिधि के भीतर होते हैं। निर्दिष्ट किए जाने वाले पहले तीन मापदंडों के लिए (एल्गोरिथ्म, ऑपरेशन का मोड और पेडिंग स्कीम), एक सिफर ऑब्जेक्ट एक परिवर्तन स्ट्रिंग का उपयोग करता है।

  • सही एल्गोरिदम चुनना

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

एक टोकन जावा क्या है

शेष एल्गोरिदम या तो अत्यधिक टूट गए हैं (डीईएस, आरसी 2, आदि) या दरारें सतह (आरसी 5) के लिए शुरू हो गई हैं, जिससे यह पर्याप्त सीपीयू शक्ति के साथ टूटने योग्य हो जाता है - यह आपके द्वारा पढ़े जाने वाले समय तक पहले से ही टूट सकता है। सिक्योरिटी-माइंडेड डेवलपर एनआईएसटी विनिर्देशों के टोट्स को नहीं पढ़ सकता है, न ही क्रिप्टोग्राफी समुदाय में नवीनतम घटनाओं और शोध का पालन कर सकता है। वे टूटे हुए या जोखिम भरे एल्गोरिदम, पचाने या छद्म यादृच्छिक जनरेटर को उठा सकते हैं।

हमेशा के लिए:

  1. सममितीय एल्गोरिथ्म: एईएस / एईएसप्रैप ब्लॉक सिफर का उपयोग किया जाता है।

  2. असममित एल्गोरिथम: आरएसए का उपयोग किया जाता है।

  • संचालन का तरीका

ऑपरेशन का तरीका परिवर्तन का एक हिस्सा है और केवल सिफर को ब्लॉक करने के लिए प्रासंगिक है। जब हम असममित सिफर का उपयोग करते हैं, तो ईसीबी को ऑपरेशन के मोड के रूप में उपयोग करते हैं, जो अनिवार्य रूप से हैक के पीछे का दृश्य है, जिसका अर्थ है कि इस मूल्य को अनदेखा करें। जावा प्रदाता जैसे SunJCE, SunPKCS11 सममित और असममित एल्गोरिदम के लिए ECB मोड में चूक करते हैं। यह असममित एल्गोरिदम के लिए एक अच्छी बात हो सकती है, लेकिन ब्लॉक सिफर के लिए एक बुरा विचार है।

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

जैसा कि ऊपर कहा गया है, एईएस एल्गोरिथ्म को ईसीबी मोड ऑफ ऑपरेशन के साथ उपयोग किया जाएगा, जिससे रिप्ले हमलों को बहुत आसान बना दिया जाएगा। नए विकास के लिए, यदि पुराने काम को फिर से शुरू करने की थोड़ी संभावना है, तो हमें संबंधित डेटा (AEAD) मोड (उदाहरण के लिए GCM और CCM) के साथ प्रमाणित एन्क्रिप्शन का उपयोग करना चाहिए। हमारे पास एक प्रमाणीकरण टैग है जिसमें पूर्ण 128 बिट्स-लंबाई है। यदि हम एक unauthenticated मोड का उपयोग करते हैं तो हम CBC या CTR का उपयोग मैक के साथ सिफरटेक्स्ट को प्रमाणित करने के लिए करते हैं।

  • उचित पैडिंग योजना का चयन

सामान्य ब्लॉक सिफर मोड को अंतर्निहित एन्क्रिप्शन एल्गोरिथ्म के ब्लॉक आकार के कई होने के लिए सादे पाठ की लंबाई की आवश्यकता होती है, जो कि शायद ही कभी होता है। इस प्रकार, हमें कुछ पैडिंग की आवश्यकता है।जावा कार्यक्रम हमें सममित एन्क्रिप्शन के लिए तीन अलग-अलग योजनाएं प्रदान करता है, एक नो पेडिंग, जो अस्वीकार्य है, और दूसरा ISO10126Padding है जिसे 2007 से वापस ले लिया गया है)।

इसलिए, एकमात्र उपयुक्त विकल्प PKCS5Padding का उपयोग कर रहा है। ऑपरेशन के कुछ साधनों का मिश्रण (उदाहरण के लिए CBC मोड) और PKCS5Padding गद्दी योजना से गद्दी हमले हो सकते हैं। पैडिंग स्कीम का उल्लेख नहीं करना एक ऐसी योजना प्रदान करने से अधिक खतरनाक है जो केवल कुछ प्रकार के हमलों के लिए अतिसंवेदनशील है। ऑपरेशन का AEAD मोड यह सुनिश्चित करने के लिए सबसे अधिक अनुशंसित है कि आप इन हमलों से सुरक्षित रहें।

  • असममित एल्गोरिदम

असममित एल्गोरिदम में, हमारे पास दो पैडिंग योजनाओं से चुनने का विकल्प है। यह सुनिश्चित करना महत्वपूर्ण है कि केवल OAEPWithAndPadding योजनाओं का उपयोग किया जाता है। पाचन के मामले में, कृपया या तो SHA1 या SHA256 / 384/512 का उपयोग करें। मास्क जनरेशन फंक्शन (MGF) के लिए, कृपया निर्दिष्ट के रूप में MGF1 पैडिंग का उपयोग करें। RSA के साथ PKCS1Padding 1998 के बाद से सिफरटेक्स्ट हमलों [6] के लिए असुरक्षित रहा है।

यहाँ हम 'Cipher.getInstance' विधि में परिवर्तन का उपयोग करने के सही तरीके के बारे में बात करते हैं।

कैसे जावास्क्रिप्ट में एक सरणी की लंबाई पाने के लिए
  • सममित एन्क्रिप्शन

  • असममित एन्क्रिप्शन

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

इसके साथ, हम जावा लेख में एन्क्रिप्शन के अंत में आते हैं। मुझे आशा है कि आपको एन्क्रिप्शन और डिक्रिप्शन का एक विचार मिल गया है और इसका उपयोग जावा में क्यों किया जाता है।

इसकी जाँच पड़ताल करो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम उन छात्रों और पेशेवरों के लिए डिज़ाइन किया गया है जो जावा डेवलपर बनना चाहते हैं। पाठ्यक्रम आपको जावा प्रोग्रामिंग में एक शुरुआत देने के लिए डिज़ाइन किया गया है और आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करता है।

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