키 용도 및 알고리즘

각 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 내부 메타데이터가 패딩됩니다.

비대칭 서명 알고리즘

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을 위한 해시 알고리즘으로 사용합니다.

PQC 서명 알고리즘

양자 내성 암호화 (PQC) 서명 알고리즘은 PQ_SIGN_ 접두사로 시작합니다. 다음 표에는 Cloud KMS가 용도가 ASYMMETRIC_SIGN인 키에 사용할 수 있는 PQC 알고리즘이 나와 있습니다. 순수 알고리즘은 원시 데이터를 입력으로 사용하는 반면 사전 해시 알고리즘은 데이터의 해시를 허용합니다.

알고리즘(SDK) 알고리즘(API) 변형 설명
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]은 다이제스트 알고리즘입니다.

다음 표에는 용도가 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]은 해시 알고리즘입니다.

다음 표에는 용도가 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을 참조하세요.

보호 수준

보호 수준은 암호화 작업이 수행되는 방식을 나타냅니다. 키를 만든 후에는 보호 수준을 변경할 수 없습니다.

보호 수준 설명
소프트웨어 암호화 작업이 소프트웨어에서 수행됩니다.
HSM 암호화 작업은 HSM에서 수행됩니다.
외부 암호화 작업은 인터넷을 통해 Google Cloud에 연결된 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화 및 비대칭 서명으로 제한됩니다.
EXTERNAL_VPC 암호화 작업은 Virtual Private Cloud(VPC)를 통해 Google Cloud에 연결된 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화 및 비대칭 서명으로 제한됩니다.

보호 수준이 SOFTWARE 또는 HSM인 키에는 모든 키 용도가 지원됩니다.