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-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:
أنشئ ملفًا يتضمّن البيانات المطلوب توقيعها واستخدِم أداة سطر الأوامر gcloud لتوقيع البيانات باستخدام مفتاح Cloud KMS:
$ 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، ستلاحظ أنّه يحتوي على أحرف غريبة وغير قابلة للطباعة. ويرجع ذلك إلى أنّ البيانات الناتجة تكون بتنسيق ثنائي.
عند تخزين التوقيع في قاعدة بيانات أو نقله كجزء من طلب HTTP، قد تحتاج إلى ترميز البيانات. إحدى آليات الترميز الشائعة هي base64.
6. التحقّق من البيانات
باستخدام المفاتيح غير المتماثلة، لا تنفّذ خدمة 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-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.
- اختَر المشروع الذي تريد إيقافه، ثم انقر على "حذف" في أعلى الصفحة. يؤدي ذلك إلى تحديد موعد لحذف المشروع.
مزيد من المعلومات
الترخيص
يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 2.0 Generic License.