이 주제에서는 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로 가져오기 전에 각 비대칭 키에서 다음 명령어를 실행하는 것이 좋습니다.
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 콘솔에서 오류를 확인하고 실패한 가져오기 문제해결을 참조하세요.