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

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

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

You will learn

  • 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 Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद 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 कुंजी बनाना

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