क्लाउड केएमएस (एसिमेट्रिक) की मदद से डेटा को एन्क्रिप्ट (सुरक्षित) और डिक्रिप्ट करें

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. केएमएस पासकोड बनाना

Cloud KMS की-रिंग बनाएं. Cloud KMS में, की-रिंग क्रिप्टोग्राफ़िक कुंजियों का लॉजिकल कलेक्शन होता है. की-रिंग में कुंजियों के बारे में मेटाडेटा होता है. जैसे, उनकी जगह की जानकारी. global क्षेत्र में my-keyring नाम की की-रिंग बनाएं:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

अब, my-asymmetric-encryption-key नाम की क्रिप्टो कुंजी बनाएं. इसे asymmetric-encryption के लिए इस्तेमाल किया जाएगा. इसे उस की-रिंग में बनाएं जिसे आपने अभी बनाया है.

$ gcloud kms keys create "my-asymmetric-encryption-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "asymmetric-encryption" \
    --default-algorithm "rsa-decrypt-oaep-4096-sha512"

5. डेटा एन्क्रिप्ट (सुरक्षित) करना

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

Cloud KMS से सार्वजनिक पासकोड डाउनलोड करें:

$ gcloud kms keys versions get-public-key "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-encryption-key" \
    --output-file ./key.pub

एन्क्रिप्ट करने के लिए डेटा वाली फ़ाइल बनाएं. इसके बाद, फ़ाइल में मौजूद डेटा को एन्क्रिप्ट करने के लिए, openssl कमांड लाइन टूल का इस्तेमाल करें:

$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \
    -in ./data.txt \
    -inkey ./key.pub \
    -pkeyopt "rsa_padding_mode:oaep" \
    -pkeyopt "rsa_oaep_md:sha512" \
    -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc

एन्क्रिप्ट (सुरक्षित) किए गए डेटा को डिस्क पर data.txt.enc में सेव किया जाएगा. इसे "साइफ़रटेक्स्ट" भी कहा जाता है. data.txt.enc फ़ाइल खोलने पर, आपको पता चलेगा कि इसमें अजीब वर्ण हैं जिन्हें प्रिंट नहीं किया जा सकता. ऐसा इसलिए है, क्योंकि नतीजे के तौर पर मिला डेटा बाइनरी फ़ॉर्मैट में होता है.

डेटाबेस में सिफ़रटेक्स्ट सेव करते समय या एचटीटीपी अनुरोध के हिस्से के तौर पर उसे ट्रांसमिट करते समय, आपको डेटा को कोड में बदलना पड़ सकता है. साइफ़रटेक्स्ट को कोड में बदलने के लिए, Base64 का इस्तेमाल सबसे ज़्यादा किया जाता है.

Cloud KMS, आपके दिए गए किसी भी प्लेनटेक्स्ट को स्टोर नहीं करता है. आपको इस सिफ़रटेक्स्ट को किसी सुरक्षित जगह पर सेव करना होगा, क्योंकि इसकी ज़रूरत प्लेनटेक्स्ट वैल्यू को वापस पाने के लिए होगी.

6. डेटा डिक्रिप्ट करना

एन्क्रिप्शन के उलट, Cloud KMS की एसिमेट्रिक कुंजी का इस्तेमाल करके एन्क्रिप्ट किए गए डेटा को डिक्रिप्ट करने के लिए, Cloud KMS सेवा को ऑनलाइन ऐक्सेस करना ज़रूरी है. gcloud कमांड-लाइन टूल का इस्तेमाल करके, फ़ाइल से साइफ़रटेक्स्ट को डिक्रिप्ट करें:

$ gcloud kms asymmetric-decrypt \


    --location "global" \
    --keyring "my-keyring" \
    --key "my-asymmetric-encryption-key" \
    --version "1" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

gcloud कमांड लाइन टूल, फ़ाइल से सिफ़रटेक्स्ट को पढ़ता है और Cloud KMS का इस्तेमाल करके उसे डिक्रिप्ट करता है. ध्यान दें कि इस उदाहरण में, --plaintext-file आर्ग्युमेंट को - के तौर पर तय किया गया है. इससे gcloud को टर्मिनल पर नतीजा प्रिंट करने का निर्देश मिलता है.

कंसोल, my-contents प्रिंट करेगा. यह ऊपर दी गई फ़ाइल की प्लेनटेक्स्ट वैल्यू के बराबर है.

7. बधाई हो!

आपने Cloud KMS API चालू किया, एसिमेट्रिक एन्क्रिप्शन कुंजी बनाई, और डेटा को एन्क्रिप्ट (सुरक्षित) और डिक्रिप्ट किया! Cloud KMS एक बेहतरीन प्रॉडक्ट है. एन्क्रिप्शन/डिक्रिप्शन, इसकी सुविधाओं का सिर्फ़ एक हिस्सा है.

खाली करने के लिए जगह

अगर आपने एक्सप्लोर कर लिया है, तो कृपया अपना प्रोजेक्ट मिटा दें.

  • Cloud Platform Console पर जाएं
  • वह प्रोजेक्ट चुनें जिसे बंद करना है. इसके बाद, सबसे ऊपर मौजूद "मिटाएं" पर क्लिक करें. इससे प्रोजेक्ट को मिटाने के लिए शेड्यूल किया जाता है.

ज़्यादा जानें

लाइसेंस

इस काम के लिए, Creative Commons एट्रिब्यूशन 2.0 जेनेरिक लाइसेंस के तहत लाइसेंस मिला है.