새 노트북으로 옮기면서 문서와 사진은 다 챙겼는데, 은행 사이트에 들어가니 인증서가 하나도 없다고 나온다. 흔한 일이다. 인증서는 바탕 화면도, 문서 폴더도 아닌 곳에 들어 있다. 이 연재에서 지금까지 본 Delfino, MagicLine4NX, AnySign4PC, INISAFE CrossWeb EX 같은 프로그램은 모두 인증서를 "다루는" 프로그램이다. 정작 인증서는 그 프로그램들 밖, NPKI 라는 이름의 폴더에 파일로 들어 있다. 프로그램을 지워도 인증서가 남고, 프로그램을 새로 깔아도 인증서가 따라오지 않는 이유다.
NPKI 폴더는 어디에 있나
인증서를 받을 때 저장 위치로 "하드디스크"를 고르면 Windows 에서는 다음 경로에 들어간다.
%USERPROFILE%\AppData\LocalLow\NPKI
AppData 는 숨김 폴더라서 탐색기 기본 설정으로는 보이지 않는다. 주소창에 위 경로를 그대로 붙여 넣으면 바로 열린다. 문서 폴더 백업만 하는 습관이라면 이 폴더는 빠지기 쉽다.
Local 도 Roaming 도 아닌 LocalLow 라는 점이 특이하다. LocalLow 는 낮은 무결성 수준으로 실행되는 프로그램도 쓸 수 있는 폴더다. 예전 인터넷 익스플로러의 보호 모드에서 돌던 ActiveX 인증서 모듈이 쓸 수 있는 곳이 여기였기 때문에 이 위치가 굳어진 것으로 알려져 있다. 그보다 더 예전, Windows XP 시절에는 C:\Program Files\NPKI 를 썼다.
"이동식 디스크"를 고르면 USB 메모리의 맨 위에 NPKI 폴더가 만들어진다. 예를 들어 E:\NPKI 다. 인증서 프로그램들은 연결된 드라이브마다 맨 위의 NPKI 폴더를 찾아보는 방식이라, 하위 폴더 안에 넣어 두면 찾지 못한다.
내 PC 에서는 이렇게 있는지만 확인했다.
Test-Path "$env:USERPROFILE\AppData\LocalLow\NPKI"
Test-Path 'C:\Program Files\NPKI'
Test-Path 'C:\Program Files (x86)\NPKI'
세 곳 모두 True 였다. LocalLow 쪽이 실제 인증서가 있는 곳이고, Program Files 아래의 두 폴더는 그동안 깔린 인증서 프로그램들이 옛 위치를 위해 만들어 둔 것으로 보인다. 안을 열어 목록을 찍지는 않았다. 이유는 바로 아래에 있다.
폴더 안의 구조
NPKI 폴더 안은 인증서를 발급한 기관별로 나뉜다. 대표적인 기관 폴더는 이렇다.
| 폴더 이름 | 발급 기관 |
|---|---|
| yessign | 금융결제원 |
| SignKorea | 코스콤 |
| KICA | 한국정보인증 |
| CrossCert | 한국전자인증 |
| TradeSign | 한국무역정보통신 |
은행에서 받은 인증서는 대부분 yessign 아래에 있다. 기관 폴더 안에는 USER 폴더가 있고, 그 안에 인증서 한 장마다 폴더가 하나씩 생긴다. 이 인증서 폴더의 이름이 인증서의 주체(DN)를 그대로 옮긴 긴 문자열인데, 여기에 사용자 이름이 들어 있다. 그래서 NPKI 폴더를 연 탐색기 화면이나 dir 결과를 그대로 캡처해 질문 게시판에 올리면 이름과 발급 기관, 인증서 종류가 같이 공개된다. 내가 이 PC 의 목록을 싣지 않은 이유다.
인증서 폴더 하나에는 보통 파일 두 개가 들어 있다.
signCert.der는 인증서 자체다. 이름, 발급 기관, 유효 기간, 공개 키가 들어 있고, 원래 상대에게 보여 주는 용도의 공개 정보다.signPri.key는 서명에 쓰는 개인 키다. 인증서 비밀번호로 암호화되어 저장된다.
용도에 따라 kmCert.der, kmPri.key 가 함께 들어 있는 경우도 있다. 서명용과 따로 두는 암호화용 키로 알려져 있다.
중요한 것은 두 파일이 한 쌍이라는 점이다. 둘 다 있고 비밀번호를 알면 어느 PC 에서든 그 사람으로 서명할 수 있다. 그래서 공동인증서를 노리는 악성코드는 이 NPKI 폴더를 통째로 빼 가고, 비밀번호는 키보드 입력을 엿보거나 따로 알아내려 하는 것으로 알려져 있다. 9편의 키보드 보안 프로그램이 지키려는 것이 바로 이 비밀번호다. 반대로 폴더가 빠져나가지 않게 하는 확실한 방법은 하드디스크 대신 이동식 디스크에 두고 쓸 때만 꽂는 것이다.
참고로 2020년 12월 전자서명법 개정 뒤 금융결제원이 내놓은 "금융인증서"는 이 폴더를 쓰지 않는다. 인증서가 금융결제원 쪽 저장소에 보관되는 방식이라 NPKI 폴더를 뒤져도 나오지 않는다. 같은 은행 인증서라도 공동인증서인지 금융인증서인지에 따라 옮기는 방법이 다르다.
옮기기와 백업
새 PC 로 옮기는 가장 단순한 방법은 NPKI 폴더를 통째로 복사하는 것이다. 예전 PC 의 %USERPROFILE%\AppData\LocalLow\NPKI 를 USB 메모리 맨 위에 복사하고, 새 PC 에서 같은 경로에 붙여 넣는다. 이때 기관 폴더 → USER → 인증서 폴더의 구조를 그대로 유지해야 한다. 파일 두 개만 꺼내 아무 데나 두면 프로그램이 찾지 못한다. USB 메모리 맨 위에 복사해 둔 그 상태가 곧 "이동식 디스크에 저장된 인증서"이기도 해서, 새 PC 에 옮기지 않고 USB 째로 써도 된다.
은행 인증센터의 "인증서 복사" 메뉴를 써도 된다. PC 와 스마트폰 사이에 옮기는 기능도 대부분 여기 있다. 사이트가 요구하는 인증서 프로그램이 이 작업 중에 깔릴 수 있다.
백업할 때 주의할 점은 하나다. 클라우드 동기화 폴더나 메일에 두지 않는다. signPri.key 가 비밀번호로 암호화되어 있다고는 해도, 파일이 빠져나가면 남은 방어선은 비밀번호 하나뿐이다. 백업은 평소에 꽂아 두지 않는 USB 메모리 정도가 적당하다.
지우기
공동인증서의 유효 기간은 보통 1년이다. 갱신할 때마다 새 인증서 폴더가 생기고, 만료된 것이 그대로 남는다. 인증서 선택 창에 같은 이름이 여러 줄 뜨는 이유가 이것이다.
지우는 방법은 두 가지다. 은행 인증센터의 인증서 관리 메뉴에서 만료된 인증서를 골라 삭제하거나, NPKI 폴더에서 해당 인증서 폴더를 지운다. 폴더를 직접 지울 때는 인증서 폴더 하나만 지우고 기관 폴더나 USER 폴더는 남겨 둔다. 어느 폴더가 만료된 것인지 헷갈리면 인증서 선택 창에서 만료일을 먼저 확인하는 편이 안전하다. 직접 지운 폴더는 휴지통에 들어가니, 다른 사람과 같이 쓰는 PC 라면 휴지통도 비운다.
PC 를 남에게 넘기거나 처분할 때는 반대로 NPKI 폴더 전체를 지워야 한다. 앞에서 본 것처럼 인증서 프로그램을 제거해도 이 폴더는 지워지지 않는다. 16편의 INISAFE 든 다른 프로그램이든 마찬가지다.
다음 편은 인증서 이야기를 이어서, 이번에는 개인 인증서가 아니라 보안 프로그램들이 PC 의 신뢰 목록에 넣어 둔 루트 인증서들을 한 표에 모아 본다.