본편 스물한 편을 마치고 앞에서 만든 목록 스크립트를 한 번 더 돌렸다. 연재에서 이름만 지나간 프로그램이 네 개 남아 있었다. 코스콤의 SignKorea, 한국정보인증의 KICA, 한국전자인증의 CrossCert, 그리고 CoreB2B 의 ExEcm 이다. 넷 다 인증서·전자서명과 관련된 프로그램이고, 그중 둘은 0.0.0.0 에서 포트를 열고 있었다. 번외 편은 이 넷과, 지운 뒤에도 흔적이 남은 프로그램 하나를 차례로 본다. 첫 번째는 증권사 사이트에서 자주 만나는 SignKorea 다.
SignKoreaWD 가 SKCertService 를 띄운다
설치된 앱 목록의 이름은 "SignKorea NA Certification Toolkit(인증 프로그램)", 버전 2.5.43.302, 게시자는 코스콤이다. SignKorea 는 코스콤이 운영하는 공동인증서 발급 기관 이름이기도 하다. 증권사 홈페이지에서 인증서로 로그인하거나 주문에 서명할 때 설치를 요구받는 경우가 많다. 작업 관리자에는 두 이름이 보인다.
| 프로세스 | 시작 방식 | 메모리(작업 집합 / 개인) |
|---|---|---|
| SignKoreaWD.exe | 서비스 SignKoreaWD (자동, LocalSystem) | 10.4MB / 4.0MB |
| SKCertService.exe 2.5.43.302 | SignKoreaWD.exe 의 자식, 시작 프로그램(Run) "SKCertService Client" 에도 등록 | 16.1MB / 20.9MB |
두 파일 모두 C:\Program Files (x86)\SignKorea\skcert 에 있고 서명자는 KOSCOM CORP. 로 유효했다. 프로세스의 부모를 따라가 보면 services.exe 가 SignKoreaWD.exe 를 띄우고, SignKoreaWD.exe 가 다시 SKCertService.exe 를 띄운 구조였다. WD 는 감시(WatchDog)의 줄임말로 보인다. 실제 일을 하는 SKCertService.exe 가 죽으면 서비스가 다시 살리고, 서비스가 없을 때를 대비해 Run 키에도 같은 실행 파일을 올려 둔 모양이다. 11편 IPinside 가 서비스와 Run 키를 겹쳐 쓴 것과 같은 방식이다.
코스콤이 증권사를 통해 배포한 FAQ 문서에는 "SKCertService.exe 가 떠 있지 않으면 프로그램이 설치되지 않은 것으로 판단한다"는 취지의 안내가 있다. 사이트가 매번 설치 안내를 다시 띄운다면, 프로그램을 다시 까는 것보다 이 프로세스가 떠 있는지를 먼저 보는 것이 빠르다는 뜻이다.
127.0.0.1:14098 과 루트 인증서
SKCertService.exe 는 127.0.0.1:14098 에서 연결을 기다리고 있었다. 19편의 다른 프로그램들과 같이 자기 자신만 받는 주소다. 이 포트에 TLS 로 붙어 보니 인증서가 돌아왔다.
Subject : CN=127.0.0.1, OU=SignKorea NA, O=Personal, C=KR
Issuer : CN=Root, OU=SignKorea NA, O=Personal, C=KR
기간 : 2026-04-05 ~ 2027-04-05
발급자인 CN=Root, OU=SignKorea NA 는 컴퓨터와 현재 사용자 양쪽의 신뢰할 수 있는 루트 인증 기관에 들어 있었다. 기간은 설치한 날인 2026년 4월 5일부터 딱 1년이다. 이름이 그냥 "Root" 라서 인증서 목록을 이름순으로 훑을 때는 SignKorea 것인지 알아보기 어렵다. 조직 단위(OU) 열에 있는 "SignKorea NA" 를 봐야 한다.
18편에서 1년짜리 루트가 둘 있다고 적었는데, nProtect 의 INCA G3 와 이것이다. 설치할 때 루트와 서버 인증서를 함께 만들어 넣는 방식으로 보인다. 그렇다면 PC 마다 루트의 키가 다르다는 뜻이라, 한 PC 에서 키가 새어도 다른 PC 의 연결을 흉내 낼 수 없다. 1년이 지나면 어떻게 갱신되는지는 아직 기한이 오지 않아 확인하지 못했다.
폴더 안에 있던 것들
skcert 폴더에는 실행 파일 두 개 말고도 nss3.dll, softokn3.dll, freebl3.dll 같은 NSS 라이브러리가 들어 있다. nss3.dll 의 버전 정보는 "3.21 Basic ECC Beta" 였다. NSS 는 Firefox 가 쓰는 암호 라이브러리이고, 3.21 은 2015년 무렵의 버전이다. 프로그램 자체는 2025년 11월에 빌드된 파일인데 그 안의 암호 라이브러리는 그보다 훨씬 오래된 셈이다. 이 라이브러리를 어떤 기능에 쓰는지는 파일만 봐서는 알 수 없었다.
SantiagoSecurityService.dll 과 SantiagoWireInitializer.exe 라는 이름도 있고, C:\ProgramData\SignKorea\santiago 폴더와 %USERPROFILE%\AppData\LocalLow\SignKorea 아래의 SKCert, SKCertSecurityService, SantiaoToken 폴더도 있었다. 17편에서 본 NPKI 폴더와는 별개로, 프로그램이 설정과 상태를 두는 곳으로 보인다. 공동인증서 파일 자체는 여전히 NPKI 폴더에 있다.
보안 이력도 하나 짚어 둔다. 미국 NVD 에는 SKCertService 2.5.5 이하 버전에서 DLL 을 불러오는 방식 때문에 원격 코드 실행이 가능하다는 취약점(CVE-2018-5202)이 올라 있다. 이 PC 의 버전은 2.5.43 이라 그 범위는 벗어나 있다. 오래전에 깔고 손대지 않은 PC 라면 버전부터 확인해 볼 일이다.
지우는 방법
증권사나 SignKorea 인증서를 쓰는 사이트를 PC 로 쓰지 않는다면 지워도 된다. 설정 → 앱 → 설치된 앱에서 "SignKorea NA Certification Toolkit" 을 제거한다. 등록된 제거 명령은 다음과 같다.
C:\Program Files (x86)\SignKorea\SetupPkg.exe -us
제거 뒤에는 서비스 SignKoreaWD 와 시작 프로그램의 "SKCertService Client" 가 사라졌는지 보고, certlm.msc 에서 OU 가 "SignKorea NA" 인 Root 인증서가 남지 않았는지 확인한다. 이름이 "Root" 뿐이니 같은 이름의 다른 인증서를 지우지 않도록 조직 단위를 꼭 본다. ProgramData 와 LocalLow 의 SignKorea 폴더는 재부팅한 뒤 지운다. 이 폴더들을 지워도 NPKI 폴더의 인증서는 그대로다.
다음 편은 같은 공동인증서 프로그램이지만 이름이 셋으로 나뉘어 있는 한국정보인증의 KICA 다. 서비스 이름은 KicaPMSvc, 프로세스는 kpmcnt.exe, 설치된 앱 이름은 SecuKit NXS 다.