이 주제에서는 MAC 키를 기반으로 한 디지털 서명 생성 및 검증을 설명합니다.
제작자와 확인자가 모두 공유하는 단일 키는 입력 데이터로 MAC 태그를 계산하는 데 사용됩니다. MAC 태그는 디지털 서명의 역할을 합니다. 확인자는 메시지 및 연결된 MAC 태그를 수신하면 메시지 콘텐츠로 자체 태그를 생성합니다. 그런 다음 확인자는 수신된 태그와 생성된 태그를 비교하여 일치 여부를 확인할 수 있습니다. 두 태그가 일치하면 확인자는 수신된 메시지와 생성자가 서명한 메시지가 서로 동일함을 인식합니다.
시작하기 전에
MAC 디지털 서명을 만들 때는 키 용도가
MAC
인 키를 사용해야 합니다. 키를 만들 때는MAC
을 사용합니다.서명하려는 파일이 파일 크기 한도 이내인지 확인하세요. Cloud HSM 키를 사용하여 MAC 서명을 생성하거나 확인하는 경우 최대 파일 크기는 16KiB입니다. 다른 모든 키의 경우 최대 파일 크기는 64KiB입니다.
필요한 역할
서명을 만들고 확인하는 데 필요한 권한을 얻으려면 관리자에게 키에 대한 다음의 IAM 역할을 부여해 달라고 요청하세요.
- 서명 만들기: Cloud KMS CryptoKey 서명자(
roles/cloudkms.signer
) - 서명 확인: Cloud KMS CryptoKey 확인자(
roles/cloudkms.verifier
) - 서명 만들기 및 확인: Cloud KMS CryptoKey 서명자/확인자(
roles/cloudkms.signerVerifier
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
MAC 서명 만들기
gcloud
명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.
gcloud kms mac-sign \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
다음을 바꿉니다.
KEY_VERSION
: 키 버전 번호입니다.KEY_NAME
: 키의 이름입니다.KEY_RING
: 키가 포함된 키링의 이름입니다.LOCATION
: 키링의 Cloud KMS 위치INPUT_FILE_PATH
: 서명하려는 파일의 로컬 경로SIGNED_FILE_PATH
: 생성된 서명을 저장할 로컬 경로
모든 플래그 및 가능한 값에 대한 정보를 보려면 --help
플래그와 함께 명령어를 실행하세요.
C#
이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Cloud KMS C# SDK를 설치합니다.
Go
이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Cloud KMS Go SDK를 설치합니다.
Java
이 코드를 실행하려면 먼저 자바 개발 환경을 설정하고 Cloud KMS 자바 SDK를 설치합니다.
Node.js
이 코드를 실행하려면 먼저 Node.js 개발 환경을 설정하고 Cloud KMS Node.js SDK를 설치합니다.
Python
이 코드를 실행하려면 먼저 Python 개발 환경을 설정하고 Cloud KMS Python SDK를 설치합니다.
Ruby
이 코드를 실행하려면 먼저 Ruby 개발 환경을 설정하고 Cloud KMS Ruby SDK를 설치합니다.
API
이 예시에서는 curl을 HTTP 클라이언트로 사용하여 API 사용을 보여줍니다. 액세스 제어에 대한 자세한 내용은 Cloud KMS API 액세스를 참조하세요.
CryptoKeyVersions.macSign
메서드를 사용하여 서명을 수행합니다. 이 메서드의 응답에는 base64 인코딩 서명이 포함됩니다.
MAC 서명 확인
gcloud
명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.
gcloud kms mac-verify \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
KEY_VERSION
: 키 버전 번호KEY_NAME
: 키의 이름입니다.KEY_RING
: 키가 포함된 키링의 이름입니다.LOCATION
: 키링의 Cloud KMS 위치INPUT_FILE_PATH
: 서명된 파일의 로컬 경로SIGNED_FILE_PATH
: 확인할 서명 파일의 로컬 경로
모든 플래그 및 가능한 값에 대한 정보를 보려면 --help
플래그와 함께 명령어를 실행하세요.
C#
이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Cloud KMS C# SDK를 설치합니다.
Go
이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Cloud KMS Go SDK를 설치합니다.
Java
이 코드를 실행하려면 먼저 자바 개발 환경을 설정하고 Cloud KMS 자바 SDK를 설치합니다.
Node.js
이 코드를 실행하려면 먼저 Node.js 개발 환경을 설정하고 Cloud KMS Node.js SDK를 설치합니다.
Python
이 코드를 실행하려면 먼저 Python 개발 환경을 설정하고 Cloud KMS Python SDK를 설치합니다.
Ruby
이 코드를 실행하려면 먼저 Ruby 개발 환경을 설정하고 Cloud KMS Ruby SDK를 설치합니다.
API
이 예시에서는 curl을 HTTP 클라이언트로 사용하여 API 사용을 보여줍니다. 액세스 제어에 대한 자세한 내용은 Cloud KMS API 액세스를 참조하세요.
CryptoKeyVersions.macVerify
메서드를 사용하여 검증합니다. 검증할 서명은 base64로 인코딩되어야 합니다. 이 메서드의 응답에는 서명이 성공적으로 검증되었는지 여부를 나타내는 부울이 포함됩니다.