--- title: "Sign" slug: "security-kms2-token-sign" updated: 2026-09-17T09:16:56Z published: 2026-09-17T09:16:56Z canonical: "api.ncloud-docs.com/security-kms2-token-sign" --- > ## Documentation Index > Fetch the complete documentation index at: https://api.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Sign Classic/VPC 환경에서 이용 가능합니다. 최대 8 KB 크기의 데이터 서명값을 생성합니다. RSA2048 또는 ECDSA 키 타입으로만 요청할 수 있습니다. ## 요청 요청 형식을 설명합니다. 요청 형식은 다음과 같습니다. | 메서드 | URI | | --- | --- | | POST | /kms/v1/keys/{keyTag}/sign | ### 요청 헤더 Key Management Service API에서 공통으로 사용하는 헤더에 대한 정보는 [Key Management Service 요청 헤더](/docs/security-kms#%EC%9A%94%EC%B2%AD%ED%97%A4%EB%8D%942)를 참조해 주십시오. ### 요청 경로 파라미터 요청 경로 파라미터에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `keyTag` | String | Required | 키 태그 - 키 이름에서 파생된 키의 고유 식별자 - [Get Key List](/docs/security-kms2-key-list) 참조 - REST API로 암호화 또는 복호화 요청 시 사용 - 키 태그는 기밀 정보로 취급되지 않음 | ### 요청 바디 요청 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `data` | String | Required | 서명값을 생성할 Base64로 인코딩된 문자열 데이터 - 최대 8 KB 입력 가능 | ### 요청 예시 요청 예시는 다음과 같습니다. ``` curl --location --request POST 'https://ocapi.ncloud.com/kms/v1/keys/a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6/sign' \ --header 'x-ncp-ocapi-token: {Access Token}' \ --data '{ "data": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==" }' ``` ## 응답 응답 형식을 설명합니다. ### 응답 바디 응답 바디에 대한 설명은 다음과 같습니다. | 필드 | 타입 | 필수 여부 | 설명 | | --- | --- | --- | --- | | `code` | String | - | 성공 여부 | | `data` | Object | - | 응답 결과 | | `data.signature` | String | - | 생성된 서명값 | ### 응답 상태 코드 Key Management Service API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 [Key Management Service 응답 상태 코드](/docs/security-kms#%EC%9D%91%EB%8B%B5%EC%83%81%ED%83%9C%EC%BD%94%EB%93%9C2)를 참조해 주십시오. ### 응답 예시 응답 예시는 다음과 같습니다. ``` { "code": "SUCCESS", "data": { "signature": "{SIGNATURE}" } } ``` ### 서명 파라미터 키 타입별 서명 알고리즘 파라미터는 다음과 같습니다. | 키 타입 | 서명 알고리즘 | 해시 | MGF | Salt 길이 | Trailer field | 서명값 인코딩 | | --- | --- | --- | --- | --- | --- | --- | | `RSA2048` | RSASSA-PSS | SHA-256 | MGF1(SHA-256) | 222바이트 | 1 | 256바이트 고정 | | `ECDSA` | SHA256withECDSA | SHA-256 | - | - | - | ASN.1 DER | - Salt 길이 222바이트는 RSA-PSS의 최대 salt 길이이며, `ceil((2048 - 1) / 8) - 32 - 2 = 222`로 산출됩니다. - 서명 대상은 요청 바디의 `data`를 Base64 디코딩한 원본 바이트입니다. ### 서명값 형식 `data.signature`는 다음 형식의 문자열입니다. ``` ncpkms:v{키 버전}:{Base64로 인코딩된 서명값} ``` [Verify](/docs/security-kms2-token-verify)를 요청할 때는 위 형식을 그대로 전달해야 합니다. 반면 공개 키를 조회해 직접 검증하는 경우에는 `ncpkms:v{키 버전}:` 접두사를 제거한 후 Base64 디코딩해야 합니다. 검증 예시는 [Get Public Key](/docs/security-kms2-token-public-key)를 참조해 주십시오. 참고 공개 키로 직접 검증할 때는 위 서명 파라미터를 동일하게 지정해야 합니다. OpenSSL, Go, Node.js는 검증 시 salt 길이를 서명값에서 자동으로 추론하지만, Java(JCA)는 자동 추론을 지원하지 않으므로 `PSSParameterSpec`에 salt 길이를 반드시 명시해야 합니다. 서명 파라미터를 직접 맞출 필요가 없도록 하려면 [Verify](/docs/security-kms2-token-verify)를 이용해 주십시오.