API की और सीक्रेट कैसे जनरेट और संभाले जाने चाहिए?
सीक्रेट उतना ही मज़बूत है जितनी उसकी रैंडमनेस: की और टोकन क्रिप्टोग्राफ़िक रूप से सुरक्षित जनरेटर से कम से कम 128 बिट एंट्रॉपी (HMAC की के लिए 256) के साथ आने चाहिए, कभी पासवर्ड या टाइमस्टैम्प से नहीं। RSA की 2048 बिट या अधिक हों, सीमित अनुमति वाली PEM फ़ाइलों में। सीक्रेट वॉल्ट या एनवायरनमेंट कॉन्फ़िगरेशन में रहें, तय समय पर रोटेट हों, और कभी सोर्स कोड, लॉग या URL में न हों।
सुरक्षा नोट: यहाँ जनरेट किया गया कुछ भी उतना ही निजी है जितनी वह जगह जहाँ आप इसे आगे पेस्ट करते हैं। की को लोकली जनरेट करें, सीक्रेट मैनेजर में रखें, और जो भी की कभी रिपॉज़िटरी में कमिट हुई या चैट में साझा हुई उसे रोटेट करें।
RSA की जनरेटर कैसे इस्तेमाल करें
- की का साइज़, एल्गोरिदम और हैश चुनें।
- Generate पर क्लिक करें (4096-बिट कीज़ बनने में कुछ सेकंड लग सकते हैं)।
- private.pem और public.pem डाउनलोड करें या JWK कॉपी करें।
- प्राइवेट की गुप्त रखें; सिर्फ़ पब्लिक की प्रकाशित करें।
RSA की जनरेटर की खूबियाँ
- crypto.subtle.generateKey से बनी 2048, 3072 या 4096-बिट कीज़
- RSASSA-PKCS1-v1_5 (RS256/384/512), RSA-PSS (PS256/384/512) या RSA-OAEP
- PEM एक्सपोर्ट: PKCS#8 प्राइवेट की और SPKI पब्लिक की
- alg और use सेट के साथ वैकल्पिक JWK एक्सपोर्ट
- सुझाया गया JWT एल्गोरिदम और kid; OpenSSL तथा SSH के लिए कन्वर्ज़न संकेत
- सब कुछ लोकल होता है — प्राइवेट कीज़ कभी अपलोड नहीं होतीं
RSA की जनरेटर का उदाहरण
RS256 की पेयर
इनपुट:
Key size: 2048 · Algorithm: RSASSA-PKCS1-v1_5 · Hash: SHA-256आउटपुट:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC…
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA…
-----END PUBLIC KEY-----RSA की जनरेटर के बारे में अक्सर पूछे जाने वाले सवाल
मुझे कौन-सा की साइज़ चुनना चाहिए?
2048 बिट आम न्यूनतम है और जल्दी बन जाता है। 3072 बिट उस 128-बिट सुरक्षा स्तर तक पहुँचता है जिसकी सिफ़ारिश 2030 के बाद इस्तेमाल होने वाली कीज़ के लिए की जाती है। 4096 बिट सबसे सतर्क विकल्प है, पर बनाने और इस्तेमाल करने में साफ़ तौर पर धीमा है।
PKCS#8 और PKCS#1 PEM में क्या अंतर है?
PKCS#8 ("BEGIN PRIVATE KEY") आधुनिक, एल्गोरिदम-निरपेक्ष कंटेनर है, जिसे WebCrypto एक्सपोर्ट करता है। पुराने टूल PKCS#1 ("BEGIN RSA PRIVATE KEY") की अपेक्षा करते हैं; बदलने के लिए: openssl rsa -in private.pem -traditional -out private-pkcs1.pem।
क्या मैं इन कीज़ का इस्तेमाल JWT RS256 के लिए कर सकता हूँ?
हाँ। SHA-256 के साथ RSASSA-PKCS1-v1_5 चुनें, अपने सर्वर पर प्राइवेट की से साइन करें और वेरिफ़िकेशन के लिए पब्लिक की (या उसका JWK) प्रकाशित करें। PS256 के लिए RSA-PSS चुनें।
क्या मैं इन्हें SSH के लिए इस्तेमाल कर सकता हूँ?
सीधे नहीं: SSH अपना ही पब्लिक-की फ़ॉर्मेट इस्तेमाल करता है। PEM को "ssh-keygen -i -m PKCS8 -f public.pem" से बदलें, या ssh-keygen से ही SSH कीज़ बनाएँ।
क्या कीज़ वाकई लोकल बनती हैं?
हाँ — crypto.subtle.generateKey आपके ब्राउज़र के भीतर ही चलता है। कुछ भी कहीं नहीं भेजा जाता, और पेज छोड़ने के बाद उसके पास कोई प्रति नहीं रहती।
तकनीकी नोट्स
WebCrypto पब्लिक एक्सपोनेंट 65537 के साथ की पेयर बनाता है और DER संरचनाएँ एक्सपोर्ट करता है (प्राइवेट की के लिए PKCS#8, पब्लिक की के लिए SubjectPublicKeyInfo)। टूल उस DER को 64 कैरेक्टर की लाइनों में Base64 एन्कोड करके PEM आवरण जोड़ता है, जिससे बनी फ़ाइलें OpenSSL, Node.js, Java और हर JOSE लाइब्रेरी स्वीकार करती हैं।
संदर्भ
- RFC 4086: Randomness Requirements for Securityसीक्रेट, की और टोकन को क्रिप्टोग्राफ़िक रूप से मज़बूत रैंडमनेस की ज़रूरत क्यों है और कितनी एंट्रॉपी पर्याप्त है।
- NIST SP 800-57 Part 1 Rev. 5: Recommendation for Key Managementकी साइज़, एल्गोरिद्म की मज़बूती और की की अवधि — 2048-बिट RSA और 256-बिट सिमेट्रिक की आज की बेसलाइन क्यों हैं।
- OWASP Cheat Sheet Series: Secrets ManagementAPI की और सीक्रेट कैसे जनरेट, स्टोर, रोटेट किए जाएँ और कोड व लॉग से बाहर रखे जाएँ।