가져올 키 형식 지정

이 주제에서는 Cloud KMS에서 새 키 버전으로 가져올 수 있도록 키 형식을 지정하는 방법을 설명합니다.

키 자료의 올바른 형식은 키 자료를 대칭 키로 가져오는지 또는 비대칭 키로 가져오는지에 따라 달라집니다. 대칭 키와 비대칭 키의 차이점에 대한 자세한 내용은 키 용도 및 알고리즘을 참조하세요.

지원되는 키 형식

  • 암호화를 위한 대칭 키는 16바이트(원시 대칭 암호화만 해당) 또는 32바이트 바이너리 데이터여야 하며 인코딩된 상태여서는 안 됩니다. 키가 16진수로 인코딩되거나 base64로 인코딩된 경우 가져오기 전에 키를 디코딩해야 합니다.

  • 서명용 대칭 키(MAC 키)는 사용 중인 암호화 해시 함수의 출력 길이와 같아야 하고(예를 들어 HMAC-SHA256 키의 길이는 32바이트여야 함) 인코딩되며 인코딩되면 안 됩니다. 키가 16진수로 인코딩되거나 base64로 인코딩된 경우 가져오기 전에 키를 디코딩해야 합니다.

  • 암호화 또는 서명을 위한 비대칭 키는 PKCS #8 형식이어야 하며 DER 인코딩되어야 합니다. PCKS #8 형식은 RFC 5208에 정의되어 있습니다. DER 인코딩은 International Telecommunications Union X.680에 정의되어 있습니다. 비대칭 키는 Cloud KMS에서 지원하는 길이와 알고리즘 조합 중 하나를 사용해야 합니다.

키의 길이와 같은 키의 일부 측면은 키가 생성된 후에는 변경할 수 없습니다. 이러한 경우 키를 Cloud KMS로 가져올 수 없습니다.

대칭 키 확인

wc 명령어를 사용하여 대칭 키의 길이를 확인합니다.

wc -c /path/to/unwrapped-key
  • 길이가 32가 아닌 대칭 암호화 키를 가져올 수 없습니다.

  • 대칭 서명 키(MAC 키)의 길이는 사용 중인 암호화 해시 함수의 출력 길이와 같아야 합니다. 예를 들어 HMAC-SHA256 키의 길이는 32바이트여야 합니다.

file 명령어를 사용하여 키 형식을 확인합니다.

file /path/to/unwrapped-key
  • 출력이 data이면 키를 가져올 올바른 형식입니다.

  • 출력이 ASCII text이면 cat 명령어를 사용하여 파일의 내용을 표시합니다.

    • = 기호로 끝나는 문자와 숫자로 구성된 문자열인 경우 base64로 인코딩될 수 있습니다. base64 명령어(Windows의 경우 Base64.exe)를 사용하여 디코딩합니다. 다음은 base64로 인코딩된 키의 예입니다.

      THzArjassB+giKeNeT1Zr74OgV24t+Ep+37Ec6ojB3Y=
      
    • 16진수 숫자가 한 줄 이상인 경우 16진수로 인코딩될 수 있습니다. xxd 명령어 또는 Windows의 경우 Format-Hex PowerShell 명령어를 사용하여 디코딩합니다. 다음은 16진수로 인코딩된 키의 예입니다.

      00000000: 4c7c c0ae 36ac b01f a088 a78d 793d 59af  L|..6.......y=Y.
      00000010: be0e 815d b8b7 e129 fb7e c473 aa23 0776  ...]...).~.s.#.v
      
    • 다른 텍스트가 포함된 경우 유효한 대칭 키가 아닐 수 있습니다.

비대칭 키 형식 지정

지원되는 알고리즘을 사용하는 비대칭 키를 가져올 수 있습니다. 실제로는 비대칭 키를 만드는 데 사용되는 알고리즘을 소급하여 결정하기 어렵습니다. 따라서 Cloud KMS로 가져오기 전에 각 비대칭 키에서 다음 명령어를 실행하는 것이 좋습니다.

  1. file 명령어를 사용하여 키 형식을 확인합니다.

    file /path/to/unwrapped-key
    
    • 출력이 PEM이면 키는 PEM 형식입니다. ASCII text인 경우에는 PEM 형식일 가능성이 높습니다. 두 경우 모두 다음 명령어를 실행하여 PCK#8 DER 형식으로 변환합니다.

      openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER \
          -in /path/to/asymmetric-key-pem \
          -out /path/to/formatted-key
      
    • 출력이 data이면 키가 DER 형식일 가능성이 높지만 PKCS #8 형식이 아닐 수 있습니다. 다음 명령을 실행하여 키가 올바른 형식인지 확인합니다. 키가 이미 올바른 형식이면 명령어가 적용되지 않습니다. 이 경우 diff 명령어를 사용하여 입력 및 출력 파일이 동일한지 확인할 수 있습니다.

      openssl pkcs8 -topk8 -nocrypt -inform DER -outform DER \
          -in /path/to/asymmetric-key-der \
          -out /path/to/formatted-key
      

문제 해결

위의 명령어를 실행했는데 키가 적절한 형식이지만 가져오기에 실패하는 경우, Google Cloud Console에서 오류를 확인하고 실패한 가져오기 문제해결을 참조하세요.

다음 단계