sgcSign 기능 참조
sgcSign 디지털 서명 스위트의 완전한 기능 카탈로그 — Delphi 7부터 Delphi 13 Florence, C++Builder, .NET을 위한 서명 표준, 키 공급자, 국가 프로파일, 검증, EU 신뢰 목록 통합, ETSI 검증 보고서예요.
sgcSign 디지털 서명 스위트의 완전한 기능 카탈로그 — Delphi 7부터 Delphi 13 Florence, C++Builder, .NET을 위한 서명 표준, 키 공급자, 국가 프로파일, 검증, EU 신뢰 목록 통합, ETSI 검증 보고서예요.
sgcSign은 키 관리, 서명 작업, 출력 형식을 분리해요. 모든 키 공급자와 서명자를 혼합하고; 하나의 컴포넌트만 변경하여 로컬 PFX와 Cloud KMS 사이를 전환해요.
단일 인터페이스 뒤에 인증서 및 개인 키 액세스를 추상화해요. 로컬 파일, Windows 인증서 저장소, PKCS#11 하드웨어 토큰, Azure / AWS / Google Cloud KMS, HashiCorp Vault, Certum SimplySign, CSC v2 원격 QTSP예요.
각 ETSI 형식을 위한 특화된 서명자: TsgcXAdESSigner, TsgcPAdESSigner, TsgcCAdESSigner, TsgcAuthenticodeSigner. 또한 국가 프로파일에서 적절한 서명자를 선택하고 구성하는 통합 고수준 API인 TsgcDocumentSigner가 있어요. TsgcSAFTPTSigner는 포르투갈의 Portaria 363/2010 인보이스 서명을 생성해요.
TsgcTSAClient (RFC 3161 타임스탬프), TsgcOCSPClient (폐지), TsgcSignatureVerifier (검증), TsgcX509Certificate (인증서 디코더 + 발급자 검증), TsgcEUTrustList (LOTL/EUTL), TsgcASiCContainer (ASiC-S/ASiC-E ZIP 패키징)이에요.
모든 4가지 AdES 레벨(B-B, B-T, B-LT, B-LTA)에서 완전한 ETSI 서명 형식 지원, 코드 서명을 위한 Microsoft Authenticode 포함이에요.
XML 고급 전자 서명이에요. 봉투형, 분리형, 래핑형 모드예요. B-B / B-T / B-LT / B-LTA 레벨이에요. 서명 위치를 고정하는 봉투 형식을 위한 SignatureParentElement(KSeF /v2/auth/xades-signature). Delphi 7 이상에서 WideString 오버로드를 통한 폴란드어, 스페인어, 독일어 발음 기호 지원이에요.
PDF 고급 전자 서명이에요. PDF 안에 서명을 포함하고, 서명자 이름, 사유, 위치, 연락처, 설정 가능한 사각형 영역으로 눈에 보이는 서명 외관을 만들 수 있어요. Adobe Acrobat과 호환돼요. TSA + OCSP로 PAdES-T, -LT 레벨을 지원해요.
CMS/PKCS#7 바이너리 서명 over any file or data stream. Detached and attached forms. CAdES-BES, CAdES-T (timestamped), CAdES-XL (long-term with revocation values).
연관 서명 컨테이너. ZIP-format archive bundling one or more documents with a XAdES or CAdES signature. Simple (apASiCS, single document) or Extended (apASiCE, manifest + multiple documents). The first ZIP entry is an uncompressed mimetype marker so verifiers detect the container in the first ~50 bytes.
Windows PE 파일(.exe, .dll, .sys, .ocx, .cpl, .scr)용 Microsoft Authenticode예요. SHA-1, SHA-256(기본값), SHA-384, SHA-512 해시 알고리즘과 RFC 3161 타임스탬프 토큰을 지원해요. 구형과 최신 검증기 모두와 호환되도록 중첩(이중) 서명을 지원해요. sgcSign Server에서 사용할 수 있어요. signtool sign /ph에 해당하는 페이지 해시를 선택적으로 넣을 수 있어요. Windows가 커널 모드 드라이버의 4KB 페이지마다 검증할 수 있어요(메모리 무결성, HVCI).
형식마다 ETSI 적합성 레벨 4가지를 모두 지원해요. B-B(기본), B-T(타임스탬프), B-LT(장기, 폐지 정보 포함), B-LTA(보관용, 보관 타임스탬프 포함)예요. TSA 클라이언트와 OCSP 응답기를 추가하면 서명을 B-B에서 B-LT로 올릴 수 있어요.
모든 제공자는 IsgcKeyProvider를 구현해요. 서명 코드를 바꾸지 않고도 이 키 소스들 사이를 자유롭게 전환할 수 있어요.
| Component | Type | Use Case |
|---|---|---|
TsgcPFXKeyProvider |
Local file (PKCS#12) | 비밀번호로 보호된 PFX/.p12 파일을 지원해요. Windows에서는 네이티브 Windows CNG를, 그 외 플랫폼에서는 순수 Pascal 파싱을 사용해요. |
TsgcPEMKeyProvider |
Local file (PEM) | 암호화된 PKCS#8 키가 포함된 PEM 인증서예요. PBES2 / PBKDF2 / AES-CBC 복호화를 네이티브로 처리하므로 OpenSSL DLL이 필요 없어요. |
TsgcWindowsCertStoreProvider |
Windows store | 로컬 컴퓨터 및 현재 사용자 저장소를 지원해요. Active Directory 및 그룹 정책과 통합돼요. |
TsgcPKCS11Provider |
Hardware token | PKCS#11 드라이버로 스마트 카드와 HSM을 지원해요. SafeNet, YubiKey, Nitrokey, Thales, Utimaco 등이 있어요. |
TsgcAzureTrustedSigningProvider |
Cloud (Microsoft) | Azure Trusted Signing은 Microsoft의 적격 서명 서비스예요. OAuth2 클라이언트 자격 증명을 사용하며 Azure Key Vault와는 별개예요. |
TsgcAWSKMSKeyProvider |
Cloud (AWS) | AWS Key Management Service예요. 키는 AWS 안에 머물고, 문서 해시만 네트워크로 전송돼요. |
TsgcGCloudKMSKeyProvider |
Cloud (Google) | Google Cloud Key Management예요. 서비스 계정 인증을 사용해요. |
TsgcHashiCorpVaultKeyProvider |
클라우드(자체 호스팅) | HashiCorp Vault transit 서명 엔진이에요. 키는 Vault 클러스터를 벗어나지 않아요. |
TsgcCertumSimplySignProvider |
Remote QTSP | Certum SimplySign은 폴란드의 적격 전자 서명 제공자예요. KSeF, ZUS, PUE와 호환돼요. |
TsgcCSCKeyProvider |
Remote QTSP (CSC v2) | 범용 Cloud Signature Consortium v2 클라이언트예요. Universign, D-Trust sign-me, A-Trust, FNMT Cl@ve Firma, Evrotrust, Intesi Group 등 CSC v2 API를 제공하는 모든 QTSP를 지원해요. |
각 프로파일은 대상 국가 규제 기관의 요구를 충족하도록 해시 알고리즘, 정규화, 서명 레벨, RFC 3161 타임스탬프 정책, OCSP 폐지 확인 기준을 미리 조정해 두었어요. 코드 한 줄로 관할 국가를 바꿀 수 있어요.
| Profile | Country | System | Format | Level |
|---|---|---|---|---|
spVeriFactu | Spain | VeriFactu (AEAT) | XAdES-EPES | B-B |
spTicketBAI | Spain (Basque) | TicketBAI | XAdES-EPES | B-B |
spFacturaeB2B | Spain | Facturae 3.x / FACe | XAdES-EPES | B-T |
spFatturaPA | Italy | FatturaPA (SDI) | XAdES-BES | B-B |
spSAFTPT | Portugal | SAF-T PT | RSA-SHA256 | B-B |
spKSeF | Poland | KSeF (Krajowy System e-Faktur) | XAdES | B-T |
spFacturX | France / Germany | Factur-X / ZUGFeRD | XAdES | B-B |
spEFactura | Romania | e-Factura (ANAF) | XAdES | B-T |
spNAVOnline | Hungary | NAV Online | XML-DSig | B-B |
spFiskalizacija | Croatia | Fiskalizacija | XML-DSig | B-B |
spPeppolBE | Belgium | Peppol UBL 2.0 | XAdES | B-T |
spPeppolBG | Bulgaria | Peppol UBL 2.1 | XAdES | B-T |
spMyDATA | Greece | myDATA (AADE) | XAdES | B-B |
포르투갈: SAF-T (PT) 파일 자체에 서명하는 것 외에도, 전용 TsgcSAFTPTSigner 컴포넌트가 Portaria 363/2010 인보이스별 서명을 생성해요. 이 RSA-SHA1 서명의 1, 11, 21 and 31 위치에 있는 네 개의 문자가 인보이스에 인쇄되고 QR-code field Q에 담겨요.
TicketBAI: 지방별 변형 spTicketBAIAraba, spTicketBAIBizkaia, spTicketBAIGipuzkoa는 각각 해당 지방 Hacienda의 공식 서명 정책 식별자와 SHA-256 다이제스트를 담고 있어요. spTicketBAI는 하위 호환성을 위해 Bizkaia 쌍에 매핑돼요.
체코 EET 2.0: 매출 등록(Elektronická evidence tržeb)은 서명 프로파일이 아니라 전용 컴포넌트 TsgcEETClient로 제공돼요. 등록된 각 매출에 WS-Security 서명을 적용해 세무 당국에 전송하고, 확인 코드인 pok을 받아 읽어요. 보고는 2027년 1월 1일부터 시작돼요. EET 2.0 자세히 보기.
회원국 노동법 요건(예: 독일의 § 126a BGB, 이탈리아의 FEQ)을 충족하는 eIDAS 준수 서명이에요. 관할 국가별로 미리 조정되어 있으며 Profile.LoadProfile(spEmploymentXX)로 TsgcXAdESSigner에 불러와요.
| Profile | Country | Level | Hash | Timestamp | OCSP | Notes |
|---|---|---|---|---|---|---|
spEmploymentDE | Germany | B-LT | SHA-256 | Yes | Yes | 서면 계약에는 § 126a BGB에 따라 QES가 필요해요. |
spEmploymentIT | Italy | B-LT | SHA-256 | Yes | Yes | FEQ 적격 서명이며, INPS 포털은 XAdES와 CAdES를 모두 처리해요. |
spEmploymentES | Spain | B-T | SHA-256 | Yes | No | AdES로 충분해요. SEPE / TGSS 포털은 FNMT 또는 DNIe가 필요해요. |
spEmploymentFR | France | B-T | SHA-256 | Yes | No | AdES도 괜찮지만, DSP2 / RGS 하의 원격 서명에는 QES를 권장해요. |
spEmploymentAT | Austria | B-LT | SHA-256 | Yes | Yes | Handy-Signatur / ID Austria를 통한 QES가 일반적이에요. |
spEmploymentBE | Belgium | B-LT | SHA-256 | Yes | Yes | eID 카드(BeID)를 통한 QES예요. |
spEmploymentPT | Portugal | B-LT | SHA-256 | Yes | Yes | Cartão do Cidadão / Chave Móvel Digital을 통한 QES예요. |
spEmploymentNL | Netherlands | B-T | SHA-256 | Yes | No | AdES가 일반적으로 허용되며, 일부 HR 포털(UWV)에는 QES가 필요해요. |
spEmploymentPL | Poland | B-T | SHA-256 | Yes | No | 계약이 ZUS / PUE로 제출되는 경우 Profil Zaufany 또는 적격 인증서를 통한 QES예요. |
전체 검증 파이프라인과 EU 신뢰 목록 통합, 표준화된 ETSI TS 119 102-2 XML 검증 보고서를 제공해요. EU 노동 법원과 공공 행정 검증기가 인정하는 서명 유효성의 법적 증거예요.
TsgcSignatureVerifier는 전체 파이프라인을 다뤄요. 다이제스트 검사, RSA / ECDSA 서명 검증, 인증서 체인 검증, OCSP 폐지 확인, 장기 검증(LTV)을 위한 내장 RevocationValues, SignedProperties의 Id 기반 조각 조회를 지원해요.
TsgcEUTrustList는 ETSI TS 119 612 신뢰 목록의 목록(List of Trusted Lists)과 회원국별 신뢰 목록 약 31개를 파싱해요. 실시간 EU 레지스트리와 대조해 모든 X.509 인증서가 eIDAS 적격인지 분류할 수 있어요. 망 분리 환경을 위한 오프라인 모드 캐싱도 지원해요.
검증할 때마다 표준화된 XML 검증 보고서(v1.2.1)를 생성해요. EU 노동 법원과 공공 행정 검증기가 서명 유효성의 법적 증거로 인정하는 형식이에요.
TsgcTSAClient는 모든 RFC 3161 타임스탬프 기관에 연결해요. 서명을 B-B에서 B-T, B-LT, B-LTA로 올려, 서명 인증서가 만료된 뒤에도 오랫동안 검증할 수 있어요.
TsgcOCSPClient는 RFC 6960 Online Certificate Status Protocol 확인을 수행해요. 실시간 폐지 확인을 하며, OCSP 응답을 B-LT 서명에 포함시켜 응답기가 나중에 오프라인이 되어도 문서를 계속 검증할 수 있어요.
TsgcX509Certificate는 온라인 디코더가 표시하는 모든 필드를 노출해요: 키 크기, 알고리즘 이름, 일련번호(콜론 및 십진수), RFC 2253 / LDAP 고유 이름, 인증서 정책, 키 식별자, SHA-1 / SHA-256 / MD5 지문, SubjectPublicKeyInfo SHA-256 핀이에요. 발급자 서명을 암호학적으로 검증하고(RSA 및 ECDSA), AIA caIssuers URL에서 CA를 확인하며, CheckCertificateAuto를 통해 자동 OCSP 확인을 실행해요.
일관된 XML 서명 처리를 위한 Inclusive C14N(xml-c14n11)과 Exclusive C14N(xml-exc-c14n)을 지원해요. 각 국가 프로파일은 해당 규제 기관이 요구하는 정규화 방식을 선택해요.
Windows에서는 Windows CNG / BCrypt 암호화를, Linux64, macOS, iOS, Android에서는 순수 Pascal 엔진을 사용해요. OpenSSL DLL이 필요 없어요. 암호화된 PKCS#8 PEM을 위해 PBES2 / PBKDF2 / AES-CBC를 네이티브로 지원해요. 네트워크 작업은 Windows에서 WinHTTP를, 그 외 플랫폼에서는 Delphi RTL HTTP 클라이언트를 사용해요.
Delphi 7부터 RAD Studio 13까지 모든 Delphi 컴파일러와 C++Builder를 지원해요. 최신 유닛은 구형 호환을 위해 보호돼 있어요(예: TsgcASiCContainer는 D2010 이상의 제네릭이 필요하며, D7에서는 빈 유닛으로 문제없이 컴파일돼요).
대응하는 C# 포트가 .NET Framework 2.0–4.8, .NET Core, .NET 5–10, .NET Standard를 지원해요. Tsgc* 클래스 이름과 API 구성이 Delphi 라이브러리와 같아요.
모든 라이선스에 전체 소스가 포함돼요. 직접 살펴보고, 맞춤 설정하고, 감사하고, 확장할 수 있어요. 컴포넌트 클래스 이름은 디자인 타임 IDE 통합을 위해 등록돼 있어요.
모든 X.509 / CRL / OCSP / TSA 타임스탬프는 RFC 5280, RFC 3161, RFC 6960에 맞춰 UTC TDateTime 값으로 저장돼요. 현지 시간 변환은 각 컴포넌트의 *Local 속성으로 할 수 있어요.
바이너리를 무료로 재배포할 수 있어요. 문서당 요금이나 배포당 라이선스 없이 원하는 만큼 문서에 서명할 수 있어요.
spFatturaPA, 폴란드는 spKSeF로 전환하세요
// Sign Spanish VeriFactu invoice
var
vKeyProvider: TsgcPFXKeyProvider;
vSigner: TsgcDocumentSigner;
begin
vKeyProvider := TsgcPFXKeyProvider.Create(nil);
try
vKeyProvider.FileName := 'certificate.pfx';
vKeyProvider.Password := 'secret';
vKeyProvider.LoadFromFile;
vSigner := TsgcDocumentSigner.Create(nil);
try
vSigner.KeyProvider := vKeyProvider;
vSigner.Profile := spVeriFactu;
memoSigned.Text := vSigner.SignXML(memoXML.Text);
finally
vSigner.Free;
end;
finally
vKeyProvider.Free;
end;
end;
// Authenticode-sign with Azure Trusted Signing
var
vKeyProvider: TsgcAzureTrustedSigningProvider;
vSigner: TsgcAuthenticodeSigner;
begin
vKeyProvider := TsgcAzureTrustedSigningProvider.Create(nil);
vSigner := TsgcAuthenticodeSigner.Create(nil);
try
vKeyProvider.TenantId := '00000000-0000-0000-0000-000000000000';
vKeyProvider.ClientId := '11111111-1111-1111-1111-111111111111';
vKeyProvider.ClientSecret := 'my-client-secret';
vKeyProvider.AccountName := 'my-trusted-signing-account';
vKeyProvider.CertificateProfileName := 'public-trust';
vKeyProvider.Endpoint := 'https://eus.codesigning.azure.net';
vKeyProvider.Connect;
vSigner.KeyProvider := vKeyProvider;
vSigner.Level := alBES; // alT additionally requires a TSAClient
vSigner.SignFile('myapp.exe', 'myapp-signed.exe');
finally
vSigner.Free;
vKeyProvider.Free;
end;
end;
// PAdES-T with visible signature appearance
var
vKeyProvider: TsgcWindowsCertStoreProvider;
vSigner: TsgcPAdESSigner;
vTSA: TsgcTSAClient;
begin
vKeyProvider := TsgcWindowsCertStoreProvider.Create(nil);
vSigner := TsgcPAdESSigner.Create(nil);
vTSA := TsgcTSAClient.Create(nil);
try
vKeyProvider.StoreName := 'MY';
vKeyProvider.StoreLocation := cslCurrentUser;
vKeyProvider.SelectCertificateBySubject('Acme Corp');
vTSA.URL := 'https://freetsa.org/tsr';
vSigner.KeyProvider := vKeyProvider;
vSigner.TSAClient := vTSA;
vSigner.Reason := 'Approved';
vSigner.Location := 'Madrid, Spain';
vSigner.VisibleSignature.Enabled := True;
vSigner.SignPDFFile('contract.pdf', 'contract-signed.pdf');
finally
vTSA.Free;
vSigner.Free;
vKeyProvider.Free;
end;
end;
sgcSign Server의 보안, 서명 제어, 운영 기능이에요. 정식 버전과 체험판에는 모든 기능이 포함되며, 마지막 열은 커뮤니티 에디션에서 제공되는 내용을 보여줘요.
| 기능 | 설명 | 커뮤니티 에디션 |
|---|---|---|
| 2단계 인증 로그인 | 모든 인증 앱의 TOTP 코드와 일회용 복구 코드 10개를 제공해요. admin.require_2fa를 설정하면 모든 콘솔 사용자에게 필수가 되고, 관리자는 분실된 두 번째 인증 요소를 초기화할 수 있어요. |
예 |
| OpenID Connect 로그인 | PKCE를 사용하여 Microsoft Entra ID, Okta, Keycloak, Google 또는 표준 공급자를 통해 콘솔에 로그인해요. 사용자는 외부 ID를 자신의 계정에 연결할 수 있고, 계정 요청은 선택적으로 관리자의 승인을 기다리게 할 수 있어요. | 예 |
| 콘솔 보안 강화 | 모든 응답에 보안 헤더와 엄격한 Content Security Policy를 적용하고, 설정 가능한 비밀번호 정책, 첫 로그인 시 교체되는 임시 비밀번호, 역할이나 권한이 바뀌면 종료되는 세션을 제공해요. | 예 |
| 저장 시 암호화되는 비밀 정보 | 공급자 비밀번호, PIN, 클라우드 자격 증명, 웹훅 비밀 정보를 컴퓨터에 바인딩된 마스터 키로 AES-256-GCM 암호화하여 저장해요. --protect-secrets는 기존 설정을 그 자리에서 암호화해요. |
예 |
| 강제 승인 | 공급자별 또는 프로젝트별로 승인을 필수로 지정하며, signtool /dlib용 원시 다이제스트 서명을 포함한 모든 서명 경로에서 서버가 확인해요. 승인 한 건으로는 한 번만 서명해요. |
아니요 |
| API 키 수명 주기 | 최대 7일의 중복 기간을 두고 재생성하고, 만료일을 수정하고, 키 소유자와 키별 허용 공급자 목록을 지정하며, api_keys.self_service로 운영자가 직접 키를 관리할 수 있어요. 키는 첫 사용 시점부터 유효기간이 시작되도록 설정할 수도 있습니다. 첫 인증 호출부터 N일 동안 유효하며, 필수인 “활성화 기한” 날짜가 있어 사용하지 않은 키가 영원히 유효한 상태로 남지 않습니다. 하위 키는 상위 키가 활성화된 후에만 동작하고, 활성화는 감사 로그에 apikey.activate로 기록되며, Community 에디션은 두 값을 모두 30일로 제한합니다. |
활성 키 1개, 만료는 최대 30일 |
| PKCS#11 PIN 재시도 보호 | 잘못된 PIN이 max_pin_attempts회에 이르면 토큰 로그인을 중단하고, allow_final_pin_try를 설정하지 않으면 마지막 시도를 사용하지 않으므로 잘못된 PIN이 하드웨어 토큰을 잠그지 않아요. |
아니요(PKCS#11 공급자 없음) |
| 기본 타임스탬프 서버 | 서버 전체의 RFC 3161 타임스탬프 서버 목록을 순서대로 시도하고 자동으로 대체하며, 공급자별 tsa_urls와 한 요청에서 타임스탬프를 건너뛰는 no_timestamp를 제공해요. |
예 |
sgcsign timestamp |
이미 Authenticode로 서명된 파일에 RFC 3161 타임스탬프를 추가하며, 각 --tsa 서버를 차례로 시도해요. |
예 |
--page-hashes |
Authenticode: 이미지의 4KB 페이지마다 해시를 하나씩 추가해요. signtool sign /ph에 해당하며, 메모리 무결성(HVCI)을 쓰는 커널 모드 드라이버에서 사용해요. |
예 |
| 암호화된 예약 백업 | 설정, 데이터베이스, 마스터 키, 키 및 인증서 파일을 담은 AES-256-GCM 아카이브 하나를 일정에 따라 또는 콘솔에서 만들어요. --archive restore로 복원하거나 서버를 새 컴퓨터로 옮길 수 있어요. |
예 |
| 인증서 만료 모니터링 | 서명 인증서와 TLS 인증서를 매일 확인하고, 만료 30일, 14일, 7일, 1일 전에 대시보드, cert.expiring 웹훅, 이메일, Prometheus 메트릭으로 경고해요. |
대시보드와 이메일만 제공 |
| 이메일 알림 | 계정 잠금, 2단계 인증 및 비밀번호 변경, 백업 실패, 인증서 만료에 대해 STARTTLS 또는 암시적 TLS를 사용하는 SMTP로 이메일을 보내요. Windows에서는 OpenSSL 라이브러리가 필요하지 않아요. | 예 |
| Windows 설치 프로그램 | sgcSignServer_Setup.exe는 Windows 서비스를 설치하고, 첫 번째 관리자를 만들고, 방화벽 포트를 열고, 자체 서명 인증서 또는 기존 PFX 파일로 TLS를 설정해요. |
아니요, 커뮤니티는 zip에서 start.bat으로 실행해요(일반 HTTP) |
| CLI 저장 프로필 | sgcsign config는 설정을 이름이 있는 프로필에 보관하고 sgcsign auth set-key는 API 키를 저장하며, Delphi CLI와 .NET 도구 esegece.sgcsign.cli에서 모두 사용할 수 있어요. |
예 |