Cloud KMS (असिमेट्रिक) की मदद से डेटा पर हस्ताक्षर करना और उसकी पुष्टि करना

1. खास जानकारी

Cloud KMS, क्लाउड पर होस्ट की जाने वाली कुंजी मैनेजमेंट सेवा है. इसकी मदद से, अपनी क्लाउड सेवाओं के लिए क्रिप्टोग्राफ़िक कुंजियों को उसी तरह मैनेज किया जा सकता है जिस तरह ऑन-प्राइमिस में किया जाता है. इसमें अलग-अलग तरह की कुंजियों और सोर्स का इस्तेमाल करके, एन्क्रिप्शन (सुरक्षित करना), डिक्रिप्शन (सुरक्षित किए गए डेटा को वापस उसका मूल रूप देना), हस्ताक्षर करने, और पुष्टि करने की सुविधा मिलती है. इनमें हार्डवेयर की मदद से सुरक्षित की गई कुंजियों के लिए, Cloud HSM भी शामिल है. इस ट्यूटोरियल में, असिमेट्रिक Cloud KMS कुंजियों का इस्तेमाल करके, डेटा पर हस्ताक्षर करने और उसकी पुष्टि करने का तरीका बताया गया है.

आपको यह जानकारी मिलेगी

  • Cloud KMS API को चालू करने का तरीका
  • की-रिंग बनाने का तरीका
  • असिमेट्रिक साइनिंग/पुष्टि के लिए क्रिप्टो पासकोड बनाने का तरीका

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से कोई Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट में एक यूनीक नाम होता है. माफ़ करें, ऊपर दिया गया नाम पहले से ही ले लिया गया है और यह आपके लिए काम नहीं करेगा! इस कोडलैब में बाद में इसे PROJECT_ID कहा जाएगा.

  1. इसके बाद, Google Cloud के संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग की सुविधा चालू करनी होगी.

इस कोडलैब को चलाने में आपको ज़्यादा खर्च नहीं करना पड़ेगा. "साफ़-सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इनमें, संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपसे कोई शुल्क न लिया जाए. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.

Cloud Shell शुरू करना

इस कोडलैब में, आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud पर चलने वाला, बिना किसी शुल्क के इस्तेमाल किया जा सकने वाला वर्चुअल एनवायरमेंट है. GCP कंसोल में, सबसे ऊपर दाएं टूलबार में मौजूद Cloud Shell आइकॉन पर क्लिक करें:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

एनवायरमेंट से कनेक्ट होने और उसे प्रोवाइड करने में सिर्फ़ कुछ मिनट लगेंगे. इसके पूरा होने पर, आपको कुछ ऐसा दिखेगा:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. यह Google Cloud पर चलता है, जिससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की सुविधा बेहतर होती है. जब तक कोई और निर्देश न दिया जाए, तब तक इस शेल से सभी निर्देश चलाएं.

3. Cloud KMS सेवा चालू करना

Cloud KMS का इस्तेमाल करने से पहले, आपको अपने प्रोजेक्ट में इस सेवा को चालू करना होगा. हर प्रोजेक्ट के लिए, आपको सिर्फ़ एक बार ऐसा करना होगा. Cloud KMS सेवा को चालू करने के लिए, यह कमांड चलाएं:

$ gcloud services enable cloudkms.googleapis.com \
    --project "${GOOGLE_CLOUD_PROJECT}"

चालू होने में एक मिनट लग सकता है. निर्देश पूरा होने पर, आपको इसकी सूचना दी जाएगी.

4. केएमएस (KMS) कुंजी बनाना

क्लाउड केएमएस (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 के किसी भी अन्य एपीआई का ऐक्सेस ज़रूरी नहीं है. पुष्टि करने के लिए, 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 Attribution 2.0 जनरल लाइसेंस के तहत लाइसेंस मिला है.