각 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비트 Advanced Encryption Standard(AES-256) 키를 Galois Counter Mode(GCM)로 사용하며, 여기에 Cloud KMS 내부 메타데이터가 패딩됩니다.
AES-256과 같은 대칭 암호화 알고리즘은 일반적으로 양자 내성으로 간주됩니다. 대칭 암호화를 계속 사용할 수 있습니다.
비대칭 서명 알고리즘
ASYMMETRIC_SIGN 키 용도는 비대칭 서명을 사용 설정합니다. 키 용도가 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 |
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을 위한 해시 알고리즘으로 사용합니다.
PQC 서명 알고리즘
양자 내성 암호화 (PQC) 서명 알고리즘은 PQ_SIGN_ 접두사로 시작합니다. 다음 표에는 Cloud KMS가 용도가 ASYMMETRIC_SIGN인 키에 사용할 수 있는 PQC 알고리즘이 나와 있습니다. 순수 알고리즘은 원시 데이터를 입력으로 사용하는 반면 사전 해시 알고리즘은 데이터의 해시를 허용합니다.
| 알고리즘(SDK) | 알고리즘(API) | Variant | 설명 |
|---|---|---|---|
pq-sign-ml-dsa-65 |
PQ_SIGN_ML_DSA_65 |
Pure | 모듈 격자 기반 디지털 서명 알고리즘입니다. |
pq-sign-slh-dsa-sha2-128s |
PQ_SIGN_SLH_DSA_SHA2_128S |
Pure | 상태 비저장 해시 기반 디지털 서명 알고리즘입니다. |
pq-sign-hash-slh-dsa-sha2-128s-sha256 |
PQ_SIGN_HASH_SLH_DSA_SHA2_128S_SHA256 |
사전 해싱 | 상태 비저장 해시 기반 디지털 서명 알고리즘입니다. |
비대칭 암호화 알고리즘
ASYMMETRIC_DECRYPT 키 용도는 RSA 암호화를 사용 설정합니다. ASYMMETRIC_DECRYPT 알고리즘의 형식은 다음과 같습니다.
RSA_DECRYPT_PADDING_ALGORITHM_MODULUS_BIT_LENGTH_DIGEST_ALGORITHM
각 항목의 의미는 다음과 같습니다.
PADDING_ALGORITHM은 패딩 알고리즘입니다.MODULUS_BIT_LENGTH는 키의 비트 길이입니다.DIGEST_ALGORITHM은 다이제스트 알고리즘입니다.
RSA 알고리즘을 사용하는 비대칭 암호화는 '지금 수집하고 나중에 복호화' (HNDL) 공격을 비롯한 양자 컴퓨팅에 취약합니다. HNDL 공격에서 악의적인 사용자는 복호화할 수 없는 암호문을 가로채고 결국 양자 컴퓨팅을 사용하여 복호화할 수 있기를 바라며 저장합니다. 양자 컴퓨팅의 발전에도 불구하고 장기적으로 기밀을 유지해야 하는 데이터를 전송하는 경우 키 캡슐화 알고리즘을 선택하세요.
다음 표에는 용도가 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을 사용해야 합니다.
키 캡슐화 알고리즘
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 |
ML-KEM-768과 X25519를 결합한 X-Wing 하이브리드 KEM |
MAC 서명 알고리즘
MAC 키 용도는 대칭 MAC 서명을 사용 설정합니다. 키 용도 MAC이 있는 키는 HMAC 서명만 지원합니다.
HMAC 서명 알고리즘
HMAC 서명 알고리즘의 형식은 다음과 같습니다.
HMAC_HASH_ALGORITHM
각 항목의 의미는 다음과 같습니다.
HASH_ALGORITHM은 해시 알고리즘입니다.
대부분의 대칭 알고리즘은 일반적으로 양자 내성으로 간주됩니다. 하지만 HMAC-SHA1 알고리즘은 양자 내성이 없습니다. 양자 컴퓨팅의 발전에도 불구하고 대칭 서명이 장기적으로 신뢰할 수 있어야 하는 경우 더 큰 다이제스트 크기의 HMAC 키를 선택하세요.
다음 표에는 용도가 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 알고리즘을 사용하는 것이 좋습니다.
키 캡슐화의 경우 클래식 및 잠재적 양자 적에 대한 다층 방어를 제공할 수 있는 하이브리드 알고리즘인 KEM_XWING를 사용하는 것이 좋습니다.
gcloud CLI에 사용되는 지원되는 알고리즘 값 목록은 --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 | 암호화 작업은 Virtual Private Cloud (VPC)를 통해 Google Cloud 에 연결된 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화 및 비대칭 서명으로 제한됩니다.
보호 수준이 SOFTWARE 또는 HSM인 키에는 모든 키 용도가 지원됩니다.