1. نظرة عامة
Cloud KMS هي خدمة إدارة مفاتيح مستضافة على السحابة الإلكترونية تتيح لك إدارة مفاتيح التشفير لخدماتك السحابية بالطريقة نفسها التي تديرها بها في الموقع. يتيح هذا المنتج التشفير وفك التشفير والتوقيع والتحقّق باستخدام مجموعة متنوعة من أنواع المفاتيح والمصادر، بما في ذلك Cloud HSM للمفاتيح المحمية بواسطة الأجهزة. يعلّمك هذا البرنامج التعليمي كيفية تشفير البيانات وفك تشفيرها باستخدام مفاتيح Cloud KMS غير المتماثلة.
ستتعرّف على
- كيفية تفعيل Cloud KMS API
- كيفية إنشاء سلسلة مفاتيح
- كيفية إنشاء مفتاح تشفير للتشفير/فك التشفير غير المتماثل
2. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب).
تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.
لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا تتحمّل رسومًا تتجاوز هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
في هذا الدرس التطبيقي حول الترميز، ستستخدم Cloud Shell، وهي بيئة افتراضية مجانية تعمل على Google Cloud. من وحدة تحكّم Google Cloud Platform، انقر على رمز 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، سلسلة المفاتيح هي مجموعة منطقية من مفاتيح التشفير. يحتوي "سلسلة المفاتيح" على بيانات وصفية عن المفاتيح، مثل موقعها الجغرافي. أنشئ سلسلة مفاتيح باسم my-keyring في المنطقة global:
$ 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- تشفير البيانات
باستخدام المفاتيح غير المتماثلة، لا تنفّذ خدمة 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-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، ستلاحظ أنّه يحتوي على أحرف غريبة وغير قابلة للطباعة. ويرجع ذلك إلى أنّ البيانات الناتجة تكون بتنسيق ثنائي.
عند تخزين النص المشفّر في قاعدة بيانات أو نقله كجزء من طلب HTTP، قد تحتاج إلى ترميز البيانات. إنّ آلية الترميز الأكثر شيوعًا للنص المشفّر هي 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.
- اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة. يؤدي ذلك إلى تحديد موعد لحذف المشروع.
مزيد من المعلومات
الترخيص
يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.