בדף הזה מוסבר איך לאחזר את החלק של המפתח הציבורי בגרסה של מפתח אסימטרי שמופעל.
הפורמט של המפתח הציבורי תלוי בסוג האלגוריתם: פוסט-קוונטי (PQC) או קונבנציונלי:
עבור אלגוריתמים שאינם PQC, פורמט ברירת המחדל של המפתח הציבורי הוא Privacy-enhanced Electronic Mail (PEM). אפשר גם לאחזר מפתחות ציבוריים שאינם PQC בפורמט Distinguished Encoding Rules (DER). מידע נוסף זמין ב-RFC 7468, במיוחד בקטעים General Considerations (שיקולים כלליים) ו-Textual Encoding of Subject Public Key Info (קידוד טקסטואלי של מידע על מפתח ציבורי של נושא).
עבור אלגוריתמים של PQC שתוקננו על ידי NIST (גרסת Preview), אפשר לאחזר את המפתח הציבורי בפורמט שמופיע בתקני ה-PCQ של NIST לאותו אלגוריתם. מידע נוסף זמין במאמרים בנושא FIPS-203, FIPS-204 ו-FIPS-205. הפורמטים PEM ו-DER נתמכים רק במפתחות ML-DSA.
ב-X-Wing, אפשר לאחזר את המפתח הציבורי בפורמט הבייטים הגולמי שצוין בתקן X-Wing. אין תמיכה במפתחות בפורמטים PEM ו-DER.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות בשביל לאחזר מפתח ציבורי, צריך לבקש מהאדמין לתת לכם את תפקיד ה-IAM Cloud KMS CryptoKey Public Key Viewer (roles/cloudkms.publicKeyViewer) במפתח או במשאב אב.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
זהו תפקיד שמוגדר מראש וכולל את ההרשאות שנדרשות לאחזור מפתח ציבורי. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי לאחזר מפתח ציבורי, נדרשות ההרשאות הבאות:
-
cloudkms.cryptoKeyVersions.viewPublicKey -
cloudkms.locations.get -
cloudkms.locations.list -
resourcemanager.projects.get
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
שליפה של מפתח ציבורי
אפשר לציין את הפורמט שבו רוצים לאחזר את המפתח הציבורי.
אם מציינים את הפורמט, המפתח יוחזר בפורמט שצוין בשדה public_key של התשובה. אחרת, הוא מוחזר בשדה pem של התשובה.
כדי להוריד את המפתח הציבורי לגרסה של מפתח אסימטרי שמופעל:
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח האסימטרי שרוצים לאחזר את המפתח הציבורי שלו.
לוחצים על שם המפתח שרוצים לאחזר את המפתח הציבורי שלו.
בשורה שמתאימה לגרסת המפתח שרוצים לאחזר את המפתח הציבורי שלה, לוחצים על הצגת פרטים נוספים .
לוחצים על קבלת מפתח ציבורי.
המפתח הציבורי מוצג בהנחיה. אפשר להעתיק את המפתח הציבורי ללוח. כדי להוריד את המפתח הציבורי, לוחצים על הורדה.
אם האפשרות Get public key לא מופיעה, צריך לוודא את הדברים הבאים:
- המפתח הוא מפתח אסימטרי.
- גרסת המפתח מופעלת.
- יש לך הרשאה מסוג
cloudkms.cryptoKeyVersions.viewPublicKey.
שם הקובץ של מפתח ציבורי שהורד ממסוף Google Cloud הוא מהצורה:
KEY_RING-KEY_NAME-KEY_VERSION.pub
כל חלק בשם הקובץ מופרד באמצעות מקף, לדוגמה
ringname-keyname-version.pub.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys versions get-public-key KEY_VERSION \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--public-key-format PUBLIC_KEY_FORMAT \
--output-file OUTPUT_FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VERSION: מספר גרסת המפתח. -
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
PUBLIC_KEY_FORMAT: הפורמט שבו רוצים לייצא את המפתח הציבורי. כדי להשתמש באלגוריתמים של NIST PQC (Preview), משתמשים ב-nist-pqc, וכדי להשתמש ב-X-Wing, משתמשים ב-xwing-raw-bytes. לכל שאר המפתחות, אפשר להשתמש בערךpem,derאו להשמיט את הפרמטר הזה. -
OUTPUT_FILE_PATH: הנתיב שבו רוצים לשמור את קובץ המפתח הציבורי, לדוגמהpublic-key.pub.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Google Cloud ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
שולפים את המפתח הציבורי באמצעות קריאה ל-method CryptoKeyVersions.getPublicKey.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION/publicKey?public_key_format=PUBLIC_KEY_FORMAT" \
--request "GET" \
--header "authorization: Bearer TOKEN"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
KEY_NAME: השם של המפתח. -
KEY_VERSION: מספר גרסת המפתח. -
PUBLIC_KEY_FORMAT: הפורמט שבו רוצים לייצא את המפתח הציבורי. עבור אלגוריתמים של PQC (Preview), משתמשים ב-NIST_PQC. לכל שאר המפתחות, אפשר להשתמש ב-PEMאו להשמיט את הפרמטר הזה.
אם משמיטים את פורמט המפתח הציבורי עבור מפתח שאינו PQC, הפלט דומה לזה:
{ "pem": "-----BEGIN PUBLIC KEY-----\nQ29uZ3JhdHVsYXRpb25zLCB5b3UndmUgZGlzY292ZX JlZCB0aGF0IHRoaXMgaXNuJ3QgYWN0dWFsbHkgYSBwdWJsaWMga2V5ISBIYXZlIGEgbmlj ZSBkYXkgOik=\n-----END PUBLIC KEY-----\n", "algorithm": "ALGORITHM", "pemCrc32c": "2561089887", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }
עבור אלגוריתם PQC עם פורמט מפתח ציבורי NIST_PQC, הפלט דומה לזה שמוצג בהמשך:
{ "publicKeyFormat": "NIST_PQC", "publicKey": { "crc32cChecksum": "1985843562", "data": "kdcOIrFCC5kN8S4i0+R+AoSc9gYIJ9jEQ6zG235ZmCQ=" } "algorithm": "ALGORITHM", "name": "projects/PROJECT_ID/locations/LOCATION/keyRings/ KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/ KEY_VERSION", "protectionLevel": "PROTECTION_LEVEL" }