1. खास जानकारी
Cloud KMS, क्लाउड पर होस्ट की गई की मैनेजमेंट सेवा है. इसकी मदद से, अपनी क्लाउड सेवाओं के लिए क्रिप्टोग्राफ़िक कुंजियों को उसी तरह मैनेज किया जा सकता है जिस तरह ऑन-प्रिमाइसेस पर किया जाता है. इसमें एन्क्रिप्शन, डिक्रिप्शन, हस्ताक्षर करने, और पुष्टि करने की सुविधा शामिल है. इसके लिए, अलग-अलग तरह की कुंजियों और सोर्स का इस्तेमाल किया जाता है. जैसे, हार्डवेयर की मदद से सुरक्षित की गई कुंजियों के लिए Cloud HSM. इस ट्यूटोरियल में, Cloud KMS की एसिमेट्रिक कुंजियों का इस्तेमाल करके, डेटा के लिए हस्ताक्षर करने और उसकी पुष्टि करने का तरीका बताया गया है.
आपको यह जानकारी मिलेगी
- Cloud KMS API चालू करने का तरीका
- की-रिंग बनाने का तरीका
- एसिमेट्रिक हस्ताक्षर/पुष्टि के लिए क्रिप्टो कुंजी बनाने का तरीका
2. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)
प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोडलैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.
- इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.
इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.
Cloud Shell शुरू करें
इस कोडलैब में, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud पर चलने वाला एक मुफ़्त वर्चुअलाइज्ड एनवायरमेंट है. GCP Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:
इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगते हैं. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. इसमें 5 जीबी की होम डायरेक्ट्री होती है, जो हमेशा उपलब्ध रहती है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. जब तक कोई और निर्देश न दिया जाए, तब तक इस शेल से सभी कमांड चलाएं.
3. Cloud KMS सेवा चालू करना
Cloud KMS का इस्तेमाल करने से पहले, आपको अपने प्रोजेक्ट में यह सेवा चालू करनी होगी. यह प्रोसेस हर प्रोजेक्ट के लिए सिर्फ़ एक बार करनी होती है. Cloud KMS सेवा चालू करने के लिए, यह कमांड चलाएं:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
इसे चालू होने में एक मिनट लग सकता है. यह निर्देश पूरा होने पर, आपको इसकी सूचना दी जाएगी.
4. KMS कुंजी बनाना
Cloud KMS की-रिंग बनाएं. Cloud KMS में, की-रिंग क्रिप्टोग्राफ़िक कुंजियों का लॉजिकल कलेक्शन होता है. की-रिंग में कुंजियों के बारे में मेटाडेटा होता है. जैसे, उनकी जगह की जानकारी. global क्षेत्र में my-keyring नाम की की-रिंग बनाएं:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
अब, आपने जो की-रिंग बनाई है उसमें my-asymmetric-signing-key नाम की क्रिप्टो कुंजी बनाएं. इसका मकसद asymmetric-signing होना चाहिए.
$ gcloud kms keys create "my-asymmetric-signing-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-signing" \
--default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. हस्ताक्षर का डेटा
एन्क्रिप्शन के उलट, Cloud KMS की एसिमेट्रिक कुंजी का इस्तेमाल करके एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट करने के लिए, Cloud KMS सेवा का ऑनलाइन ऐक्सेस होना ज़रूरी है. gcloud कमांड-लाइन टूल का इस्तेमाल करके, फ़ाइल से साइफ़रटेक्स्ट को डिक्रिप्ट करें:
हस्ताक्षर करने के लिए डेटा वाली फ़ाइल बनाएं. इसके बाद, Cloud KMS की कुंजी की मदद से डेटा पर हस्ताक्षर करने के लिए, gcloud कमांड लाइन टूल का इस्तेमाल करें:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--version "1" \
--digest-algorithm "sha512" \
--input-file ./data.txt \
--signature-file ./data.txt.sig
हस्ताक्षर को डिस्क पर data.txt.sig में सेव किया जाता है. data.txt.sig फ़ाइल खोलने पर, आपको पता चलेगा कि इसमें अजीब और प्रिंट न किए जा सकने वाले वर्ण हैं. ऐसा इसलिए है, क्योंकि नतीजे के तौर पर मिला डेटा बाइनरी फ़ॉर्मैट में होता है.
डेटाबेस में हस्ताक्षर सेव करते समय या एचटीटीपी अनुरोध के हिस्से के तौर पर इसे ट्रांसमिट करते समय, आपको डेटा को कोड में बदलना पड़ सकता है. base64, कोड में बदलने का एक सामान्य तरीका है.
6. डेटा की पुष्टि करना
एसिमेट्रिक कुंजियों के साथ, Cloud KMS सीधे तौर पर पुष्टि नहीं करता है. इसके बजाय, यह सार्वजनिक पासकोड का ऐक्सेस देता है. साथ ही, सार्वजनिक पासकोड क्रिप्टोग्राफ़ी का इस्तेमाल करके, उस सार्वजनिक पासकोड की मदद से डेटा की पुष्टि की जाती है. एसिमेट्रिक कुंजियों की मदद से, पुष्टि पूरी तरह से ऑफ़लाइन की जा सकती है. इसके लिए, Cloud KMS या किसी अन्य Google Cloud API को ऐक्सेस करने की ज़रूरत नहीं होती. पुष्टि करने के लिए, openssl जैसे क्रिप्टोग्राफ़िक टूल का इस्तेमाल किया जाता है. इसके अलावा, प्रोग्रामिंग लैंग्वेज या लाइब्रेरी का इस्तेमाल किया जाता है जो सार्वजनिक पासकोड क्रिप्टोग्राफ़ी के साथ काम करती है.
Cloud KMS से सार्वजनिक कुंजी डाउनलोड करें:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--output-file ./key.pub
openssl कमांड लाइन टूल का इस्तेमाल करके, सार्वजनिक पासकोड के हिसाब से हस्ताक्षर की पुष्टि करें:
$ openssl dgst -sha256 \
-verify ./key.pub \
-signature ./data.txt.sig ./data.txt
कंसोल पर एक मैसेज दिखेगा, जिसमें बताया जाएगा कि डिजिटल हस्ताक्षर मान्य है.
Verified OK
7. बधाई हो!
आपने Cloud KMS API चालू कर दिया है, एसिमेट्रिक साइनिंग की बना ली है, और डेटा पर हस्ताक्षर करके उसकी पुष्टि कर ली है! Cloud KMS एक बेहतरीन प्रॉडक्ट है. हस्ताक्षर करने/पुष्टि करने की सुविधा, इसकी क्षमताओं का सिर्फ़ एक हिस्सा है.
खाली करने के लिए जगह
अगर आपने एक्सप्लोर कर लिया है, तो कृपया अपना प्रोजेक्ट मिटा दें.
- Cloud Platform Console पर जाएं
- वह प्रोजेक्ट चुनें जिसे बंद करना है. इसके बाद, सबसे ऊपर मौजूद "मिटाएं" पर क्लिक करें. इससे प्रोजेक्ट को मिटाने के लिए शेड्यूल किया जाता है.
ज़्यादा जानें
लाइसेंस
इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.