PKCE: सार्वजनिक क्लाइंट की सुरक्षा
Proof Key for Code Exchange को समझिए और जानिए कि यह authorization code interception आक्रमणों को कैसे रोकता है।
PKCE: सार्वजनिक क्लाइंट की सुरक्षा, CoddyKit पर Cryptology Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Cryptology Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Cryptology Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
प्राधिकरण कोड का अवरोधन
PKCE के बिना मोबाइल अनुप्रयोग प्राधिकरण कोड अवरोधन हमलों के प्रति असुरक्षित होते हैं। जब प्राधिकरण सर्वर प्राधिकरण कोड को अनुप्रयोग की पंजीकृत कस्टम URI स्कीम (जैसे, myapp://callback) पर पुनर्निर्देशित करता है, तो उसी उपकरण पर वही URI स्कीम पंजीकृत करने वाला कोई भी दुर्भावनापूर्ण अनुप्रयोग उस पुनर्निर्देशन को रोककर कोड चुरा सकता है।
अवरोधन कैसे काम करता है
हमला इस प्रकार होता है: एक दुर्भावनापूर्ण अनुप्रयोग वास्तविक अनुप्रयोग के समान कस्टम URI स्कीम पंजीकृत करता है। जब प्राधिकरण सर्वर कोड को myapp://callback पर पुनर्निर्देशित करता है, तो OS दोनों अनुप्रयोगों को हैंडलर के रूप में दिखा सकता है। यदि उपयोगकर्ता दुर्भावनापूर्ण अनुप्रयोग चुनता है या OS उसे डिफ़ॉल्ट बना देता है, तो हमलावर को प्राधिकरण कोड मिल जाता है और वह क्लाइंट की गोपनीय कुंजी जाने बिना इसे टोकन के बदले भेज सकता है।
PKCE कोड सत्यापक
PKCE (RFC 7636) प्राधिकरण कोड प्रवाह में गतिशील रूप से जनित एक गुप्त मान जोड़ता है। प्रवाह शुरू करने से पहले, क्लाइंट 43-128 वर्णों वाली क्रिप्टोग्राफ़िक रूप से यादृच्छिक स्ट्रिंग बनाता है, जिसे कोड सत्यापक कहा जाता है। यह स्ट्रिंग प्रत्येक प्राधिकरण अनुरोध के लिए अद्वितीय होती है और टोकन विनिमय चरण तक कभी प्रसारित नहीं की जाती।
कोड चुनौती की गणना
क्लाइंट सत्यापक से कोड चुनौती की गणना करता है: code_challenge = BASE64URL(SHA256(code_verifier))। RFC 7636 में SHA256 आवश्यक विधि है ("plain" विधि, जो सत्यापक को सीधे भेजती है, अनुशंसित नहीं है)। कोड चुनौती सत्यापक का एक-तरफ़ा रूपांतरण होती है, अर्थात चुनौती जानने से सत्यापक का पता नहीं चलता।
प्राधिकरण में कोड चुनौती शामिल करना
प्राधिकरण अनुरोध में दो अतिरिक्त पैरामीटर शामिल होते हैं: "code_challenge=BASE64URL(SHA256(verifier))&code_challenge_method=S256"। प्राधिकरण सर्वर जारी किए गए प्राधिकरण कोड से संबद्ध कोड चुनौती को संग्रहीत करता है। इस चरण में सर्वर को ऐसा कोई गुप्त मान नहीं भेजा जाता जिसे रोका जा सके।
कोड सत्यापक के साथ टोकन विनिमय
टोकन विनिमय के दौरान (टोकन एंडपॉइंट पर POST), क्लाइंट प्राधिकरण कोड के साथ "code_verifier=ORIGINAL_RANDOM_STRING" शामिल करता है। प्राधिकरण सर्वर BASE64URL(SHA256(code_verifier)) की गणना करता है और सत्यापित करता है कि यह संग्रहीत code_challenge से मेल खाता है। केवल वही वास्तविक क्लाइंट यह जाँच पास कर सकता है जिसने सत्यापक बनाया हो।
PKCE के साथ अवरोधन क्यों विफल होता है
यदि कोई हमलावर प्राधिकरण कोड रोक लेता है, तो उसे केवल कोड और कोड चुनौती मिलती है, जो सार्वजनिक होती है। कोड को टोकन के बदले भेजने के लिए उसे कोड सत्यापक देना होगा। सत्यापक वास्तविक क्लाइंट द्वारा बनाया गया था और टोकन विनिमय तक कभी प्रसारित नहीं किया गया, जो सुरक्षित रूप से होता है; इसलिए हमलावर सत्यापक की गणना या उसे प्राप्त नहीं कर सकता।
PKCE कोड इंजेक्शन से बचाता है
PKCE प्राधिकरण कोड इंजेक्शन हमलों से भी बचाता है, जिनमें हमलावर रीडायरेक्ट में वैध कोड को चुराए गए कोड से बदल देता है। चुराए गए कोड की चुनौती पीड़ित के क्लाइंट द्वारा भेजे जाने वाले सत्यापक से मेल नहीं खाती, इसलिए टोकन विनिमय विफल हो जाता है। PKCE एक साथ कई आक्रमण मार्गों के विरुद्ध अतिरिक्त सुरक्षा प्रदान करता है।
PKCE सभी क्लाइंट के लिए
हालाँकि RFC 7636 को आरंभ में सार्वजनिक क्लाइंटों (जिनके पास क्लाइंट रहस्य नहीं होते) के समाधान के रूप में प्रस्तुत किया गया था, OAuth सुरक्षा BCP और OAuth 2.1 में सभी क्लाइंटों के लिए PKCE आवश्यक है, जिसमें क्लाइंट रहस्यों वाले गोपनीय क्लाइंट भी शामिल हैं। PKCE क्लाइंट प्रमाणीकरण से स्वतंत्र सुरक्षा प्रदान करता है, इसलिए यह सभी के लिए लाभदायक है।
OAuth 2.1 में PKCE
OAuth 2.1 (draft-ietf-oauth-v2-1) OAuth 2.0 सुरक्षा BCP की सुरक्षा संबंधी सर्वोत्तम प्रथाओं को एक ही दस्तावेज़ में समेकित करता है। इसमें सभी प्राधिकरण कोड प्रवाहों के लिए PKCE अनिवार्य है, अंतर्निहित प्रवाह को अप्रचलित घोषित किया गया है और रिफ्रेश टोकन का घुमाव आवश्यक है। किसी भी नए OAuth 2.0 कार्यान्वयन के लिए PKCE प्रभावी रूप से आवश्यक आधारभूत मानक है।
कार्यान्वयन संबंधी टिप्पणियाँ
PKCE को सही ढंग से लागू करने के लिए इन बातों की आवश्यकता होती है: सत्यापक के लिए क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक जनित्र का उपयोग करना (कम-से-कम 32 यादृच्छिक बाइट, फिर base64url में एन्कोड किया हुआ), सत्यापक को क्लाइंट में सुरक्षित रूप से रखना (URL या लॉग अभिलेखों में नहीं), S256 विधि का उपयोग करना (plain का नहीं), और यह सुनिश्चित करना कि टोकन विनिमय के बाद सत्यापक हटा दिया जाए। अधिकांश आधुनिक OAuth लाइब्रेरी PKCE को अपने-आप संभालती हैं।
PKCE कोड सत्यापक की जाँच
PKCE में कोड सत्यापक और कोड चुनौती के बीच क्या संबंध होता है?
पाठ का पुनरावलोकन: PKCE सुरक्षा
PKCE (RFC 7636) प्रत्येक कोड को केवल वैध क्लाइंट को ज्ञात, गतिशील रूप से बनाए गए कोड सत्यापक से बाँधकर प्राधिकरण कोड के अवरोधन को रोकता है। सत्यापक का हैश बनाकर कोड चुनौती तैयार की जाती है, जिसे सार्वजनिक रूप से भेजा जाता है। टोकन विनिमय के लिए मूल सत्यापक आवश्यक होता है। PKCE अवरोधन और इंजेक्शन, दोनों हमलों से बचाता है। OAuth 2.1 सभी प्राधिकरण कोड प्रवाहों के लिए PKCE अनिवार्य करता है।
एआई शिक्षक के साथ Cryptology Academy सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 67
- पाठ
- 261
अक्सर पूछे जाने वाले प्रश्न
क्या “PKCE: सार्वजनिक क्लाइंट की सुरक्षा” पाठ निःशुल्क है?
हाँ—“PKCE: सार्वजनिक क्लाइंट की सुरक्षा” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Cryptology Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Cryptology Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“PKCE: सार्वजनिक क्लाइंट की सुरक्षा” में मैं क्या सीखूँगा?
Proof Key for Code Exchange को समझिए और जानिए कि यह authorization code interception आक्रमणों को कैसे रोकता है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cryptology Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Cryptology Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Cryptology Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“PKCE: सार्वजनिक क्लाइंट की सुरक्षा” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Cryptology Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Cryptology Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- OAuth 2.0 प्रवाह और टोकन के प्रकार
- PKCE: सार्वजनिक क्लाइंट की सुरक्षा
- OpenID Connect दावे और ID टोकन
- OAuth की कमज़ोरियाँ और आक्रमण के पैटर्न