تشفير البيانات وفك تشفيرها باستخدام Cloud KMS

1. نظرة عامة

‫Cloud KMS هي خدمة إدارة مفاتيح مستضافة على السحابة الإلكترونية تتيح لك إدارة مفاتيح التشفير لخدماتك السحابية بالطريقة نفسها التي تديرها بها في الموقع. يتيح هذا المنتج التشفير وفك التشفير والتوقيع والتحقّق باستخدام مجموعة متنوعة من أنواع المفاتيح والمصادر، بما في ذلك Cloud HSM للمفاتيح المحمية بواسطة الأجهزة. يعلّمك هذا البرنامج التعليمي كيفية تشفير البيانات وفك تشفيرها باستخدام مفاتيح متماثلة في Cloud KMS.

ستتعرّف على

  • كيفية تفعيل Cloud KMS API
  • كيفية إنشاء سلسلة مفاتيح في Cloud KMS
  • كيفية إنشاء مفتاح تشفير Cloud KMS للتشفير/فك التشفير المتماثل
  • كيفية تدوير مفتاح تشفير متماثل في Cloud KMS

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. بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا تتحمّل رسومًا تتجاوز هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

بدء Cloud Shell

في هذا الدرس التطبيقي حول الترميز، ستستخدم Cloud Shell، وهي بيئة افتراضية مجانية تعمل على Google Cloud. من وحدة تحكّم Google Cloud Platform، انقر على رمز 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، سلسلة المفاتيح هي مجموعة منطقية من مفاتيح التشفير. يحتوي "سلسلة المفاتيح" على بيانات وصفية عن المفاتيح، مثل موقعها الجغرافي. أنشئ سلسلة مفاتيح باسم my-keyring في المنطقة global:

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

الآن، أنشئ مفتاح تشفير باسم my-symmetric-key والغرض منه encryption داخل سلسلة المفاتيح التي أنشأتها للتو.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5- تشفير البيانات

أنشئ ملفًا يتضمّن البيانات المطلوب تشفيرها واستخدِم أداة سطر الأوامر gcloud لتشفير البيانات في الملف:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

يتم حفظ البيانات المشفّرة (المعروفة أيضًا باسم "النص المشفّر") في data.txt.enc على القرص. إذا فتحت الملف data.txt.enc، ستلاحظ أنّه يحتوي على أحرف غريبة وغير قابلة للطباعة. ويرجع ذلك إلى أنّ البيانات الناتجة تكون بتنسيق ثنائي.

عند تخزين النص المشفّر في قاعدة بيانات أو نقله كجزء من طلب HTTP، قد تحتاج إلى ترميز البيانات. إحدى آليات الترميز الشائعة هي base64.

لا يخزِّن Cloud KMS أي نص عادي تقدّمه. عليك حفظ النص المشفّر هذا في مكان آمن لأنّه سيكون مطلوبًا لاسترداد قيمة النص العادي.

6. فك تشفير البيانات

فك تشفير النص المشفّر من الملف باستخدام أداة سطر الأوامر gcloud:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

تقرأ أداة سطر الأوامر gcloud النص المشفّر من الملف وتفك تشفيره باستخدام Cloud KMS. لاحظ أنّ هذا المثال يحدّد الوسيطة --plaintext-file على أنّها -. يوجّه هذا الأمر gcloud إلى طباعة النتيجة في نافذة الجهاز.

ستعرض وحدة التحكّم my-contents، وهي قيمة النص العادي نفسها من الملف أعلاه.

7. تدوير المفاتيح

في Cloud KMS، يكون مفتاح التشفير في الواقع مجموعة من إصدارات مفتاح التشفير. يمكنك إنشاء إصدارات جديدة من مفتاح التشفير لإجراء تغيير المفتاح. يمكن لخدمة Cloud KMS أيضًا تغيير المفاتيح تلقائيًا حسب جدول زمني.

لتدوير مفتاح يدويًا، أنشئ إصدارًا جديدًا من مفتاح التشفير واضبطه كالإصدار الأساسي:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

ستستخدم جميع الطلبات المستقبلية تشفير البيانات هذا المفتاح الجديد. تظل المفاتيح القديمة متاحة لفك تشفير البيانات التي تم تشفيرها سابقًا باستخدام هذه المفاتيح. تحدّد خدمة Cloud KMS تلقائيًا مفتاح فك التشفير المناسب استنادًا إلى النص المشفّر المقدَّم، ولا تحتاج إلى تحديد إصدار مفتاح التشفير الذي سيتم استخدامه لفك التشفير.

لمنع فك تشفير قيم النص المشفّر التي تم تشفيرها باستخدام إصدار أقدم من مفتاح التشفير باستخدام Cloud KMS، يمكنك إيقاف إصدار مفتاح التشفير هذا أو إتلافه. الإيقاف هو عملية يمكن التراجع عنها، بينما التدمير هو إجراء نهائي. لإيقاف إصدار، اتّبِع الخطوات التالية:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

8. تهانينا!

لقد فعّلت Cloud KMS API، وأنشأت مفتاح تشفير متماثل، وشفّرت البيانات وفككت تشفيرها. ‫Cloud KMS هو منتج قوي، ولا يمثّل التشفير/فك التشفير سوى جزء بسيط من إمكاناته.

تنظيف

إذا انتهيت من استكشاف المشروع، يُرجى التفكير في حذفه.

  • انتقِل إلى وحدة تحكّم Cloud Platform.
  • اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة. يؤدي ذلك إلى تحديد موعد لحذف المشروع.

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.