각 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 |
MAC 서명 | mac |
MAC |
cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify |
키를 만들 때 해당 키의 용도와 알고리즘을 정의합니다. 새 키 버전을 만들 때 용도의 범위에 따라 알고리즘을 변경할 수 있습니다. 용도는 변경할 수 없습니다.
용도가 동일한 두 개의 키는 서로 다른 기본 알고리즘을 사용할 수 있지만 동일한 암호화 작업 집합을 지원해야 합니다.
대칭 암호화 알고리즘
ENCRYPT_DECRYPT 키 용도는 대칭 암호화를 사용 설정합니다. 키 용도가 ENCRYPT_DECRYPT인 모든 키는 GOOGLE_SYMMETRIC_ENCRYPTION 알고리즘을 사용합니다. 이 알고리즘에는 매개변수가 사용되지 않습니다. 이 알고리즘은 256비트 Advanced Encryption Standard(AES-256) 키를 Galois Counter Mode(GCM)로 사용하며, 여기에 Cloud KMS 내부 메타데이터가 패딩됩니다.
비대칭 서명 알고리즘
ASYMMETRIC_SIGN 키 용도는 비대칭 서명을 사용 설정합니다. 키 용도가 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 |
PureEdDSA 모드의 Curve25519에 있는 EdDSA는 해싱된 데이터 대신 원시 데이터를 입력으로 사용합니다. |
ec-sign-p256-sha256 **(권장)** |
EC_SIGN_P256_SHA256 |
P-256 곡선의 ECDSA, SHA-256 다이제스트 |
ec-sign-p384-sha384 |
EC_SIGN_P384_SHA384 |
P-384 곡선의 ECDSA, SHA-384 다이제스트 |
ec-sign-secp256k1-sha256 |
EC_SIGN_SECP256K1_SHA256 |
Secp256k1 곡선의 ECDSA, 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]
다이제스트 알고리즘을 생략합니다. 이러한 알고리즘은 DigestInfo로의 인코딩을 생략하는 PKCS #1 서명의 변형입니다. 이 변형은 다음과 같은 특징이 있습니다.
- 다이제스트는 서명될 메시지를 대상으로 계산됩니다.
- PKCS #1 패딩은 다이제스트에 직접 적용됩니다.
- 패딩된 다이제스트의 서명은 RSA 비공개 키를 사용하여 계산됩니다.
다음 표에는 용도가 ASYMMETRIC_SIGN인 RSA 키의 가능한 알고리즘이 나와 있습니다. 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은 솔트 길이가 256비트인 PSS를 사용합니다. 또한 PSS의 경우 마스크 생성 함수(MGF1)에도 알고리즘 이름에 지정된 다이제스트 알고리즘이 사용됩니다. 예를 들어 RSA_SIGN_PSS_2048_SHA256을 사용하는 경우 서명되는 데이터의 SHA-256 해시를 제출하며, Cloud KMS는 서명을 계산할 때 내부적으로 SHA-256을 MGF1을 위한 해시 알고리즘으로 사용합니다.
비대칭 암호화 알고리즘
ASYMMETRIC_DECRYPT 키 용도는 RSA 암호화를 사용 설정합니다. ASYMMETRIC_DECRYPT 알고리즘의 형식은 다음과 같습니다.
RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]
각 항목의 의미는 다음과 같습니다.
[PADDING_ALGORITHM]
은 패딩 알고리즘입니다.[MODULUS_BIT_LENGTH]
는 키의 비트 길이입니다.[DIGEST_ALGORITHM]
은 다이제스트 알고리즘입니다.
다음 표에는 용도가 ASYMMETRIC_DECRYPT인 RSA 키의 가능한 알고리즘이 나와 있습니다. 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 다이제스트 |
이러한 알고리즘은 모두 마스크 생성 함수 MGF1과 함께 Optimal Asymmetric Encryption Padding(OAEP)을 사용합니다. MGF1에는 다이제스트 알고리즘이 필요합니다. Cloud KMS에서 MGF1과 함께 사용되는 다이제스트 함수는 키 알고리즘 이름의 일부로 지정됩니다. 예를 들어 RSA_DECRYPT_OAEP_3072_SHA256 알고리즘을 사용하는 경우 데이터를 암호화할 때 MGF1과 함께 SHA-256을 사용해야 합니다.
MAC 서명 알고리즘
MAC 키 용도는 대칭 MAC 서명을 사용 설정합니다. 키 용도 MAC이 있는 키는 현재 HMAC 서명만 지원합니다.
HMAC 서명 알고리즘
HMAC 서명 알고리즘의 형식은 다음과 같습니다.
HMAC_[HASH_ALGORITHM]
각 항목의 의미는 다음과 같습니다.
[HASH_ALGORITHM]
은 해시 알고리즘입니다.
다음 표에는 용도가 MAC인 키에 현재 사용 가능한 HMAC 알고리즘이 나와 있습니다. gcloud
명령어에는 소문자 알고리즘 이름을, Cloud Key Management Service API에는 대문자 알고리즘 이름을 사용합니다.
알고리즘(SDK) | 알고리즘(API) | 설명 |
---|---|---|
hmac-sha1 |
HMAC_SHA1 |
SHA-1 다이제스트가 있는 HMAC |
hmac-sha224 |
HMAC_SHA224 |
SHA-224 다이제스트가 있는 HMAC |
hmac-sha256 (권장) |
HMAC_SHA256 |
SHA-256 다이제스트가 있는 HMAC |
hmac-sha384 |
HMAC_SHA384 |
SHA-384 다이제스트가 있는 HMAC |
hmac-sha512 |
HMAC_SHA512 |
SHA-512 다이제스트가 있는 HMAC |
알고리즘 권장사항
디지털 서명의 경우 타원 곡선 서명 알고리즘을 사용하는 것이 좋습니다. EC_SIGN_P256_SHA256은 권장되는 타원 곡선 알고리즘입니다. RSA 서명 알고리즘을 사용하려는 경우 권장되는 RSA 서명 알고리즘은 RSA_SIGN_PSS_3072_SHA256입니다.
비대칭 암호화의 경우 RSA_DECRYPT_OAEP_3072_SHA256 알고리즘을 사용하는 것이 좋습니다.
MAC 서명의 경우 HMAC_SHA256 알고리즘을 사용하는 것이 좋습니다.
gcloud CLI에 사용되는 지원되는 알고리즘 값 목록은 --default-algorithm을 참조하세요.
보호 수준
보호 수준은 암호화 작업이 수행되는 방식을 나타냅니다. 키를 만든 후에는 보호 수준을 변경할 수 없습니다.
보호 수준 | 설명 |
---|---|
SOFTWARE | 암호화 작업이 소프트웨어에서 수행됩니다. |
HSM | 암호화 작업은 HSM에서 수행됩니다. |
외부 | 암호화 작업은 인터넷을 통해 Google Cloud에 연결된 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화 및 비대칭 서명으로 제한됩니다. |
EXTERNAL_VPC | 암호화 작업은 Virtual Private Cloud(VPC)를 통해 Google Cloud에 연결된 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화 및 비대칭 서명으로 제한됩니다. |
보호 수준이 SOFTWARE
또는 HSM
인 키에는 모든 키 용도가 지원됩니다.