1. סקירה כללית
Cloud KMS הוא שירות לניהול מפתחות שמתארח בענן ומאפשר לכם לנהל מפתחות קריפטוגרפיים לשירותי הענן שלכם באותו אופן שבו אתם מנהלים אותם בשרתים מקומיים. הוא כולל תמיכה בהצפנה, בפענוח, בחתימה ובאימות באמצעות מגוון סוגים ומקורות של מפתחות, כולל Cloud HSM למפתחות שמגובים בחומרה. במדריך הזה תלמדו איך לחתום על נתונים ולאמת אותם באמצעות מפתחות אסימטריים של Cloud KMS.
מה תלמדו
- איך מפעילים את Cloud KMS API
- איך יוצרים אוסף מפתחות
- איך יוצרים מפתח הצפנה לחתימה או לאימות אסימטריים
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, אתם צריכים ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות שבקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו על שימוש מעבר למה שמוסבר במדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
ב-Codelab הזה תשתמשו ב-Cloud Shell, סביבה וירטואלית חינמית שפועלת ב-Google Cloud. ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אלא אם צוין אחרת, מריצים את כל הפקודות מה-Shell הזה.
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 או לממשקי Cloud API אחרים של 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.
- בוחרים את הפרויקט שרוצים לסגור ולוחצים על Delete (מחיקה) בחלק העליון. הפעולה הזו תגרום לכך שהפרויקט יתוזמן למחיקה.
מידע נוסף
רישיון
העבודה הזו בשימוש במסגרת רישיון Creative Commons שמותנה בייחוס כללי מגרסה 2.0.