מטרות ואלגוריתמים מרכזיים

לכל מפתח של Cloud Key Management Service יש מטרה, שמגדירה את היכולות הקריפטוגרפיות של המפתח. הייעוד גם קובע אילו אלגוריתמים נתמכים בגרסאות של המפתח. כל אלגוריתם מגדיר באילו פרמטרים צריך להשתמש בכל פעולה קריפטוגרפית. לכל מפתח יש גם רמת הגנה שמציינת אם הפעולות הקריפטוגרפיות מתבצעות בתוכנה או במודול אבטחה לחומרה (HSM).

מטרות עיקריות

Cloud KMS מספק מטרות מפתח לתרחישים הבאים:

תרחיש מטרת המפתח (SDK) מטרת המפתח (API) אמצעי התשלום הנתמכים
הצפנה סימטרית encryption ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
הצפנה סימטרית גולמית raw-encryption RAW_ENCRYPT_DECRYPT cryptoKeys.rawEncrypt, ‏ cryptoKeys.rawDecrypt
חתימה אסימטרית asymmetric-signing ASYMMETRIC_SIGN cryptoKeyVersions.asymmetricSign, ‏ cryptoKeyVersions.getPublicKey
הצפנה אסימטרית asymmetric-encryption ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
מנגנוני אנקפסולציה של מפתחות key-encapsulation KEY_ENCAPSULATION cryptoKeyVersions.decapsulate, ‏ cryptoKeyVersions.getPublicKey
חתימה ב-MAC mac MAC cryptoKeyVersions.macSign, ‏ cryptoKeyVersions.macVerify

כשיוצרים מפתח, מגדירים את המטרה והאלגוריתם של המפתח. אתם יכולים לשנות את האלגוריתם כשאתם יוצרים גרסאות מפתח חדשות, בהתאם להיקף המטרה שלו. אי אפשר לשנות את המטרה.

יכול להיות ששני מפתחות עם אותה מטרה ישתמשו באלגוריתמים שונים, אבל הם חייבים לתמוך באותה קבוצה של פעולות קריפטוגרפיות.

אלגוריתמים להצפנה סימטרית

מטרת המפתח ENCRYPT_DECRYPT מאפשרת הצפנה סימטרית. כל המפתחות עם ייעוד המפתח ENCRYPT_DECRYPT משתמשים באלגוריתם GOOGLE_SYMMETRIC_ENCRYPTION. לא נעשה שימוש בפרמטרים באלגוריתם הזה. האלגוריתם הזה משתמש במפתחות של 256 ביט בתקן ההצפנה המתקדם (AES-256) ב-Galois Counter Mode (GCM), עם מטא-נתונים פנימיים של Cloud KMS.

אלגוריתמים אסימטריים לחתימה

מטרת המפתח ASYMMETRIC_SIGN מאפשרת חתימה אסימטרית. מפתחות עם key purpose ASYMMETRIC_SIGN משתמשים באלגוריתמים שונים, בהתאם לשאלה אם המפתח תומך בחתימה של עקומות אליפטיות או בחתימת RSA.

אם המטרה של המפתח היא ASYMMETRIC_SIGN, אפשר לעבור בין מפתחות בגדלים שונים ובין סכימות חתימה שונות באמצעות האלגוריתם.

אלגוריתמים לחתימה של עקומים אליפטיים

הפורמט של אלגוריתם חתימה של עקומים אליפטיים הוא

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

איפה

  • [ELLIPTIC_CURVE] הוא העקום האליפטי
  • [DIGEST_ALGORITHM] הוא אלגוריתם הגיבוב

בטבלה הבאה מפורטים האלגוריתמים האפשריים למפתחות של עקומות אליפטיות עם המטרה ASYMMETRIC_SIGN. משתמשים בשמות האלגוריתמים באותיות קטנות עם הפקודה gcloud, ובשמות האלגוריתמים באותיות גדולות עם Cloud Key Management Service API.

אלגוריתם (SDK) אלגוריתם (API) תיאור
ec-sign-ed25519 EC_SIGN_ED25519 ‫EdDSA ב-Curve25519 במצב PureEdDSA, שמקבל נתונים גולמיים כקלט במקום נתונים שעברו גיבוב
ec-sign-p256-sha256 **(מומלץ)** EC_SIGN_P256_SHA256 ‫ECDSA על עקומת P-256 עם תקציר SHA-256
ec-sign-p384-sha384 EC_SIGN_P384_SHA384 ‫ECDSA בעקומה P-384 עם תקציר SHA-384
ec-sign-secp256k1-sha256 EC_SIGN_SECP256K1_SHA256 ‫ECDSA על עקומת Secp256k1 עם תמצית SHA-256

אלגוריתמים לחתימת RSA

הפורמט של אלגוריתם חתימה RSA הוא

RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

איפה

  • [PADDING_ALGORITHM] הוא אלגוריתם הריפוד
  • [MODULUS_BIT_LENGTH] הוא אורך המפתח בביטים
  • [DIGEST_ALGORITHM] הוא אלגוריתם הגיבוב

שימו לב שחלק מהאלגוריתמים מפורמטים כ

RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]

ולא לכלול את אלגוריתם התקציר. האלגוריתמים האלה הם וריאציה של חתימה מסוג PKCS #1, שבה לא מתבצע קידוד ל-DigestInfo. בווריאנט:

  • מחושב תקציר של ההודעה שתיחתם
  • הריפוד PKCS #1 מוחל ישירות על ה-digest
  • מחשבים חתימה של ה-digest עם הריפוד, באמצעות המפתח הפרטי של RSA

בטבלה הבאה מפורטים האלגוריתמים האפשריים למפתחות RSA עם המטרה ASYMMETRIC_SIGN. משתמשים בשמות האלגוריתמים באותיות קטנות עם הפקודה gcloud, ובשמות האלגוריתמים באותיות גדולות עם Cloud Key Management Service API.

אלגוריתם (SDK) אלגוריתם (API) תיאור
rsa-sign-pss-2048-sha256 RSA_SIGN_PSS_2048_SHA256 מפתח RSASSA-PSS 2048 ביט עם תמצית SHA-256
rsa-sign-pss-3072-sha256 (מומלץ) RSA_SIGN_PSS_3072_SHA256 מפתח RSASSA-PSS 3072 ביט עם תמצית SHA-256
rsa-sign-pss-4096-sha256 RSA_SIGN_PSS_4096_SHA256 מפתח RSASSA-PSS 4096 ביט עם תמצית SHA-256
rsa-sign-pss-4096-sha512 RSA_SIGN_PSS_4096_SHA512 מפתח RSASSA-PSS 4096 ביט עם תמצית SHA-512
rsa-sign-pkcs1-2048-sha256 RSA_SIGN_PKCS1_2048_SHA256 ‫RSASSA-PKCS1 v1_5 עם מפתח 2048 ביט וגיבוב SHA-256
rsa-sign-pkcs1-3072-sha256 RSA_SIGN_PKCS1_3072_SHA256 ‫RSASSA-PKCS1 v1_5 עם מפתח 3072 ביט וגיבוב SHA-256
rsa-sign-pkcs1-4096-sha256 RSA_SIGN_PKCS1_4096_SHA256 ‫RSASSA-PKCS1 v1_5 עם מפתח 4096 ביט וגיבוב SHA-256
rsa-sign-pkcs1-4096-sha512 RSA_SIGN_PKCS1_4096_SHA512 ‫RSASSA-PKCS1 v1_5 עם מפתח של 4096 ביט וגיבוב SHA-512
rsa-sign-raw-pkcs1-2048 RSA_SIGN_RAW_PKCS1_2048 חתימה ב-RSASSA-PKCS1-v1_5 ללא קידוד, עם מפתח 2048 ביט
rsa-sign-raw-pkcs1-3072 RSA_SIGN_RAW_PKCS1_3072 חתימה של RSASSA-PKCS1-v1_5 ללא קידוד, עם מפתח של 3072 ביט
rsa-sign-raw-pkcs1-4096 RSA_SIGN_RAW_PKCS1_4096 חתימה של RSASSA-PKCS1-v1_5 ללא קידוד, עם מפתח של 4096 ביט

במקרה של Probabilistic Signature Scheme‏ (PSS), אורך המלח שבו נעשה שימוש שווה לאורך של אלגוריתם הגיבוב. לדוגמה, RSA_SIGN_PSS_2048_SHA256 ישתמש ב-PSS עם אורך מלח של 256 ביט. בנוסף, ב-PSS, אלגוריתם הגיבוב שצוין בשם האלגוריתם משמש גם לפונקציית יצירת המסכה (MGF1). לדוגמה, אם משתמשים ב-RSA_SIGN_PSS_2048_SHA256, שולחים גיבוב SHA-256 של הנתונים לחתימה, ו-Cloud KMS ישתמש באופן פנימי ב-SHA-256 כאלגוריתם הגיבוב של MGF1 כשמחשבים את החתימה.

אלגוריתמים של חתימה ב-PQC

אלגוריתמים של חתימה קריפטוגרפית פוסט-קוונטית (PQC) מתחילים בקידומת PQ_SIGN_. בטבלה הבאה מפורטים אלגוריתמי ה-PQC ש-Cloud KMS יכול להשתמש בהם למפתחות עם מטרה ASYMMETRIC_SIGN. אלגוריתמים טהורים מקבלים כקלט נתונים גולמיים, ואילו אלגוריתמים של גיבוב מראש מקבלים גיבוב של הנתונים.

אלגוריתם (SDK) אלגוריתם (API) וריאציה תיאור
pq-sign-ml-dsa-65 PQ_SIGN_ML_DSA_65 Pure אלגוריתם חתימה דיגיטלית שמבוסס על סריג מודולרי.
pq-sign-slh-dsa-sha2-128s PQ_SIGN_SLH_DSA_SHA2_128S Pure אלגוריתם חתימה דיגיטלית מבוסס-גיבוב (hash) ללא שמירת מצב.
pq-sign-hash-slh-dsa-sha2-128s-sha256 PQ_SIGN_HASH_SLH_DSA_SHA2_128S_SHA256 גיבוב מראש אלגוריתם חתימה דיגיטלית מבוסס-גיבוב (hash) ללא שמירת מצב.

אלגוריתמים להצפנה אסימטרית

מטרת המפתח ASYMMETRIC_DECRYPT מאפשרת הצפנת RSA. הפורמט של אלגוריתם ASYMMETRIC_DECRYPT הוא

RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

איפה

  • [PADDING_ALGORITHM] הוא אלגוריתם הריפוד
  • [MODULUS_BIT_LENGTH] הוא אורך המפתח בביטים
  • [DIGEST_ALGORITHM] הוא אלגוריתם הגיבוב

בטבלה הבאה מפורטים האלגוריתמים האפשריים למפתחות RSA עם המטרה ASYMMETRIC_DECRYPT. משתמשים בשמות האלגוריתמים באותיות קטנות עם הפקודה gcloud, ובשמות האלגוריתמים באותיות גדולות עם Cloud Key Management Service API.

אלגוריתם (SDK) אלגוריתם (API) תיאור
rsa-decrypt-oaep-2048-sha1 RSA_DECRYPT_OAEP_2048_SHA1 מפתח RSAES-OAEP של 2048 ביט עם תקציר SHA-1
rsa-decrypt-oaep-2048-sha256 RSA_DECRYPT_OAEP_2048_SHA256 מפתח RSAES-OAEP 2048 ביט עם תמצית SHA-256
rsa-decrypt-oaep-3072-sha1 RSA_DECRYPT_OAEP_3072_SHA1 מפתח RSAES-OAEP 3072 ביט עם תקציר SHA-1
rsa-decrypt-oaep-3072-sha256 (מומלץ) RSA_DECRYPT_OAEP_3072_SHA256 מפתח RSAES-OAEP‏ 3072 ביט עם תמצית SHA-256
rsa-decrypt-oaep-4096-sha1 RSA_DECRYPT_OAEP_4096_SHA1 מפתח RSAES-OAEP 4096 ביט עם תקציר SHA-1
rsa-decrypt-oaep-4096-sha256 RSA_DECRYPT_OAEP_4096_SHA256 מפתח RSAES-OAEP 4096 ביט עם תמצית SHA-256
rsa-decrypt-oaep-4096-sha512 RSA_DECRYPT_OAEP_4096_SHA512 מפתח RSAES-OAEP 4096 ביט עם תקציר SHA-512

כל האלגוריתמים האלה משתמשים ב-Optimal Asymmetric Encryption Padding (OAEP) עם פונקציית יצירת המסכה MGF1. ‫MGF1 דורש אלגוריתם תקציר. ב-Cloud KMS, פונקציית הגיבוב שבה יש להשתמש עם MGF1 מצוינת כחלק משם אלגוריתם המפתח. לדוגמה, אם אתם משתמשים באלגוריתם RSA_DECRYPT_OAEP_3072_SHA256, אתם צריכים להשתמש ב-SHA-256 עם MGF1 כשאתם מצפינים נתונים.

אלגוריתמים של אנקפסולציית מפתח

המטרה של מפתח KEY_ENCAPSULATION היא ליצור סודות משותפים באמצעות מנגנונים של אריזת מפתחות.

בטבלה הבאה מפורטים האלגוריתמים האפשריים למפתחות עם מטרה KEY_ENCAPSULATION. כל האלגוריתמים האלה מתוכננים להיות מאובטחים בפוסט-קוונטום. משתמשים בשמות האלגוריתמים באותיות קטנות עם הפקודה gcloud, ובשמות האלגוריתמים באותיות גדולות עם Cloud Key Management Service API.

אלגוריתם (SDK) אלגוריתם (API) תיאור
ml-kem-768 ML_KEM_768 מנגנון אנקפסולציה של מפתחות שמבוסס על סריג מודולרי עם קבוצת פרמטרים ML-KEM-768 (FIPS 203)
ml-kem-1024 ML_KEM_1024 מנגנון אנקפסולציה של מפתחות שמבוסס על סריג מודולרי עם קבוצת פרמטרים ML-KEM-1024‏ (FIPS 203)
kem-xwing KEM_XWING X-Wing hybrid KEM combining ML-KEM-768 with X25519

אלגוריתמים לחתימת MAC

השימוש במפתח MAC מאפשר חתימה סימטרית של MAC. מפתחות עם ייעוד מפתח MAC תומכים כרגע רק בחתימת HMAC.

אלגוריתמים לחתימת HMAC

הפורמט של אלגוריתם חתימת HMAC הוא

HMAC_[HASH_ALGORITHM]

איפה

  • [HASH_ALGORITHM] הוא אלגוריתם הגיבוב

בטבלה הבאה מפורטים האלגוריתמים של HMAC שזמינים כרגע למפתחות עם MAC למטרה. משתמשים בשמות האלגוריתמים באותיות קטנות עם הפקודה gcloud, ובשמות האלגוריתמים באותיות גדולות עם Cloud Key Management Service API.

אלגוריתם (SDK) אלגוריתם (API) תיאור
hmac-sha1 HMAC_SHA1 ‫HMAC עם תמצית SHA-1
hmac-sha224 HMAC_SHA224 ‫HMAC עם תמצית SHA-224
hmac-sha256 (מומלץ) HMAC_SHA256 ‫HMAC עם תמצית SHA-256
hmac-sha384 HMAC_SHA384 ‫HMAC עם תמצית SHA-384
hmac-sha512 HMAC_SHA512 ‫HMAC עם תמצית SHA-512

המלצות לאלגוריתמים

לחתימה דיגיטלית, מומלץ להשתמש באלגוריתמים של חתימה על עקומות אליפטיות. ‫EC_SIGN_P256_SHA256 הוא האלגוריתם המומלץ של עקומים אליפטיים. אם אתם מתכוונים להשתמש באלגוריתמים לחתימת RSA, האלגוריתם המומלץ לחתימת RSA הוא RSA_SIGN_PSS_3072_SHA256.

להצפנה אסימטרית, האלגוריתם המומלץ הוא RSA_DECRYPT_OAEP_3072_SHA256.

לצורך חתימה על MAC, האלגוריתם המומלץ הוא HMAC_SHA256.

לצורך הצפנת מפתח, מומלץ להשתמש ב-KEM_XWING, שהוא אלגוריתם היברידי שיכול לספק הגנה רב-שכבתית מפני יריבים קלאסיים וגם מפני יריבים קוונטיים פוטנציאליים.

רשימה של ערכי האלגוריתמים הנתמכים לשימוש ב-CLI של gcloud זמינה במאמר בנושא --default-algorithm.

רמות ההגנה

רמת ההגנה מציינת איך מתבצעות פעולות קריפטוגרפיות. אחרי שיוצרים מפתח, אי אפשר לשנות את רמת ההגנה.

רמת הגנה תיאור
תוכנה פעולות קריפטוגרפיות מתבצעות בתוכנה.
HSM פעולות קריפטוגרפיות מתבצעות ב-HSM.
HSM_SINGLE_TENANT פעולות קריפטוגרפיות מתבצעות באשכול ייעודי של מחיצות HSM, שנוצר באופן בלעדי עבור מופע Cloud HSM של דייר יחיד.
חיצוני פעולות קריפטוגרפיות מתבצעות באמצעות מפתח שמאוחסן במנהל מפתחות חיצוני שמחובר ל- Google Cloud דרך האינטרנט. ההצפנה מוגבלת להצפנה סימטרית ולחתימה אסימטרית.
EXTERNAL_VPC פעולות קריפטוגרפיות מבוצעות באמצעות מפתח שמאוחסן במנהל מפתחות חיצוני שמחובר ל- Google Cloud באמצעות ענן וירטואלי פרטי (VPC). ההצפנה מוגבלת להצפנה סימטרית ולחתימה אסימטרית.

כל מטרות המפתח נתמכות במפתחות עם רמת ההגנה SOFTWARE או HSM.