בדף הזה מוסבר איך ליצור ולאמת חתימות דיגיטליות שמבוססות על מפתחות MAC.
משתמשים במפתח יחיד, שמשותף גם לבעלים וגם למאמת, כדי לחשב תג MAC מנתוני הקלט. תג ה-MAC משמש כחתימה דיגיטלית. כשהמאמת מקבל את ההודעה ואת תג ה-MAC שמשויך אליה, הוא יוצר תג משלו מתוכן ההודעה. לאחר מכן המאמת יכול להשוות בין התג שהתקבל לבין התג שהוא יצר כדי לראות אם הם זהים. אם שני התגים זהים, המאמת יודע שההודעה שהוא קיבל זהה להודעה שנחתמה על ידי הבעלים.
לפני שמתחילים
כשיוצרים חתימות דיגיטליות של MAC, צריך להשתמש במפתח עם מטרת המפתח
MAC. כשיוצרים את המפתח, משתמשים ב-MAC.מוודאים שגודל הקובץ שרוצים לחתום עליו לא חורג מהמגבלה.כשמשתמשים במפתח Cloud HSM, הגודל המקסימלי של קובץ שאפשר ליצור עבורו חתימת MAC הוא 16KiB. לכל שאר המפתחות, גודל הקובץ המקסימלי הוא 64KiB.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה ולאימות של חתימות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במפתח:
-
כדי ליצור חתימות:
Cloud KMS CryptoKey Signer (
roles/cloudkms.signer) -
כדי לאמת חתימות:
Cloud KMS CryptoKey Verifier (
roles/cloudkms.verifier) -
כדי ליצור ולאמת חתימות:
Cloud KMS CryptoKey Signer/Verifier (
roles/cloudkms.signerVerifier)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת חתימת MAC
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms mac-sign \
--version KEY_VERSION \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--input-file INPUT_FILE_PATH \
--signature-file SIGNED_FILE_PATH
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_VERSION: מספר גרסת המפתח. -
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
INPUT_FILE_PATH: הנתיב המקומי לקובץ שרוצים לחתום עליו. -
SIGNED_FILE_PATH: הנתיב המקומי שבו רוצים לשמור את החתימה שנוצרה.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --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.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
משתמשים בשיטה CryptoKeyVersions.macSign כדי לבצע את החתימה. התשובה מהשיטה הזו מכילה את החתימה בקידוד base64.
אימות חתימת MAC
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms mac-verify \
--version KEY_VERSION \
--key KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--input-file INPUT_FILE_PATH \
--signature-file SIGNED_FILE_PATH
-
KEY_VERSION: מספר גרסת המפתח. -
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
INPUT_FILE_PATH: הנתיב המקומי לקובץ שנחתם. -
SIGNED_FILE_PATH: הנתיב המקומי לקובץ החתימה שצריך לאמת.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --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.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
משתמשים בשיטה CryptoKeyVersions.macVerify כדי לבצע את האימות. החתימה שצריך לאמת צריכה להיות בקידוד Base64. התשובה שחוזרת מהשיטה הזו מכילה ערך בוליאני שמציין אם החתימה אומתה בהצלחה.