Tujuan utama dan algoritma

Setiap kunci Cloud Key Management Service memiliki tujuan, yang menentukan kemampuan kriptografis kunci. Tujuan juga menentukan algoritma 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 kriptografis dilakukan di software atau di Hardware Security Module (HSM).

Tujuan utama

Cloud KMS menyediakan tujuan utama 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 kunci tersebut harus mendukung kumpulan operasi kriptografi yang sama.

Algoritma enkripsi simetris

Tujuan kunci ENCRYPT_DECRYPT memungkinkan 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), yang ditambahkan dengan metadata internal Cloud KMS.

Algoritma penandatanganan asimetris

Tujuan kunci ASYMMETRIC_SIGN memungkinkan penandatanganan asimetris. Kunci dengan tujuan kunci ASYMMETRIC_SIGN menggunakan algoritma yang berbeda, bergantung pada apakah kunci mendukung penandatanganan kurva elips atau penandatanganan RSA.

Untuk kunci yang memiliki tujuan ASYMMETRIC_SIGN, Anda dapat beralih antara kunci ukuran yang berbeda dan skema tanda tangan yang berbeda melalui algoritma.

Algoritma penandatanganan kurva eliptik

Format algoritma penandatanganan kurva eliptik adalah

EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]

di mana

  • [ELLIPTIC_CURVE] adalah kurva eliptik
  • [DIGEST_ALGORITHM] adalah algoritma ringkasan

Tabel berikut mencantumkan kemungkinan algoritma untuk kunci kurva elips dengan tujuan ASYMMETRIC_SIGN. Gunakan nama algoritma huruf kecil dengan perintah gcloud, dan huruf besar dengan Cloud Key Management Service API.

Algoritma (SDK) Algoritma (API) Deskripsi
ec-sign-ed25519 EC_SIGN_ED25519 EdDSA pada Curve25519 dalam mode PureEdDSA, yang menggunakan data mentah sebagai input, bukan data yang di-hash
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]

di mana

  • [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 ringkasan. Algoritma ini adalah varian penandatanganan PKCS #1 yang menghilangkan encoding ke dalam DigestInfo. Dalam varian:

  • ringkasan dihitung berdasarkan pesan yang akan ditandatangani
  • Padding PKCS #1 diterapkan langsung ke ringkasan
  • tanda tangan ringkasan yang ditambahkan padding dihitung, menggunakan kunci pribadi RSA

Tabel berikut mencantumkan kemungkinan algoritma untuk kunci RSA dengan tujuan ASYMMETRIC_SIGN. Gunakan nama algoritma huruf kecil dengan perintah gcloud, dan 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 Skema Tanda Tangan Probabilistik (PSS), panjang salt yang digunakan sama dengan panjang algoritma 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 akan mengirimkan hash SHA-256 dari data yang akan ditandatangani, dan Cloud KMS akan menggunakan SHA-256 secara internal sebagai algoritma hash untuk MGF1 saat menghitung tanda tangan.

Algoritma enkripsi asimetris

Tujuan kunci ASYMMETRIC_DECRYPT memungkinkan enkripsi RSA. Format algoritma ASYMMETRIC_DECRYPT adalah

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

di mana

  • [PADDING_ALGORITHM] adalah algoritma padding
  • [MODULUS_BIT_LENGTH] adalah panjang bit kunci
  • [DIGEST_ALGORITHM] adalah algoritma ringkasan

Tabel berikut mencantumkan kemungkinan algoritma untuk kunci RSA dengan tujuan ASYMMETRIC_DECRYPT. Gunakan nama algoritma huruf kecil dengan perintah gcloud, dan 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 RSA_DECRYPT_OAEP_3072_SHA256, Anda harus menggunakan SHA-256 dengan MGF1 saat mengenkripsi data.

Algoritma penandatanganan MAC

Tujuan kunci MAC memungkinkan penandatanganan MAC simetris. Kunci dengan MAC tujuan kunci saat ini hanya mendukung penandatanganan HMAC.

Algoritma penandatanganan HMAC

Format algoritma penandatanganan HMAC adalah

HMAC_[HASH_ALGORITHM]

di mana

  • [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 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 ringkasan SHA-224
hmac-sha256 (direkomendasikan) HMAC_SHA256 HMAC dengan ringkasan SHA-256
hmac-sha384 HMAC_SHA384 HMAC dengan ringkasan SHA-384
hmac-sha512 HMAC_SHA512 HMAC dengan ringkasan SHA-512

Rekomendasi algoritma

Untuk penandatanganan digital, rekomendasinya adalah menggunakan algoritma penandatanganan kurva elips. EC_SIGN_P256_SHA256 adalah algoritma kurva elips 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 direkomendasikan.

Untuk mengetahui daftar nilai algoritma yang didukung untuk digunakan dengan gcloud CLI, lihat --default-algorithm.

Level perlindungan

Level perlindungan menunjukkan cara operasi kriptografi dilakukan. Setelah membuat kunci, Anda tidak dapat mengubah tingkat perlindungan.

Level perlindungan Deskripsi
SOFTWARE Operasi kriptografis dilakukan di software.
HSM Operasi kriptografis dilakukan di HSM.
EKSTERNAL Operasi kriptografis dilakukan menggunakan kunci yang disimpan di pengelola kunci enkripsi eksternal yang terhubung ke Google Cloud melalui internet. Dibatasi untuk enkripsi simetris dan penandatanganan asimetris.
EXTERNAL_VPC Operasi kriptografis dilakukan menggunakan kunci yang disimpan di pengelola kunci enkripsi eksternal yang terhubung ke Google Cloud melalui Virtual Private Cloud (VPC). Dibatasi untuk enkripsi simetris dan penandatanganan asimetris.

Semua tujuan kunci didukung untuk kunci dengan tingkat perlindungan SOFTWARE atau HSM.