키 용도 및 알고리즘

각 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을 참조하세요.

보호 수준

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

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

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