לכל מפתח של 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. לא נעשה שימוש בפרמטרים באלגוריתם הזה. האלגוריתם הזה משתמש במפתחות של תקן הצפנה מתקדם (AES-256) ב-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הוא אלגוריתם הגיבוב