Windows 공급자
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의 두 세대 암호화 인터페이스에 해당합니다.
| Provider | Windows 인터페이스 | 적용 시나리오 |
|---|---|---|
| KSP | CNG(Cryptography API: Next Generation) | 최신 Windows 애플리케이션 및 서명 도구, 우선 선택 |
| CSP | CryptoAPI | 레거시 애플리케이션 또는 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"
주요 매개변수:
| 매개변수 | 설명 |
|---|---|
/csp | sslTrus KSP Provider 지정 |
/kc | 인증서 번호에 해당하는 키 컨테이너 지정 |
/f | 코드 서명 인증서 지정 |
/fd | 파일 다이제스트 알고리즘 지정 |
/tr | RFC 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 제공자 유형:
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
LocalMachine에 등록해야 하는 경우:
signtool csp register --store local-machine
지원되는 인증서 저장소는 다음과 같습니다:
| 매개변수 | Windows 인증서 저장소 |
|---|---|
current-user | CurrentUser\My |
local-machine | LocalMachine\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"
주요 매개변수:
| 매개변수 | 설명 |
|---|---|
/csp | sslTrus CSP Provider를 지정합니다 |
/kc | 인증서 번호에 해당하는 키 컨테이너를 지정합니다 |
/f | 코드 서명 인증서를 지정합니다 |
/fd | 파일 다이제스트 알고리즘을 지정합니다 |
/tr | RFC 3161 타임스탬프 서버를 지정합니다 |
/td | 타임스탬프 다이제스트 알고리즘을 지정합니다 |
현재 원격 서명 인터페이스는 SHA1 및 SHA256 다이제스트 알고리즘을 지원합니다.새 서명 시나리오에서는 SHA256을 우선적으로 사용해야 하며, SHA1은 기존 시스템과의 호환이 필요한 경우에만 사용해야 합니다.
서명 검증
서명 완료 후, 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 보호 범위는 자동으로 변경되지 않습니다.