인증서의 배경
디지털 서명으로 내용 변경과 위장 행위를 검출하고, 부인을 방지할 수 있다. 디지털 서명은 매우 중요한 인증 기술이다. 그러나 서명을 검증하기 위해서는 송신자의 공개 키가 진짜라는 것이 전제가 되어야 한다. 즉 바른 공개키를 입수하기 디지털 서명을 한 공개 키가 인증서이다
인증서란?
자동차를 운전하기 위해서는 운전 면허증이 필요하다. 공개 키 인증서(PKC:public-key certificate)도 운전 면허증과 아주 비슷하다. 공개 키 인증서에는 이름이나 소속, 메일 주소 등의 개인 정보와 그 사람의 공개 키가 기재되고, 인증기관(CA: certification authority, certifying authority)의 개인 키로 디지털 서명이 되어 있다. 공개 키 인증서를 보면 인증기관이 이 공개 키는 확실히 이 사람의 것이다 라고 인정했다는 것을 알 수 있다. 공개 키 인증서는 간단히 인증서(certificate)라고도 부른다.
* 인증기관이란? 확실히 이 공개키는 이 사람의 것이다라고 인정하고, 디지털 서명을 할 수 있는 사람이나 기관을 말한다.
인증서 활용 시나리오
앨리스가 밥에게 암호문을 보내는 과정 인증기관:트렌트
1)밥이 키 쌍을 생성한다. (인증기관 혹은 등록기관 RA)에 의뢰하는 경우도 있다. 2)밥은 인증기관 트렌트에 자신의 공개 키를 등록한다. (인증기관 트렌트로부터 디지털 서명을 받기 위해서(즉 인증서를 생성받기 위해서) 3)인증기관 트렌트는 밥의 공개 키에 자신의 개인 키로 디지털 서명을 해서 인증서를 생성한다. 4)앨리스는 인증기관 트렌트의 디지털 서명이 되어 있는 밥의 공개 키(인증서)를 입수한다. 5)앨리스는 인증기관 트렌트의 공개 키를 사용해서 디지털 서명을 검증하고, 밥의 공개 키가 맞다는 것을 확인한다. 6)앨리스는 밥의 공개 키로 메시지를 암호화해서 밥에게 송신한다. 7)밥은 암호문을 자신의 개인 키로 복호화해서 앨리스의 메시지를 읽는다. |
공인 인증서 종류
-범용 공인 인증서
-용도 제한 공인 인증서 ex) 은행
인증서 표준 규격
ITU나 ISO에서 규정한 X.509라는 규격이다
항목명 |
데이터형 |
내용 |
||
서명전 인증서 tbsCertificate |
version |
Integer |
인증서의 형식 버전, 현재는 v3(2)가 사용된다 |
|
serialNumber |
Integer |
인증서의 시리얼번호(CA가 정한다) |
||
서명 SIGNATURE |
Algorithm Identifier |
발행자가 사용한 서명알고리즘(해쉬는 SHA1 공개키 암호는 RSA 등) |
||
발행자 issuer |
Name |
발행자(CA)의 이름 |
||
유효기간 Validity |
개시 notBefore |
Time |
인증서 유효기간(GMT로 기재되어 잇다. 연 월 일 시 분 초 단위의 개시, 종료시각) |
|
종료 notAfter |
Time |
|||
Subject |
name |
소유자의 이름 |
||
공개키 정보 subjectPublic Key info |
Algorithm |
Algorithm Identifier |
소유자의 공개키로 이용할 수 있는 알고리즘 |
|
공개키 Subject Publickey |
Bit String |
소유자의 공개키 |
||
발행자 ID issuerUniqueIdentifier |
UniqueIdentifier |
버전2와 3의 확장 항목 |
||
소유자 ID subjectUniqueIdentifier |
UniqueIdentifier |
|
||
Extensions |
Extensions |
버전3의 확장 항목 |
||
서명 알고리즘 signatureAlgorithm |
Algorithm Identifier |
상기 서명 알고리즘과 같다 |
||
서명 signature |
Bit string |
발행자의 서명 |
-버전(version)은 인증서의 형식 버전이다. 인증서를 이용하는 응용프로그램의 사용 정보이다. 현재는 v3가 사용되고 있다. v3 값은 정수 2이다. 3이 아닌 것에 주의할 필요가 있다.
-시리얼 번호(serial number)는 사용자가 인증서를 구별하기 위한 번호이다. 인증기관 내에서 일관되고 붙는다. 인증기관이 결정한다. *CRL에서는 이 번호로 폐지한 인증서를 구별한다.
-다음의 서명 알고리즘은(signature) 인증기관이 사용한 서명 알고리즘이다.
-발행자(issuer)는 이 인증서를 발행한 인증기관의 이름이다. Name(DN) 형식으로 기술된다. 사용자는 이 발행자와 시리얼 번호로 인증서를 구별한다.
-인증서의 유효기간(validity)은 GMT에 기술되어 있다. 유효기한의 개시시각, 종료시각이 연 월 일 시 분 초 단위로 되어 있다. TIME형식이 쓰인다. TIME형식에는 utc Time과 GeneralizedTime의 선택지가 있다. 사용자는 이 유효기한으로 인증서의 유효성을 판단한다.
*인증서 폐지와 CRL?
이용자가 개인 키를 분실 혹은 도난 당했거나 퇴직이나 이름이 바뀐 경우에 인증서를 폐지(revoke)해야 할 경우가 있다. 종이 인증서의 경우 찢어서 폐지할 수 있지만 디지털 데이터인 인증서는 복사본이 남아있을 수도 있기 때문에 삭제가 어렵다.
인증서를 폐지할 경우 인증기관은 인증서 폐지 목록(CRL:certificate revocation list)을 작성한다. 인증서 폐지 목록을 CRL이라고 부른다.
CRL은 폐지된 인증서의 일련번호의 목록에 대해 인증기관이 디지털 서명을 붙인 것이다.
-서브젝트(subject)는 이 인증서의 소유자의 이름이다. *Name(DN) 형식으로 기술된다. 사용자는 이 서브젝트를 이용해서 인증서의 소유자를 식별한다.
-서브젝트 공개키 정보(subject public key info)는 소유자의 공개키로 이용할 수 있는 알고리즘 이름이다. 소유자의 공개키가 RSA 알고리즘용의 공개키인 경우, 알고리즘 이름은 RSAEncryption이 된다. 알고리즘 이름의 기술에는 Algorithm형이 사용된다.
-서브젝트 공개키(subject public key)는 소유자의 공개키이다. 사용자는 이 서브젝트 공개키 정보와 공개키를 이용해서 데이터의 암호화와 전자서명의 검증을 실행한다.
-발행자 id와 서브젝트 id는 발행자와 소유자의 명칭을 재사용한 경우에 발행자, 소유자를 구별하기 위해 이용한다. 생략 가능하며, 지정하지 않게 추천되어 있다.
-익스텐션은 X.509버전 2와 3에서 추가된 항목이다. 생략 가능하다.
-서명 알고리즘은 앞에서 설명한 서명 알고리즘 항목과 같이 다음의 서명 항목을 작성 검증하기 위한 알고리즘 이름이다.
-서명은 이 인증서에 대한 인증기관의 서명이다. 사용자는 서명 알고리즘으로 이 서명을 검증한다. 이 때문에 인증서 속에 소유자의 이름, 유효기한, 공개키 등을 바꿔 사용해도 전자서명의 검증(verify)에 의해 위조가 감지 된다.
*DN과 General Name
DN은 본인명과 발생자명의 계층적 표현
인증서의 본인명(subject), 발행자명 (issuer)에는 Distinguished Name (DN)이라고 불리는 계층적인 표현이 이용되고 있다.
C= (Country name: 나라)
O= (organization: 회사, 조직, 기관)
OU= (organizational unit: 부서)
CN= (common name: 이름)
개인 공인 인증서 예
필드 |
값 |
버전 |
V3 |
일련 번호 |
03 5a 89 ef |
서명 알고리즘 |
Sha256RSA |
서명 해시 알고리즘 |
Sha256 |
발급자 |
CN = signGATE CA4 OU = AccreditedCA 0 = KISA C = KR |
유효 기간(시작) |
2016년 12월 28일 수요일 오후 8:26:15 |
주체 |
CN = 홍길동 OU = 중앙우체국 OU = 우체국 OU = 등록기관 OU = licensedCA OC = KICA C = KR |
공개 키 |
30 82 01 0a 02 82 01 01 00 c2 2d 87 01 d0 3b 50 o7 a3 ea 72 64 f3 a5 cf …. |
기관 키 식별자 |
KeyID=ae 52 fd 0e 01 f8 30 86 37 7e f6 18 c6 49 25 4a 60 09 70 Certificate Issuer: 디렉토리 주소: CN=KISA RootCA 4 OU=Korea Certification Authority Central O=KISA C=KR Certificate SerialNumber=10 0a |
주체 키 식별자 |
67 10 1f 3d 04 47 97 c7 79 22 a2 6 4e a4 77 af 78 04 ad 0d |
인증서 정책 |
[1]Certificate Policy: Policy Identifier=1.2.410.200004.5.2.1.7.1 |
주체 대체 이름 |
Other Name: 1.2.410.200004.10.1.1=30 4e 0c 09 ec a0 84 ed 83 9c ec 9d bc 30 41 30 …
|
CRL 배포 지점 |
[1]CRL Distribution Point Distribution Point Name: Full Name: URL=ldap://ldap.signgate.com:389/ ou=dp…,ou=… o=KICA, c=KR |
기관 정보 액세스 |
[1]Authority Info Access Access Method=온라인 인증서 상태 프로토콜 (1.3.6.1.5.5.7.48.1) Althernative Name: |
키 사용 |
Key Encipherment (20) |
지문 알고리즘 |
Sha1 |
지문 |
D3 1f 49 f5 73 28 16 ee e3 3d bd 90 f6 ee 75 96 94 24 f2 e6 |
인증기관이 인증서를 이용하여 공개키를 바르다라고 판단해줄 수 있는데….
그런데 인증기관의 공개 키는 어떻게 하면 바르다 라고 판단할 수 있을까?
인증기관의 공개 키에 대해 다른 인증기관이 디지털 서명을 하는 것으로 인증기관의 공개 키를 검증할 수 있다. 즉 인증기관의 공개 키 인증서를 생성하는 것이다.
예를 들어
논산 지점 인증 기관 -> 충남 지사 인증 기관 -> 서울 본사 인증기관
충남 지점 인증기관의 공개 키에 대해서는 서울 본사 인증기관이 인증서를 발행한다.
그런데 서울 본사 인증기관에 대해서는 누가 인증서를 발행 할 수 있나?
서울 본사 인증기관을 최상위 인증기관이라고 정했을 때, 이 인증기관을 일반적으로 루트 CA라고 부르고 서울 본사 인증기관에 대해서는 서울 본사 인증기관이 인증서를 발행한다. 즉 자기 자신의 공개 키에 대해서 자신의 개인 키로 서명하는 디지털 서명을 셀프 서명(self-signature)이라고 한다.
우리나라의 공인 인증기관?
상위 인증기관이 한국인터넷진흥원(KISA)가 있고 그 밖에 한국정보인증㈜, ㈜코스콤, 금융결제원, 한국전자인증㈜, 한국무역정보통신등이 있다.
-출처: PKI, 암호 교육자료
-출처: 알기쉬운 정보보호개론 저자: 히로시 유키
-출처: PKI 저자:전문석
인증서만 해도 너무 양이 많다.. PKI는 나중에 정리해서 올려야지..
'Security' 카테고리의 다른 글
FIDO (0) | 2020.08.06 |
---|---|
CA (0) | 2020.07.10 |
Encrypt virtual disk(가상 디스크 암호화) (0) | 2019.09.18 |
전자서명 (Digital signature) (2) | 2019.07.12 |
security knowledge (보안 상식) (0) | 2019.02.27 |
댓글