हिन्दी

डेवलपर टूल · JWT डिकोडर

डिकोड बनाम सत्यापित: JWT हस्ताक्षर क्या साबित करता है और डिकोडर इसे क्यों छोड़ देते हैं

· यह काम किस प्रकार करता है

जेडब्ल्यूटी सुरक्षा क्रिप्टोग्राफी

पठनीय दावों और क्रिप्टोग्राफ़िक सत्यापन के लिए अलग पथ
मूल ToolAcre वेक्टर चित्रण

डिकोडिंग के लिए किसी कुंजी की आवश्यकता नहीं होती; सत्यापित करने के लिए सही की आवश्यकता है। यह पोस्ट बताती है कि हस्ताक्षर में क्या शामिल है, HMAC और असममित सत्यापन कैसे भिन्न हैं, और क्यों एक डिकोड-केवल टूल कुछ भी साबित नहीं करने के बारे में ईमानदार है।

यह अच्छी तरह से डिकोड हो गया है, इसलिए यह वैध होना चाहिए - वह धारणा जो जाली टोकन स्वीकार करने की ओर ले जाती है

एक हमलावर द्वारा नया पेलोड लिखने और तीसरे खंड के रूप में मनमाना पाठ संलग्न करने के बाद एक टोकन पूरी तरह से डिकोड हो सकता है। Base64url और JSON पार्सिंग सार्वजनिक परिवर्तन हैं; न ही यह जांचता है कि स्ट्रिंग को किसने असेंबल किया है। इसलिए "स्क्रीन पर दिखाई देने वाले दावे" इस बात का सबूत नहीं हैं कि जारीकर्ता ने उन्हें बनाया या अनुमोदित किया है।

ToolAcre कई स्थानों पर इस सीमा को सुदृढ़ करता है। परिणाम में हमेशा `signatureVerified: false` होता है, UI आउटपुट के बगल में एक असत्यापित-दावा अलर्ट दोहराता है, और परीक्षण करता है कि कोई `valid` या `verify` सतह नहीं है। यह जानबूझकर की गई ईमानदारी है, कोई गायब सुविधा सुविधा नहीं।

हस्ताक्षर में क्या शामिल है - एन्कोडेड हेडर और पेलोड के सटीक बाइट्स, एक बिंदु से जुड़े हुए

कॉम्पैक्ट JWS के लिए, साइनिंग इनपुट एन्कोडेड संरक्षित-हेडर सेगमेंट, एक शाब्दिक बिंदु और एन्कोडेड पेलोड सेगमेंट है। सत्यापन उन सटीक एन्कोडेड बाइट्स से संबंधित है, न कि ताज़ा सुंदर मुद्रित JSON से। गुणों को पुन: व्यवस्थित करने या खाली स्थान को बदलने से अलग-अलग बाइट्स बन सकते हैं, तब भी जब कोई मानव समकक्ष वस्तुओं को देखता है।

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

HMAC बनाम असममित - एक साझा रहस्य जिसे सत्यापित करने वाला कोई भी व्यक्ति जालसाज़ी भी कर सकता है, बनाम एक सार्वजनिक कुंजी जो केवल सत्यापित कर सकती है

HMAC के साथ, एक साझा रहस्य MAC को बनाने और जांचने दोनों का समर्थन करता है। उस रहस्य से सत्यापित करने में सक्षम पार्टी दूसरे टोकन का खनन भी कर सकती है, इसलिए गुप्त वितरण ट्रस्ट सीमा को परिभाषित करता है। ToolAcre के नोट्स इसके मान्यता प्राप्त एचएस एल्गोरिदम लेबल के लिए इस परिणाम को स्पष्ट करते हैं।

असममित हस्ताक्षर निजी हस्ताक्षर क्षमता को सार्वजनिक सत्यापन सामग्री से अलग करते हैं। सार्वजनिक कुंजी रखने से हस्ताक्षर करने का अधिकार दिए बिना जाँच में सहायता मिल सकती है। यह अंतर हेडर-घोषित असममित लेबल को भरोसेमंद नहीं बनाता है: सत्यापनकर्ता को पहले से ही पता होना चाहिए कि कौन सा एल्गोरिदम और जारीकर्ता कुंजी स्वीकार्य हैं।

कुंजी कहां से आती है - साझा रहस्यों के लिए कॉन्फ़िगरेशन, सार्वजनिक कुंजी के लिए एक JWKS समापन बिंदु, बच्चे द्वारा मिलान किया गया

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

ToolAcre के पास कोई जारीकर्ता कॉन्फ़िगरेशन नहीं है और कोई कुंजी का अनुरोध नहीं करता है, इसलिए वहां सत्यापन जिम्मेदारी से करना असंभव होगा। एक सामान्य वेब पेज यह अनुमान नहीं लगा सकता है कि आप किस संगठन पर भरोसा करते हैं, आप किस दर्शक वर्ग को सेवा प्रदान करते हैं या आपका एप्लिकेशन किस एल्गोरिदम को अनुमति देता है। वे एप्लिकेशन नीति इनपुट हैं, डिकोडिंग द्वारा खोजे जाने योग्य गुण नहीं।

डिकोडिंग के लिए किसी कुंजी की आवश्यकता क्यों नहीं है - Base64url एक एन्कोडिंग है, एन्क्रिप्शन नहीं, इसलिए कोई भी दावों को पढ़ सकता है

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

JSON पार्सिंग केवल संरचना जोड़ता है। यह आपको बता सकता है कि `roles` एक सरणी है या `exp` एक संख्या है, यह नहीं कि कोई भी मान प्रामाणिक है। ToolAcre संरचित मानों को पाठ के रूप में और पंजीकृत विवरणों को दस्तावेज़ के रूप में प्रस्तुत करता है, जबकि सिस्टम पर प्राधिकरण छोड़ता है जो नीति को सत्यापित और लागू कर सकता है।

कार्यान्वित उदाहरण - एक पेलोड वर्ण के साथ एक टोकन अभी भी पूरी तरह से डिकोड होता है; केवल सत्यापन नोटिस

एक सिंथेटिक टोकन से प्रारंभ करें जिसका पेलोड `{"sub":"demo","role":"reader"}` कहता है। एक एन्कोडेड पेलोड वर्ण बदलें ताकि बाइट्स अभी भी वैध JSON बनें, शायद एक अलग भूमिका उत्पन्न हो। दोनों संस्करण विभाजित, डिकोड और प्रीटी-प्रिंट कर सकते हैं। डिकोड पथ के पास बदले हुए संस्करण को अस्वीकार करने का कोई कारण नहीं है।

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

इसमें क्या शामिल नहीं है - ToolAcre JWT डिकोडर कभी भी डिज़ाइन द्वारा हस्ताक्षर का सत्यापन नहीं करता है; ऐसा कुछ भी नहीं दिखाता जो यह साबित करता हो कि टोकन वास्तविक है

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

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

टेकअवे: निरीक्षण करने के लिए डिकोड करें, विश्वास करने के लिए सत्यापित करें - पहले के लिए ToolAcre JWT डिकोडर का उपयोग करें और दूसरे के लिए सही कुंजी के साथ सर्वर-साइड लाइब्रेरी का उपयोग करें

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

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