본문으로 건너뛰기

Windows Provider

sslTrus는 KSP(Key Storage Provider)CSP(Cryptographic Service Provider) 두 가지 Windows Provider 통합 방식을 제공합니다.

Windows Provider를 통해 Microsoft SignTool, Visual Studio, MSBuild, 설치 패키지 도구 및 기타 Windows 암호화 인터페이스를 지원하는 소프트웨어에서 sslTrus 클라우드 코드 서명 기능을 사용할 수 있습니다.

서명 개인 키는 항상 클라우드 HSM에 저장되므로 개인 키 파일을 로컬 컴퓨터에 배포할 필요가 없습니다.

KSP와 CSP의 설치, 구성 및 유지 관리는 모두 sslTrus SignTool CLI를 통해 이루어지며, sslTrus 클라이언트 릴리스 페이지에서 다운로드할 수 있습니다.

KSP와 CSP

KSP와 CSP는 각각 Windows의 두 세대 암호화 인터페이스에 대응합니다.

ProviderWindows 인터페이스적용 시나리오
KSPCNG(Cryptography API: Next Generation)최신 Windows 애플리케이션 및 서명 도구, 우선 선택
CSPCryptoAPI레거시 애플리케이션 또는 CSP 사용이 명시적으로 요구되는 소프트웨어

새로운 Windows 통합 시나리오에서는 일반적으로 KSP를 우선 사용합니다.

대상 소프트웨어가 KSP를 지원하지 않거나 기존 CryptoAPI Provider 사용을 명시적으로 요구하는 경우에만 CSP를 사용합니다.

KSP

KSP는 Windows CNG 기반의 Key Storage Provider입니다.

sslTrus KSP를 설치하면 CNG를 지원하는 Windows 애플리케이션이 표준 Windows 키 인터페이스를 통해 원격 코드 서명 서비스를 호출할 수 있습니다.

로컬 Provider는 애플리케이션이 시작한 서명 요청을 수신하고, 서명할 다이제스트를 원격 코드 서명 서비스로 전송합니다. 실제 개인 키 작업은 클라우드 HSM에서 완료됩니다.

적용 시나리오

KSP는 다음에 적합합니다.

  • Microsoft SignTool.
  • Visual Studio.
  • MSBuild.
  • Windows CNG를 지원하는 빌드 및 서명 소프트웨어.
  • 표준 Windows Provider를 통해 원격 개인 키에 연결해야 하는 애플리케이션.

KSP 설치

관리자 터미널에서 실행:

signtool ksp install

이 명령은 다음을 설치하고 등록합니다:

sslTrus Key Storage Provider

KSP 설치는 시스템 Provider 등록 및 Windows 시스템 디렉터리와 관련되므로 일반적으로 관리자 권한이 필요합니다.

인증서 구성 추가

실행:

signtool ksp add

프롬프트에 따라 입력:

Access Key
Access Secret
Certificate Code

클라이언트는 원격 코드 서명 서비스에서 해당 인증서를 가져와 원격 서비스 주소, 액세스 자격 증명 및 인증서 구성을 저장합니다.

NICSRS(www.nicsrs.com) 환경을 사용하는 경우 --address nicsrs를 추가해야 합니다.

signtool ksp add --address nicsrs

인증서 등록

KSP 구성이 완료되면, 코드 서명 인증서를 Windows 인증서 저장소에 등록하고 KSP Provider에 연결해야 합니다.

실행:

signtool ksp register

기본적으로 현재 사용자의 개인 인증서 저장소에 등록됩니다.

LocalMachine 인증서 저장소에 등록해야 하는 경우:

signtool ksp register --store local-machine

등록이 완료되면 Windows는 해당 인증서를 사용 가능한 개인 키가 있는 것으로 인식하지만, 실제 개인 키는 여전히 클라우드 HSM에 저장됩니다.

Microsoft SignTool 사용

KSP 구성이 완료되면 Windows SDK에서 제공하는 Microsoft signtool.exe를 사용하여 파일에 서명할 수 있습니다.

예:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"

주요 매개변수:

매개변수설명
/cspsslTrus KSP Provider 지정
/kc인증서 번호에 해당하는 키 컨테이너 지정
/f코드 서명 인증서 지정
/fd파일 다이제스트 알고리즘 지정
/trRFC 3161 타임스탬프 서버 지정
/td타임스탬프 다이제스트 알고리즘 지정

기존 서명에 SHA-1 서명을 추가해야 하는 경우 /as 매개변수를 사용할 수 있습니다:

signtool.exe sign /v ^
/csp "sslTrus Key Storage Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA1 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
/as ^
".\app.exe"

Microsoft signtool.exe은 Windows CNG를 통해 sslTrus KSP를 호출하고, KSP가 원격 개인 키 서명을 완료합니다.

KSP 관리

이미 구성된 KSP 확인:

signtool ksp list

설정 삭제:

signtool ksp del

KSP와 인증서 연결 해제:

signtool ksp deregister

KSP 제거:

signtool ksp uninstall

Provider를 제거하기 전에 다른 Windows 애플리케이션이 여전히 이 Provider에 의존하지 않는지 확인해야 합니다.

CSP

CSP는 기존 Windows CryptoAPI에서 사용하는 Cryptographic Service Provider입니다.

주로 /csp/kc 매개변수를 통해 Provider와 키 컨테이너를 지정해야 하는 Windows 서명 프로세스에 사용됩니다. sslTrus CSP는 클라이언트가 설치 및 유지 관리하며, 실제 파일 서명은 Windows SDK의 Microsoft signtool.exe가 수행합니다.

적용 시나리오

CSP는 다음에 적용됩니다.

  • 기존 CryptoAPI만 지원하는 Windows 소프트웨어.
  • CSP Provider를 명시적으로 지정해야 하는 서명 도구.
  • Microsoft SignTool /csp/kc 매개변수를 통해 서명을 실행해야 하는 환경.
  • Windows CNG / KSP를 사용할 수 없는 레거시 애플리케이션.

KSP를 정상적으로 사용할 수 있는 새 시스템에서는 일반적으로 CSP를 별도로 사용할 필요가 없습니다.

CSP 설치

관리자 터미널에서 실행합니다.

signtool csp install

설치 과정에서 등록됩니다:

sslTrus Cryptographic Service Provider

그리고 Provider DLL을 Windows 시스템에 설치합니다.

CSP Provider 유형은 다음과 같습니다.

PROV_RSA_AES

로컬 구성은 기본적으로 다음 위치에 저장됩니다.

%ProgramData%\sslTrusKSP

구성 파일은 Windows DPAPI로 보호됩니다.

KSP도 함께 설치해야 하는 경우 다음을 실행할 수 있습니다.

signtool csp install --with-ksp

인증서 구성 추가

실행:

signtool csp add

프롬프트에 따라 입력:

Access Key
Access Secret
Certificate Code

추가가 완료되면 클라이언트는 해당 인증서를 다운로드하여 다음 위치에 저장합니다:

%ProgramData%\sslTrusKSP\CERT_CODE.crt

그 중 CERT_CODE는 원격 인증서 식별자이자 이후 Microsoft SignTool에서 사용하는 키 컨테이너 이름으로도 사용됩니다.

NICSRS(www.nicsrs.com) 환경을 사용하는 경우 --address nicsrs을(를) 추가해야 합니다.

signtool csp add --address nicsrs

인증서 등록

기본적으로 인증서를 현재 사용자의 개인 인증서 저장소에 등록합니다:

signtool csp register

로컬 머신에 등록해야 하는 경우:

signtool csp register --store local-machine

지원되는 인증서 저장소는 다음과 같습니다:

매개변수Windows 인증서 저장소
current-userCurrentUser\My
local-machineLocalMachine\My

등록이 완료되면 Windows 인증서 관리자에 해당 인증서가 개인 키와 연결된 것으로 표시되지만, 개인 키는 실제로 클라우드 HSM에 계속 저장되어 있습니다.

Microsoft SignTool 사용

CSP 서명 시 Provider, 키 컨테이너 및 인증서 파일을 명시적으로 지정해야 합니다:

signtool.exe sign /v ^
/csp "sslTrus Cryptographic Service Provider" ^
/kc CERT_CODE ^
/f "C:\ProgramData\sslTrusKSP\CERT_CODE.crt" ^
/fd SHA256 ^
/tr http://timestamp.acs.microsoft.com ^
/td SHA256 ^
".\app.exe"

주요 매개변수:

매개변수설명
/cspsslTrus CSP Provider 지정
/kc인증서 번호에 해당하는 키 컨테이너 지정
/f코드 서명 인증서 지정
/fd파일 다이제스트 알고리즘 지정
/trRFC 3161 타임스탬프 서버 지정
/td타임스탬프 다이제스트 알고리즘 지정

sslTrus CSP는 SHA1, SHA256, SHA384 및 SHA512 다이제스트 알고리즘을 지원하며, 새로운 서명 시나리오에서는 일반적으로 SHA-256 이상의 강도를 가진 알고리즘을 사용해야 합니다.

서명 검증

서명이 완료되면 Microsoft SignTool을 사용하여 검증할 수 있습니다:

signtool.exe verify /pa /v ".\app.exe"

서명 검증은 원격 개인 키를 다시 호출하지 않으며, 새로운 서명 횟수도 발생하지 않습니다.

CSP 관리

기존 설정 보기:

signtool csp list

특정 인증서 구성을 삭제합니다:

signtool csp del

인증서와 CSP의 개인 키 연결 해제:

signtool csp deregister

Provider 제거:

signtool csp uninstall

CSP 구성을 삭제해도 이미 다운로드된 인증서 파일은 자동으로 삭제되지 않습니다. 관련 인증서와 구성이 더 이상 사용되지 않는 경우, 다른 Provider가 의존하지 않는지 확인한 후 정리해야 합니다.

KSP 또는 CSP

특별한 호환성 요구 사항이 없다면 다음과 같은 방식으로 선택할 수 있습니다.

시나리오권장 사항
새로운 Windows 서명 환경KSP
Windows CNG 지원KSP
Microsoft SignTool 등 현대적인 Windows 도구KSP
소프트웨어가 CSP를 명시적으로 요구CSP
기존 CryptoAPI 애플리케이션CSP
도구에서 /csp/kc 사용 요구CSP

KSP와 CSP의 주요 차이점은 Windows에서 사용하는 암호화 Provider 인터페이스가 다르다는 점이며, 원격 개인 키 보안 모델은 동일하게 유지됩니다.

KSP 또는 CSP 중 어느 것을 사용하든 코드 서명 개인 키는 로컬 클라이언트에 저장되지 않습니다.

서명 횟수

Windows Provider의 서명 횟수는 기본적으로 실제 완료된 원격 서명 작업 수에 따라 계산됩니다.

예:

SHA256 签名一次 = 1 次

동일한 파일에 대해 SHA256 서명을 먼저 완료한 후 다른 서명을 추가하면 원격 개인 키 작업이 다시 트리거되므로 각각 별도로 계산해야 합니다.

KSP 시나리오에서 동일한 파일에 SHA256 및 SHA1 이중 서명을 수행하면 일반적으로 두 번의 하위 수준 서명 호출이 발생합니다.

구체적인 규칙은 참고 자료를 참조하십시오.

타임스탬프

Windows Authenticode 서명에는 일반적으로 신뢰할 수 있는 타임스탬프를 추가하는 것이 좋습니다.

현대의 코드 서명 시나리오에서는 RFC 3161 타임스탬프를 우선적으로 사용하는 것이 좋습니다. 예:

http://timestamp.acs.microsoft.com

실제 프로덕션 환경에서는 대상 Windows 버전, 인증서 정책, 네트워크 환경 및 타임스탬프 서비스 제공업체 요구 사항에 따라 적절한 TSA를 선택해야 합니다.

구체적인 타임스탬프 서버 및 프로토콜 설명은 참고 자료를 참조하십시오.

보안 참고 사항

Windows Provider 사용 시 주의 사항:

  • Access Secret은 민감한 자격 증명으로 보호해야 합니다.
  • 액세스 자격 증명을 공개 스크립트나 로그에 기록하지 마십시오.
  • Provider 구성 파일을 공개적으로 배포해서는 안 됩니다.
  • 로컬 인증서 파일에는 코드 서명 개인 키가 포함되어 있지 않습니다.
  • 코드 서명 개인 키는 항상 클라우드 HSM에 보관됩니다.
  • KSP/CSP가 서명을 시작할 때 원격 코드 서명 서비스에 액세스할 수 있어야 합니다.
  • LocalMachine 인증서 저장소를 사용할 때는 Windows 사용자 권한 및 자격 증명 액세스 범위에 특히 주의해야 합니다.

CSP의 config.dat는 현재 Windows 사용자 Profile의 DPAPI를 사용하여 보호되므로, 인증서를 LocalMachine에 등록해도 해당 구성의 DPAPI 보호 범위가 자동으로 변경되지 않습니다.