요즘 저는 사설인증서 개발 프로젝트에 참여중입니다.
'PKI', '비밀키', '공개키', 'RSA', 'HASH' 등 정보처리기사 자격증 시험 준비할때나 암기용으로 만나던 개념과 단어들에 빠져 있습니다.
재밌기도 하고 어렵기도 하고, 예전에 갸우뚱 하던 것들을 그때 조금 더 깊이 알아둘 걸 하는 후회와 함께 하고 있습니다.
공동인증서(공인인증서라 불리던)는 그냥 사용만 했지 실제 모습에 관심을 가질 일은 별로 없을텐데 이 글에서 그 구성을 자세히 살펴보겠습니다.
인증서는 간단히 말하면 나의 공개키를 인증기관의 개인키로 서명한 파일입니다.
인증서를 이용하는 순서는 아래와 같습니다.
이체와 같은 업무처리를 위해 금융기관이 인증서를 요청하면
1. 내 로컬에 있는 인증서를 호출하고,
2. 인증서를 선택하면 입력하는 비밀번호 또는 지문, 핀번호는 나의 개인키를 사용하기 위한 잠금을 푸는 것이고,
3. 인증서와 서명할 문서(또는 값 또는 파일)에 개인키로 서명을 한 후
4. 인증서와 서명된 문서를 금융기관에 전달하고,
5. 금융기관은 인증서를 인증기관에 전달하고,
6. 인증기관은 등록되어 있는 내 공개키로 인증서를 확인하고, 정상여부를 금융기관에 전달합니다.
7. 금융기관은 정상이라는 응답이 오면 서명을 정상적인 서명으로 인정하고 업무처리를 하게 됩니다.
아래 인증서는 금융결제원 기준이고, 금융결제원 인증서라 하더라도 금융기관별로 조금씩 또 내용이 다를 수 있습니다.
한가지 언급할 사항은 인증서는 기본구조는 동일하지만, 인증기관별로 내용의 형식이나 사용하는 값이 조금씩 다르다는 겁니다.
인터넷뱅킹 공동인증서를 사용하고자 할때 나타나는 화면입니다.
하단의 "인증서 보기"를 누르면 다음 화면이 나타납니다.
인증서 정보가 간단히 나타납니다. 하나씩 살펴보겠습니다.
① crl is not found : crl은 certification revocation list 의 약자입니다. 우리말로 하면 인증서폐기목록인데요, 인증서를 부를 때마다 내가 가지고 있는 인증서가 유효한 인증서인지 체크를 합니다. 폐기목록에 없으니 이 인증서는 유효하다는 메시지 입니다.
② 발급대상 : 직관적으로 알수 있듯이 인증서 주인을 의미하는데, 저의 이름과 함께 알수없는 숫자가 보입니다.
③ 발급자 : 인증서를 발행한 기관입니다. yessign은 금융결제원이고, CA는 Certificate Authority의 약자로 인증서 발행기관을 의미합니다.
④ 구분 : 인증서 유형과 인증서 발급을 대행한 기관입니다. 인증서 발급은 CA가 하는 게 맞지만, 모든 사람들의 인증서를 발급하기엔 CA가 힘에 부치므로 중간자를 놓는데 그게 은행이나 증권사와 같은 RA(등록기관)를 둡니다. RA는 Registration Authority의 약자 입니다.
⑤ 유효기간 : 인증서 유효기간입니다.
⑥ PC Time : 현재 시점의 사용자 컴퓨터 시간이네요.
자세히 탭을 누르면 다음과 같이 상세정보가 나옵니다.
각 항목별로 최대한 직관적인 의미만 적겠습니다. 너무나 많은 정보가 함축되어 있고, 정확하게 모든 항목을 이해하려면 PKI라는 개념의 이해가 필요하기 때문입니다.
① 버전 3 : X.509라는 표준규격이 있습니다. 표준규격이라는 건 어떤 항목과 어떤 형태의 값으로 인증서 정보를 구성한다는 것을 정의해 놓은 정보라고 생각하면 됩니다. 아래의 정보들이 바로 X.509 표준규격에 따라 작성된 내용이고, 이 규격도 개선/개정이 되면서 버전을 갖습니다.
② 일련번호 746420322 (0x2C7D7862) : 인증서의 일련번호입니다.
③ 서명 알고리즘 SHA256 + RSA : SHA256이나 RSA는 암호화 방식 중 하나입니다. 앞의 것은 키서명에 사용되고, 뒤의 것은 HASH 알고리즘입니다.
④ 발급자 cn=yessignCA Class 2,ou=AccreditedCA,o=yessign,c=kr : 인증서 발급자의 정보입니다. 즉, 금융결제원 공개키에 대한 정보입니다.
⑤ 다음부터 유효 : 유효기간 시작일, 인증서 발급일
⑥ 다음까지 유효 : 유효기간 종료일
⑦ 주체 cn=홍길동()00200412016071620*******,ou=WOORI,ou=personal4IB,o=yessign,c=kr : 인증서 소유자의 이름입니다. DN(Distinguished Name)이라는 형식으로 기술되는데, 우리가 인증서를 사용할 때 사용 대상이 되는 은행 등이 이걸 보고 인증서의 소유자를 식별합니다. cn 등 각각의 약자는 다음을 의미합니다. cn(common name), ou(organization unit), o(organiztion), c(country), ou 와 같은 값은 여러개를 사용할 수도 있고, 들어가는 내용 역시 회사별로 정할 수 있습니다. cn경우에도 '이름+전화번호HASH' 또는 '이름+고유키' 등 다양하게 구성이 가능합니다.
⑧ 공개키 알고리즘 RSA (2048 Bits) : ③과 같은 암호화 방식(알고리즘) 입니다.
⑨ 공개키 : 인증서 주인인 제 공개키입니다.
⑩ 서명 : 인증기관이 자신의 개인키로 한 서명 입니다.
⑪ CA 키 고유번호 efdc44d2c68dc00ea338c07c93c6c341bf4a8ff0 : 금융결제원 공개키의 고유번호입니다.
⑫ 인증서 정책 1.2.410.200005.1.1.4 : OID(object ID)라고 하는 값입니다. 어떤 기관이 어떤 목적으로 어떤 대상에게 발급되었는지 정의가 되어 있고, 인증서 고유의 식별자입니다.
⑬ 키사용 digitalSignature,nonRepudiation : 전자서명과 부인방지용으로 키를 사용한다는 의미입니다.
⑭ 기본규제
⑮ 주체 대체 이름 ON=VID=304e0c09ec9ca4ed9895ec9dbc3041303f060a2a831a8c9a440a0101013031300b0609608648016503040201a02204203193cdc5eb2f6e5f4b3010ca025b716772c8a3f2801f56380198bcf3ea4cdc32 : 확장필드입니다. 확장필드는 기본적으로 필요한 정보외에 금융기관이나 인증서 발급주체가 필요에 의해 정보를 사용하기 위한 용도로 사용됩니다. 사용하지 않을 수도 있구요.
⑯ CRL 분배점 URL=ldap://ds.yessign.or.kr:389/ou=dp5p87805,ou=AccreditedCA,o=yessign,c=kr?certificateRevocationList
: Certificate Revocation List를 확인할 수 있는 곳입니다.
⑰ 사용자 알림 이 인증서는 금융결제원에서 발급한 인증서입니다
⑱ CPS http://www.yessign.or.kr/cps.htm
: 인증서의 개요부터 개인정보보호 기준까지 모든 정보가 담겨져 있는 인증업무준칙(Certificate Policy Statement)입니다.
⑲ 기관정보 액세스 OCSP:URL=http://ocsp.yessign.org:4612
: Online Certificate Status Protocol, CRL을 획득하지 않고도 실시간으로 인증서의 상태를 검증할 수 있도록 하는 인증서 상태 시시간 검증 프로토콜 위치입니다. CRL과 마찬가지로 인증서의 유효성을 체크하기 위한 방법입니다.
인증 관련 프로젝트를 하면서 느껴지는 건 기획자든 개발자든 현업이든 PKI를 제대로 이해하고 있는 사람은 거의 없는 것 같습니다. 그래서 프로젝트 내에 전문컨설팅사를 참여시켜 기술지원을 받고는 있습니다만, 기획/개발/현업(당연히 저를 포함해서)의 이해도가 떨어지는 건 아쉽기도 하고 어쩔 수 없는 건가...생각이 듭니다.
나름 자료를 최대한 참조하고 컨설팅사에 계시는 분들께 문의해서 작성했으나 혹시라도 이상한 내용이 보이시면 댓글 부탁드리고, 도움이 되었으면 합니다.
참고하기
https://www.tutorialspoint.com/unix_commands/genrsa.htm
https://github.com/openssl/openssl/blob/master/apps/genrsa.c
'2-minutes lecture' 카테고리의 다른 글
UX/UI의 10가지 심리학 법칙(사례분석#1-Jacob's Law) (0) | 2022.04.06 |
---|---|
안드로이드 개발 기초-#1(숭실대 DCS과정) (0) | 2022.03.22 |
싱가포르 DBS 은행 (MIT CISR 보고서 중심, 기타 자료 첨부) (0) | 2022.03.03 |
Hotjar(핫자) 티스토리에 적용하기(ft. 모든 과정화면) (1) | 2021.12.07 |
국내 오픈API 사이트 모음입니다. (2) | 2021.11.22 |