본문 바로가기
Security

Certificate(인증서)

by 개폰지밥 2019. 10. 2.
반응형

인증서의 배경

디지털 서명으로 내용 변경과 위장 행위를 검출하고, 부인을 방지할 수 있다. 디지털 서명은 매우 중요한 인증 기술이다. 그러나 서명을 검증하기 위해서는 송신자의 공개 키가 진짜라는 것이 전제가 되어야 한다. 즉 바른 공개키를 입수하기 디지털 서명을 한 공개 키가 인증서이다

인증서란?

자동차를 운전하기 위해서는 운전 면허증이 필요하다. 공개 키 인증서(PKC:public-key certificate)운전 면허증과 아주 비슷하다. 공개 키 인증서에는 이름이나 소속, 메일 주소 등의 개인 정보와 그 사람의 공개 키가 기재되고, 인증기관(CA: certification authority, certifying authority)의 개인 키로 디지털 서명이 되어 있다. 공개 키 인증서를 보면 인증기관이 이 공개 키는 확실히 이 사람의 것이다 라고 인정했다는 것을 알 수 있다. 공개 키 인증서는 간단히 인증서(certificate)라고도 부른다.

* 인증기관이란? 확실히 이 공개키는 이 사람의 것이다라고 인정하고, 디지털 서명을 할 수 있는 사람이나 기관을 말한다.

인증서 활용 시나리오

앨리스가 밥에게 암호문을 보내는 과정 인증기관:트렌트

1)밥이 키 쌍을 생성한다. (인증기관 혹은 등록기관 RA)에 의뢰하는 경우도 있다.

2)밥은 인증기관 트렌트에 자신의 공개 키를 등록한다. (인증기관 트렌트로부터 디지털 서명을 받기 위해서(즉 인증서를 생성받기 위해서)

3)인증기관 트렌트는 밥의 공개 키에 자신의 개인 키로 디지털 서명을 해서 인증서를 생성한다.

4)앨리스는 인증기관 트렌트의 디지털 서명이 되어 있는 밥의 공개 키(인증서)를 입수한다.

5)앨리스는 인증기관 트렌트의 공개 키를 사용해서 디지털 서명을 검증하고, 밥의 공개 키가 맞다는 것을 확인한다.

6)앨리스는 밥의 공개 키로 메시지를 암호화해서 밥에게 송신한다.

7)밥은 암호문을 자신의 개인 키로 복호화해서 앨리스의 메시지를 읽는다.

공인 인증서 종류

-범용 공인 인증서

-용도 제한 공인 인증서 ex) 은행

인증서 표준 규격

ITUISO에서 규정한 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

버전23의 확장 항목

소유자 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 TimeGeneralizedTime의 선택지가 있다. 사용자는 이 유효기한으로 인증서의 유효성을 판단한다.

*인증서 폐지와 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버전 23에서 추가된 항목이다. 생략 가능하다.

-서명 알고리즘은 앞에서 설명한 서명 알고리즘 항목과 같이 다음의 서명 항목을 작성 검증하기 위한 알고리즘 이름이다.

-서명은 이 인증서에 대한 인증기관의 서명이다. 사용자는 서명 알고리즘으로 이 서명을 검증한다. 이 때문에 인증서 속에 소유자의 이름, 유효기한, 공개키 등을 바꿔 사용해도 전자서명의 검증(verify)에 의해 위조가 감지 된다.

*DNGeneral 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

기간(시작)

20161228일 수요일 오후 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:

URL:http://ocsp.signgate.com:9020/OCSPServer

키 사용

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

댓글