이 가이드에서는 PKCS #11 라이브러리를 사용하여 Debian 11(Bullseye)에서 Cloud HSM 키를 사용할 수 있는 샘플 pkcs11-tool
명령어를 제공합니다. OS 또는 Linux 배포판에 따라 이 안내에 포함된 명령어를 변경해야 할 수 있습니다.
시작하기 전에
작업을 계속하기 전에 OpenSSL에서 Cloud HSM 키 사용의 단계를 완료합니다.
대칭 암호화 및 복호화 사용
다음 섹션에서는 대칭 암호화 키, OpenSSL, pkcs11-tool을 사용하여 암호화 및 복호화하는 방법을 보여줍니다.
기본 요건
Cloud HSM 원시 대칭 암호화 키를 만듭니다. Cloud HSM 키를 만들려면 새 키를 만들 때 보호 수준을 HSM으로 설정합니다.
키에 대해 선택한 원시 대칭 암호화 알고리즘을 기록해 둡니다. 각 알고리즘에는 패딩, 초기화 벡터, 추가 인증 데이터에 대한 고유 요구사항이 있습니다.
암호화할 데이터가 포함된 입력 파일을 만듭니다.
암호화
텍스트 파일을 암호화하기 위해 다음 명령어를 실행합니다.
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --encrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file INPUT_TEXT_FILE_PATH \
--output-file ENCRYPTED_TEXT_FILE_PATH
다음을 바꿉니다.
PATH_TO_LIBKMSP11_SO
: PKCS#11 모듈의 경로입니다(예:/usr/local/lib/libkmsp11.so
).MECHANISM
: 키 알고리즘에 따라 사용되는 메커니즘입니다(예:AES-CBC-PAD
).HSM_KEY_NAME
: 암호화에 사용할 Cloud HSM 키의 이름입니다.INITIALIZATION_VECTOR
: 암호화의 일부로 사용될 초기화 벡터 값입니다.INPUT_TEXT_FILE_PATH
: 암호화하려는 입력 파일의 경로입니다.ENCRYPTED_TEXT_FILE_PATH
: 암호화된 텍스트 파일을 저장할 경로입니다.
복호화
텍스트 파일을 복호화하려면 다음 명령어를 실행합니다.
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --decrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file ENCRYPTED_TEXT_FILE_PATH \
--output-file DECRYPTED_TEXT_FILE_PATH
다음을 바꿉니다.
PATH_TO_LIBKMSP11_SO
: PKCS#11 모듈의 경로입니다(예:/usr/local/lib/libkmsp11.so
).MECHANISM
: 키 알고리즘에 따라 사용할 메커니즘입니다(예:ECDSA
).HSM_KEY_NAME
: 복호화하려는 파일의 암호화에 사용된 Cloud HSM 키의 이름입니다.INITIALIZATION_VECTOR
: 암호화의 일부로 사용될 초기화 벡터 값입니다.ENCRYPTED_TEXT_FILE_PATH
: 복호화하려는 파일의 경로입니다.DECRYPTED_TEXT_FILE_PATH
: 복호화된 텍스트 파일을 저장할 경로입니다.
비대칭 암호화 및 복호화 사용
다음 섹션에서는 비대칭 암호화 키, OpenSSL, pkcs11-tool을 사용하여 암호화 및 복호화하는 방법을 보여줍니다.
기본 요건
암호화
텍스트 파일을 암호화하기 위해 다음 명령어를 실행합니다.
openssl pkeyutl -in INPUT_TEXT_FILE_PATH -encrypt -pubin \
-inkey PUBLIC_KEY \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 > ENCRYPTED_TEXT_FILE_PATH
다음을 바꿉니다.
INPUT_TEXT_FILE_PATH
: 암호화하려는 입력 파일의 경로입니다.PUBLIC_KEY
: 공개 키의 경로입니다.ENCRYPTED_TEXT_FILE_PATH
: 암호화된 텍스트 파일을 저장할 경로입니다.
복호화
텍스트 파일을 복호화하려면 다음 명령어를 실행합니다.
pkcs11-tool --module PATH_TO_LIBKMSP11_SO \
--decrypt --mechanism RSA-PKCS-OAEP --slot 0 --hash-algorithm=sha256 \
--mgf MGF1-SHA256 --label HSM_KEY_NAME --type privkey \
-i ENCRYPTED_TEXT_FILE_PATH \
-o OUTPUT_TEXT_FILE_PATH
다음을 바꿉니다.
PATH_TO_LIBKMSP11_SO
: PKCS#11 모듈의 경로(path/to/libkmsp11.so)입니다.HSM_KEY_NAME
: 텍스트 파일을 암호화하는 데 사용된 공개 키에 해당하는 Cloud HSM 키의 이름입니다.ENCRYPTED_TEXT_FILE_PATH
: 복호화하려는 파일의 경로입니다.OUTPUT_TEXT_FILE_PATH
: 복호화된 출력을 저장하려는 경로입니다.
서명 및 확인
다음 섹션에서는 비대칭 서명 키와 pkcs11-tool을 사용하여 서명하고 확인하는 방법을 보여줍니다.
기본 요건
Cloud HSM 비대칭 서명 키를 만듭니다.
서명할 해싱된 입력 데이터가 포함된 파일을 만듭니다.
서명
텍스트 파일을 서명하려면 다음 명령어를 실행합니다.
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --sign \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
-o OUTPUT_SIGNATURE_FILE_PATH
다음을 바꿉니다.
PATH_TO_LIBKMSP11_SO
: PKCS#11 모듈의 경로(예:path/to/libkmsp11.so
)입니다.HSM_KEY_NAME
: 서명에 사용할 Cloud HSM 키의 이름입니다.MECHANISM
: 키 알고리즘에 따라 사용되는 메커니즘입니다. 예를 들면ECDSA
입니다.INPUT_TEXT_FILE_PATH
: 서명하려는 입력 파일의 경로입니다.OUTPUT_SIGNATURE_FILE_PATH
: 서명 파일을 저장할 경로입니다.
확인
서명 파일을 확인하려면 다음 명령어를 실행합니다.
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --verify \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
--signature-file SIGNATURE_FILE_PATH
다음을 바꿉니다.
PATH_TO_LIBKMSP11_SO
: PKCS#11 모듈의 경로(예:path/to/libkmsp11.so
)입니다.HSM_KEY_NAME
: 확인하려는 서명을 생성하는 데 사용된 Cloud HSM 키의 이름입니다.MECHANISM
: 키 알고리즘에 따라 사용되는 메커니즘입니다. 예를 들면ECDSA
입니다.INPUT_TEXT_FILE_PATH
: 이전에 서명된 파일의 경로입니다.SIGNATURE_FILE_PATH
: 서명 파일의 경로입니다.