디지털 서명은 데이터의 신뢰성을 확인하는 데 사용되는 암호화 출력입니다. 디지털 서명 알고리즘은 두 가지 작업을 허용합니다.
서명 키를 사용하여 원시 데이터에 대한 서명을 생성하는 서명 작업
서명 키를 알지 못하는 사람이 서명을 검증할 수 있는 확인 작업
디지털 서명의 주 목적은 다음과 같습니다.
- 서명된 데이터의 무결성 확인
- 서명자가 서명이 진짜가 아니라고 주장하는 경우의 부인 방지
디지털 서명은 공개 키 암호화라고도 하는 비대칭 암호화를 사용합니다. 비대칭 키는 공개 키/비공개 키 쌍으로 구성됩니다. 비공개 키는 서명을 만드는 데 사용되고, 해당 공개 키는 서명을 확인하는 데 사용됩니다.
디지털 서명의 사용 사례
디지털 서명을 사용하여 빌드를 검증할 수 있습니다. 예를 들어 비공개 키가 디지털로 서명한 바이너리의 경우, 비공개 키에 해당하는 공개 키를 사용하여 유효성을 검사할 수 있습니다. 바이너리의 서명이 유효하지 않으면 바이너리가 변조되거나 손상된 것입니다.
또 다른 예는 인증 기관(CA)에서 발급한 인증서의 주체를 검증하는 것입니다. CA는 공개 키/비공개 키의 비공개 키 부분에 대한 주체의 소유권을 바탕으로 주체에게 인증서를 발급합니다. 인증서는 주체의 비공개 키로 생성된 디지털 서명을 포함합니다. 인증서는 공개 키/비공개 키에서 주체의 공개 키 부분도 포함합니다. 주체와 상호작용하는 개체는 주체의 공개 키와 추가 인증서 확인 규칙을 사용하여 서명을 검증합니다. 서명이 문제의 데이터에 상응하지 않거나 인증서에 규정된 확인 규칙을 위반하는 경우에는 서명이 유효하지 않은 것으로 판명됩니다.
디지털 서명 워크플로
다음은 서명을 만들고 검증하기 위한 흐름을 설명합니다. 이 워크플로는 데이터 서명자와 데이터 수신자의 두 참가자로 구성되어 있습니다.
서명자가 디지털 서명을 지원하는 비대칭 키를 만듭니다.
서명자는 이 키를 사용하여 여러 서명을 만들 수 있습니다.
서명자가 데이터에서 비공개 키 작업을 수행하여 디지털 서명을 만듭니다.
서명자가 데이터 및 디지털 서명을 데이터 수신자에게 제공합니다.
수신자가 서명자의 공개 키/비공개 키 쌍에서 공개 키 부분을 사용하여 디지털 서명을 확인합니다. 확인에 실패하면 데이터가 변경됩니다.
서명 알고리즘
Cloud Key Management Service는 디지털 서명을 위한 타원 곡선(EC) 및 RSA 알고리즘을 지원합니다. 이 두 업계 표준 알고리즘 모두 다양한 키 크기와 다이제스트 알고리즘을 제공합니다.
타원 곡선 암호법은 단방향 해시 함수 및 점 곱셈을 사용하여 타원 곡선에서 점을 계산하기 때문에 점의 곱함수를 파악하기가 어렵습니다. 곱함수를 파악하기 어려운 것이 EC 암호범의 암호화 이점입니다. 곡선의 크기가 클수록 곱함수를 계산하기가 더 어렵습니다. EC 암호법의 이점은 동일한 암호화 수준을 제공하는 RSA 키에 비해 EC 키의 크기가 작다는 것입니다.
RSA 암호법은 큰 정수를 두 개 이상의 요소로 나누기가 어렵다는 점을 이용합니다. 키 크기가 클수록 정수를 계산하기 어렵습니다.
Cloud KMS 디지털 서명 기능
Cloud KMS는 디지털 서명을 만들고 검증하는 것과 관련하여 다음과 같은 기능을 제공합니다.
키 용도가
ASYMMETRIC_SIGN
인 비대칭 키를 생성할 수 있습니다. 비대칭 서명을 위한 Cloud KMS 키는 타원 곡선 서명 알고리즘과 RSA 서명 알고리즘을 모두 지원합니다.디지털 서명을 생성할 수 있습니다.
비대칭 키의 공개 키를 검색할 수 있습니다.
Cloud KMS는 디지털 서명을 직접 검증할 수 없습니다. 대신 OpenSSL과 같은 공개적으로 사용 가능한 SDK 및 도구를 사용하여 디지털 서명을 검증합니다. 이러한 SDK 및 도구에는 Cloud KMS에서 검색되는 공개 키가 필요합니다. 오픈 SDK 및 도구를 사용하는 방법은 타원 곡선 서명 검증 및 RSA 서명 검증을 참조하세요.