לכל מפתח של 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.
אלגוריתמים להצפנה סימטרית כמו AES-256 נחשבים בדרך כלל כבטוחים מפני מתקפות קוונטיות. אפשר להמשיך להשתמש בהצפנה סימטרית.
אלגוריתמים אסימטריים לחתימה
מטרת המפתח ASYMMETRIC_SIGN מאפשרת חתימה אסימטרית. מפתחות עם key
purpose ASYMMETRIC_SIGN משתמשים באלגוריתמים שונים, בהתאם לתמיכה של המפתח בחתימה של עקומות אליפטיות או בחתימת RSA.
אם המפתח מיועד למטרה ASYMMETRIC_SIGN, אפשר לשנות את האלגוריתם כדי לעבור בין מפתחות בגדלים שונים ובין סכימות חתימה שונות.
אלגוריתמים אסימטריים לחתימה שמשתמשים בעקומות אליפטיות וב-RSA חשופים למתקפות של מחשבים קוונטיים עתידיים. כדי להבטיח לטווח ארוך את אי-ההתכחשות לחתימות שלכם, כדאי לבחור אלגוריתם אסימטרי לחתימה פוסט-קוונטית.
אלגוריתמים לחתימה של עקומים אליפטיים
הפורמט של אלגוריתם חתימה של עקומים אליפטיים הוא
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 ביט |
בסכמת חתימה הסתברותית (PSS), אורך המלח שבו נעשה שימוש שווה לאורך של אלגוריתם הגיבוב. לדוגמה, RSA_SIGN_PSS_2048_SHA256 ישתמש ב-PSS עם אורך מלח של 256 ביט. בנוסף, ב-PSS, אלגוריתם הגיבוב (hash)
שמצוין בשם האלגוריתם משמש גם לפונקציית יצירת המסכה (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 חשופה למחשוב קוונטי, כולל מתקפות מסוג 'איסוף עכשיו, פענוח מאוחר יותר' (HNDL). במתקפת HNDL, גורם זדוני מיירט טקסט מוצפן שהוא לא יכול לפענח, ואז מאחסן אותו בתקווה שבסופו של דבר הוא יוכל לפענח אותו באמצעות מחשוב קוונטי. אם אתם מעבירים נתונים שצריכים להישאר סודיים לטווח ארוך למרות ההתקדמות במחשוב קוונטי, כדאי לבחור במקום זאת אלגוריתם של אנקפסולציית מפתח.
בטבלה הבאה מפורטים האלגוריתמים האפשריים למפתחות 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 ביט עם תקציר הודעה (digest) מסוג 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-SHA1 לא בטוח מפני מחשוב קוונטי. אם אתם רוצים שהחתימות הסימטריות שלכם יישארו מהימנות לטווח ארוך למרות ההתפתחויות בתחום המחשוב הקוונטי, כדאי לבחור מפתח HMAC עם גודל גיבוב גדול יותר.
בטבלה הבאה מפורטים אלגוריתמי ה-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.
רמות ההגנה
רמת ההגנה מציינת איך מתבצעות פעולות קריפטוגרפיות. אחרי שיוצרים מפתח, אי אפשר לשנות את רמת ההגנה.
| רמת הגנה | תיאור |
|---|---|
SOFTWARE |
פעולות קריפטוגרפיות מתבצעות בתוכנה. |
HSM |
פעולות קריפטוגרפיות מתבצעות ב-HSM. |
HSM_SINGLE_TENANT |
פעולות קריפטוגרפיות מתבצעות ב |
: cluster of HSM partitions, exclusively created for a
: single-tenant Cloud HSM instance.
EXTERNAL | פעולות קריפטוגרפיות מתבצעות באמצעות מפתח שמאוחסן
: במנהל מפתחות חיצוני שמחובר ל- Google Cloud באמצעות האינטרנט. מוגבל להצפנה סימטרית וחתימה אסימטרית.
EXTERNAL_VPC | פעולות קריפטוגרפיות מתבצעות באמצעות מפתח שמאוחסן
: במנהל מפתחות חיצוני שמחובר ל- Google Cloud באמצעות
: ענן וירטואלי פרטי (VPC). מוגבל להצפנה סימטרית ולחתימה אסימטרית.
כל מטרות המפתח נתמכות במפתחות עם רמת ההגנה SOFTWARE או HSM.