키 용도 및 알고리즘

각 Cloud Key Management Service 에는 키의 암호화 기능을 정의하는 용도가 있습니다. 키의 버전에서 지원되는 알고리즘도 용도에 의해 결정됩니다. 각 알고리즘은 각 암호화 작업에 사용해야 하는 매개변수를 정의합니다. 또한 각 키에는 암호화 작업이 소프트웨어에서 수행되는지 또는 하드웨어 보안 모듈(HSM)에서 수행되는지를 나타내는 보호 수준이 있습니다.

키 용도

Cloud KMS는 다음 시나리오에 대한 키 용도를 제공합니다.

시나리오 키 용도 지원되는 메소드
대칭적 암호화 ENCRYPT_DECRYPT cryptoKeys.encrypt, cryptoKeys.decrypt
비대칭 서명 ASYMMETRIC_SIGN cryptoKeys.asymmetricSign, cryptoKeyVersions.getPublicKey
비대칭 암호화 ASYMMETRIC_DECRYPT cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey

키를 만들 때 해당 키의 용도와 알고리즘을 정의합니다. 새 키 버전을 만들 때 용도의 범위에 따라 알고리즘을 변경할 수 있습니다. 용도는 변경할 수 없습니다.

용도가 동일한 두 개의 키는 서로 다른 기본 알고리즘을 사용할 수 있지만 동일한 암호화 작업 집합을 지원해야 합니다.

gcloud 명령줄 도구에서 사용되는 지원되는 키 용도 값 목록은 --purpose를 참조하세요.

대칭 암호화 알고리즘

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_p256_sha256(권장) EC_SIGN_P256_SHA256 P-256 곡선의 ECDSA, SHA-256 다이제스트
ec_sign_p384_sha384 EC_SIGN_P384_SHA384 P-384 곡선의 ECDSA, SHA-384 다이제스트

RSA 서명 알고리즘

RSA 서명 알고리즘의 형식은 다음과 같습니다.

RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]

여기에서

  • [PADDING_ALGORITHM]은 패딩 알고리즘입니다.
  • [MODULUS_BIT_LENGTH]는 키의 비트 길이입니다.
  • [DIGEST_ALGORITHM]은 다이제스트 알고리즘입니다.

다음 표에는 용도가 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 다이제스트

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_sha256 RSA_DECRYPT_OAEP_2048_SHA256 RSAES-OAEP 2048비트 키, SHA-256 다이제스트
rsa_decrypt_oaep_3072_sha256(권장) RSA_DECRYPT_OAEP_3072_SHA256 RSAES-OAEP 3072비트 키, SHA-256 다이제스트
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을 사용해야 합니다.

알고리즘 권장사항

디지털 서명의 경우 타원 곡선 서명 알고리즘을 사용하는 것이 좋습니다. EC_SIGN_P256_SHA256은 권장되는 타원 곡선 알고리즘입니다. RSA 서명 알고리즘을 사용하려는 경우 권장되는 RSA 서명 알고리즘은 RSA_SIGN_PSS_3072_SHA256입니다.

비대칭 암호화의 경우 RSA_DECRYPT_OAEP_3072_SHA256 알고리즘을 사용하는 것이 좋습니다.

gcloud 도구에서 사용되는 지원되는 알고리즘 값 목록은 --default-algorithm을 참조하세요.

보호 수준

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

보호 수준 설명
소프트웨어 암호화 작업이 소프트웨어에서 수행됩니다.
HSM 암호화 작업은 HSM에서 수행됩니다.
외부 암호화 작업은 외부 키 관리자에 저장된 키를 사용하여 수행됩니다. 대칭 암호화로 제한됩니다.

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