Setiap kunci Cloud Key Management Service memiliki tujuan, yang mendefinisikan kemampuan kriptografi dari kunci tersebut. Tujuannya juga menentukan algoritma mana yang didukung untuk versi kunci. Setiap algoritma menentukan parameter yang harus digunakan untuk setiap operasi kriptografi. Setiap kunci juga memiliki tingkat perlindungan yang menunjukkan apakah operasi kriptografi dilakukan dalam software atau di Modul Keamanan Hardware (HSM).
Tujuan utama
Cloud KMS menyediakan tujuan kunci untuk skenario berikut:
Skenario | Tujuan utama (SDK) | Tujuan kunci (API) | Metode yang didukung |
---|---|---|---|
Enkripsi simetris | encryption |
ENCRYPT_DECRYPT |
cryptoKeys.encrypt, cryptoKeys.decrypt |
Enkripsi simetris mentah | raw-encryption |
RAW_ENCRYPT_DECRYPT |
cryptoKeys.rawEncrypt, cryptoKeys.rawDecrypt |
Penandatanganan asimetris | asymmetric-signing |
ASYMMETRIC_SIGN |
cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey |
Enkripsi asimetris | asymmetric-encryption |
ASYMMETRIC_DECRYPT |
cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey |
Penandatanganan MAC | mac |
MAC |
cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify |
Saat membuat kunci, Anda menentukan tujuan dan algoritma kunci tersebut. Anda dapat mengubah algoritma saat membuat versi kunci baru, sesuai dengan cakupan tujuannya. Tujuan tidak dapat diubah.
Dua kunci dengan tujuan yang sama dapat menggunakan algoritma dasar yang berbeda, tetapi keduanya harus mendukung kumpulan operasi kriptografis yang sama.
Algoritma enkripsi simetris
Tujuan kunci ENCRYPT_DECRYPT mengaktifkan enkripsi simetris. Semua kunci dengan tujuan kunci ENCRYPT_DECRYPT menggunakan algoritma GOOGLE_SYMMETRIC_ENCRYPTION. Tidak ada parameter yang digunakan dengan algoritma ini. Algoritma ini menggunakan kunci Advanced Encryption Standard (AES-256) 256 bit dalam Galois Counter Mode (GCM), dengan tambahan metadata internal Cloud KMS.
Algoritma penandatanganan asimetris
Tujuan kunci ASYMMETRIC_SIGN memungkinkan penandatanganan asimetris. Kunci dengan tujuan utama ASYMMETRIC_SIGN menggunakan algoritma yang berbeda, bergantung pada apakah kunci tersebut mendukung penandatanganan kurva eliptis atau penandatanganan RSA.
Untuk kunci yang memiliki tujuan ASYMMETRIC_SIGN, Anda dapat beralih antara kunci dengan ukuran yang berbeda dan skema tanda tangan yang berbeda melalui algoritme.
Algoritma penandatanganan kurva elips
Format dari algoritma penandaan kurva eliptis adalah
EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]
dengan
[ELLIPTIC_CURVE]
adalah kurva eliptis[DIGEST_ALGORITHM]
adalah algoritma ringkasan
Tabel berikut berisi daftar kemungkinan algoritma untuk kunci kurva eliptis dengan
tujuan ASYMMETRIC_SIGN. Gunakan nama algoritme huruf kecil dengan perintah gcloud
, dan nama huruf besar dengan Cloud Key Management Service API.
Algoritma (SDK) | Algoritma (API) | Deskripsi |
---|---|---|
ec-sign-p256-sha256 (direkomendasikan) |
EC_SIGN_P256_SHA256 |
ECDSA pada Kurva P-256 dengan ringkasan SHA-256 |
ec-sign-p384-sha384 |
EC_SIGN_P384_SHA384 |
ECDSA pada Kurva P-384 dengan ringkasan SHA-384 |
ec-sign-secp256k1-sha256 |
EC_SIGN_SECP256K1_SHA256 |
ECDSA pada Kurva Secp256k1 dengan ringkasan SHA-256 |
Algoritma penandatanganan RSA
Format algoritma penandatanganan RSA adalah
RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]
dengan
[PADDING_ALGORITHM]
adalah algoritma padding[MODULUS_BIT_LENGTH]
adalah panjang bit kunci[DIGEST_ALGORITHM]
adalah algoritma ringkasan
Perhatikan bahwa beberapa algoritma diformat sebagai
RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]
dan menghilangkan algoritma {i>digest<i}. Algoritma ini adalah varian dari penandatanganan PKCS #1 yang menghilangkan encoding ke DigestInfo. Di varian:
- ringkasan dihitung berdasarkan pesan yang akan ditandatangani
- Padding PKCS #1 diterapkan langsung ke ringkasan
- tanda tangan ringkasan dengan padding dikomputasi, menggunakan kunci pribadi RSA
Tabel berikut berisi daftar algoritma yang memungkinkan untuk kunci RSA dengan tujuan ASYMMETRIC_SIGN. Gunakan nama algoritme huruf kecil dengan perintah gcloud
, dan nama huruf besar dengan Cloud Key Management Service API.
Algoritma (SDK) | Algoritma (API) | Deskripsi |
---|---|---|
rsa-sign-pss-2048-sha256 |
RSA_SIGN_PSS_2048_SHA256 |
Kunci RSASSA-PSS 2048 bit dengan ringkasan SHA-256 |
rsa-sign-pss-3072-sha256 (direkomendasikan) |
RSA_SIGN_PSS_3072_SHA256 |
Kunci RSASSA-PSS 3072 bit dengan ringkasan SHA-256 |
rsa-sign-pss-4096-sha256 |
RSA_SIGN_PSS_4096_SHA256 |
Kunci RSASSA-PSS 4096 bit dengan ringkasan SHA-256 |
rsa-sign-pss-4096-sha512 |
RSA_SIGN_PSS_4096_SHA512 |
Kunci RSASSA-PSS 4096 bit dengan ringkasan SHA-512 |
rsa-sign-pkcs1-2048-sha256 |
RSA_SIGN_PKCS1_2048_SHA256 |
RSASSA-PKCS1 v1_5 dengan kunci 2048 bit dan ringkasan SHA-256 |
rsa-sign-pkcs1-3072-sha256 |
RSA_SIGN_PKCS1_3072_SHA256 |
RSASSA-PKCS1 v1_5 dengan kunci 3072 bit dan ringkasan SHA-256 |
rsa-sign-pkcs1-4096-sha256 |
RSA_SIGN_PKCS1_4096_SHA256 |
RSASSA-PKCS1 v1_5 dengan kunci 4096 bit dan ringkasan SHA-256 |
rsa-sign-pkcs1-4096-sha512 |
RSA_SIGN_PKCS1_4096_SHA512 |
RSASSA-PKCS1 v1_5 dengan kunci 4096 bit dan ringkasan SHA-512 |
rsa-sign-raw-pkcs1-2048 |
RSA_SIGN_RAW_PKCS1_2048 |
Penandatanganan RSASSA-PKCS1-v1_5 tanpa encoding, dengan kunci 2048 bit |
rsa-sign-raw-pkcs1-3072 |
RSA_SIGN_RAW_PKCS1_3072 |
Penandatanganan RSASSA-PKCS1-v1_5 tanpa encoding, dengan kunci 3072 bit |
rsa-sign-raw-pkcs1-4096 |
RSA_SIGN_RAW_PKCS1_4096 |
Penandatanganan RSASSA-PKCS1-v1_5 tanpa encoding, dengan kunci 4096 bit |
Untuk Probabilistic Signature Scheme (PSS), panjang salt yang digunakan sama dengan panjang algoritme ringkasan. Misalnya, RSA_SIGN_PSS_2048_SHA256 akan menggunakan PSS dengan panjang salt 256 bit. Selain itu, untuk PSS, algoritma ringkasan yang ditentukan dalam nama algoritma juga digunakan untuk fungsi pembuatan mask (MGF1). Misalnya, jika menggunakan RSA_SIGN_PSS_2048_SHA256, Anda harus mengirimkan hash SHA-256 data yang akan ditandatangani, dan Cloud KMS akan menggunakan SHA-256 secara internal sebagai algoritme hash untuk MGF1 saat menghitung tanda tangan.
Algoritma enkripsi asimetris
Tujuan kunci ASYMMETRIC_DECRYPT mengaktifkan enkripsi RSA. Format dari algoritma ASYMMETRIC_DECRYPT adalah
RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]
dengan
[PADDING_ALGORITHM]
adalah algoritma padding[MODULUS_BIT_LENGTH]
adalah panjang bit kunci[DIGEST_ALGORITHM]
adalah algoritma ringkasan
Tabel berikut berisi daftar algoritma yang memungkinkan untuk kunci RSA dengan tujuan ASYMMETRIC_DECRYPT. Gunakan nama algoritme huruf kecil dengan perintah gcloud
, dan nama huruf besar dengan Cloud Key Management Service API.
Algoritma (SDK) | Algoritma (API) | Deskripsi |
---|---|---|
rsa-decrypt-oaep-2048-sha1 |
RSA_DECRYPT_OAEP_2048_SHA1 |
Kunci RSAES-OAEP 2048 bit dengan ringkasan SHA-1 |
rsa-decrypt-oaep-2048-sha256 |
RSA_DECRYPT_OAEP_2048_SHA256 |
Kunci RSAES-OAEP 2048 bit dengan ringkasan SHA-256 |
rsa-decrypt-oaep-3072-sha1 |
RSA_DECRYPT_OAEP_3072_SHA1 |
Kunci RSAES-OAEP 3072 bit dengan ringkasan SHA-1 |
rsa-decrypt-oaep-3072-sha256 (direkomendasikan) |
RSA_DECRYPT_OAEP_3072_SHA256 |
Kunci RSAES-OAEP 3072 bit dengan ringkasan SHA-256 |
rsa-decrypt-oaep-4096-sha1 |
RSA_DECRYPT_OAEP_4096_SHA1 |
Kunci RSAES-OAEP 4096 bit dengan ringkasan SHA-1 |
rsa-decrypt-oaep-4096-sha256 |
RSA_DECRYPT_OAEP_4096_SHA256 |
Kunci RSAES-OAEP 4096 bit dengan ringkasan SHA-256 |
rsa-decrypt-oaep-4096-sha512 |
RSA_DECRYPT_OAEP_4096_SHA512 |
Kunci RSAES-OAEP 4096 bit dengan ringkasan SHA-512 |
Semua algoritma ini menggunakan Optimal Asymmetric Encryption Padding (OAEP) dengan fungsi pembuatan mask MGF1. MGF1 memerlukan algoritma ringkasan. Di Cloud KMS, fungsi ringkasan yang akan digunakan dengan MGF1 ditentukan sebagai bagian dari nama algoritma kunci. Misalnya, jika menggunakan algoritma RA_DECRYPT_OAEP_3072_SHA256, Anda harus menggunakan SHA-256 dengan MGF1 saat mengenkripsi data.
Algoritma penandatanganan MAC
Tujuan kunci MAC memungkinkan penandatanganan MAC secara simetris. Kunci dengan MAC tujuan kunci saat ini hanya mendukung penandatanganan HMAC.
Algoritma penandatanganan HMAC
Format algoritma penandatanganan HMAC adalah
HMAC_[HASH_ALGORITHM]
dengan
[HASH_ALGORITHM]
adalah algoritma hash
Tabel berikut mencantumkan algoritma HMAC yang saat ini tersedia untuk kunci dengan MAC tujuan. Gunakan nama algoritma huruf kecil dengan perintah gcloud
, dan nama huruf besar dengan Cloud Key Management Service API.
Algoritma (SDK) | Algoritma (API) | Deskripsi |
---|---|---|
hmac-sha1 |
HMAC_SHA1 |
HMAC dengan ringkasan SHA-1 |
hmac-sha224 |
HMAC_SHA224 |
HMAC dengan digest SHA-224 |
hmac-sha256 (direkomendasikan) |
HMAC_SHA256 |
HMAC dengan digest SHA-256 |
hmac-sha384 |
HMAC_SHA384 |
HMAC dengan digest SHA-384 |
hmac-sha512 |
HMAC_SHA512 |
HMAC dengan digest SHA-512 |
Rekomendasi algoritma
Untuk penandatanganan digital, sebaiknya gunakan algoritma penandatanganan kurva eliptis. EC_SIGN_P256_SHA256 adalah algoritme kurva eliptis yang direkomendasikan. Jika Anda akan menggunakan algoritma penandatanganan RSA, algoritma penandatanganan RSA yang direkomendasikan adalah RSA_SIGN_PSS_3072_SHA256.
Untuk enkripsi asimetris, RSA_DECRYPT_OAEP_3072_SHA256 adalah algoritma yang direkomendasikan.
Untuk penandatanganan MAC, HMAC_SHA256 adalah algoritma yang disarankan.
Untuk mengetahui daftar nilai algoritma yang didukung untuk digunakan dengan gcloud CLI, baca --default-algorithm.
Tingkat perlindungan
Tingkat perlindungan menunjukkan bagaimana operasi kriptografi dilakukan. Setelah membuat kunci, Anda tidak dapat mengubah level perlindungannya.
Protection level | Deskripsi |
---|---|
PERANGKAT LUNAK | Operasi kriptografi dilakukan dalam perangkat lunak. |
HSM | Operasi kriptografi dilakukan di HSM. |
EKSTERNAL | Operasi kriptografi dilakukan menggunakan kunci yang disimpan di pengelola kunci eksternal yang terhubung ke Google Cloud melalui internet. Terbatas pada enkripsi simetris dan penandatanganan asimetris. |
EXTERNAL_VPC | Operasi kriptografi dilakukan menggunakan kunci yang disimpan di pengelola kunci eksternal yang terhubung ke Google Cloud melalui Virtual Private Cloud (VPC). Terbatas pada enkripsi simetris dan penandatanganan asimetris. |
Semua tujuan kunci didukung untuk kunci dengan level perlindungan SOFTWARE
atau
HSM
.