인증서 표준 규격 x509
- x509란 ITU-T가 만든 PKI(Public Key Infrastructure, 공개키기반구조)의 표준입니다.
- 인증서의 유효성을 결정하기 위해 계층적 신뢰를 사용합니다.
- 최상위 인증기관은 자체 서명한 인증서를 발행하고 최종 사용자 및 중간 인증기간의 인증서는 상위의 인증기관이 발급합니다.
ITU-T(국제전기통신연합 전기통신표준화부문)
모든 전기통신 분야에 적용하는 표준을 만들어내는 단체
PKI-공개키기반구조(Public Key Infrastructure)는 기본적으로 인터넷과 같이 안전이 보장되지 않은 공개된 망 사용자들이 한쌍의 공개키와 개인키를 사용함으로써, 안전하게 데이터를 교환할 수 있게 합니다.
양방향 암호화에서 공개키는 만인에게 공개되어 있으므로 아무나 쉽게 암호문을 복호화 할 수 있습니다. 아무나에게 공개되어 있기 때문에 해당 공개키가 조작되지 않은 내가 원하는 공개키가 맞는지 검증이 필요합니다.
그러므로 신뢰할 수 있는 인증기관인 CA가 등장하게 됩니다.
CA(Certificate Authority)
공인 인증 기관은 인증 정책을 수립하고, 인증서발급과 관리역할을 하며 다른 CA와 상호 인증을 제공합니다.
다시 풀어서 설명하면, CA에서는 개인키와 공개키 쌍을 만들어주고, 개인키를 자신이 만들었다고 인증서를 발행하게 됩니다.
즉, Private key를 보증하기 위해 쌍이되는 Public Key, 그리고 인증기관이 정식으로 발행했다는 것을 알리기 위해 공인 인증 기관의 전자 서명이 인증서에 들어있습니다.
그런데 이 때 인증서를 작성하는 인증기관마다 상이하면 인증서의 내용을 이해하는데 문제가 있을 것입니다. 이러한 인증서들의 표준이 되는 규칙이 있어야 하는데, 현재 가장 널리 사용되고 있는 PKI의 표준이 바로 X509입니다.
X509규칙을 따르는 CA의 항목들
X509규칙을 따르는 인증서에 있는 대표적인 내용들 입니다.
- SerialNumber : 발급된 다른 인증서들과 구분하기 위해 사용
- lssuer : 인증서를 발급한 인증기관(CA)의 고유명
- Subject : 공개키 및 사용할 암호 알고리즘
- Signature : 서명 값 필드를 제외한 모든 필드에 CA의 개인키와 서명 알고리즘을 적용하여 생성된다.
X509가 버전이 v3가 되면서 이전버전과 달라진 점들은 Extension 정보들을 인증서에 추가할 수 있게 된 점입니다.
아래표는 Extension 항목의 일부분입니다.
위의 필수항목에서 언급한 DN형식은 다음 항목들로 구성됩니다.
Subject: C=KR, ST=<st1:city w:st="on">SEOUL</ct1:city>, L=SEOGU, O=IBM, OU=Garage, CN=Hololy/emailAddress=hololy@mail.net
이렇게 소유자와 발급자에 대한 정보를 인증서안에 표기하게 되어있습니다.
어쨌든 이렇게 정보를 입력하고나서 인증서를 생성하게 되면 크게 두가지 형식으로 인증서가 저장되게 되는데요, base64로 인코딩되어 저장되는 형식을 PEM, 바이너리 형식으로 저장되는 형식을 DER이라고 합니다.
인증서란?
위 내용을 바탕으로 정리해보았을때 인증서는 신뢰할 수 있는 공인인증기관에서 발급하는 인증에 필요한 여러 정보들을 가지고 있는 문서라고 명할 수 있습니다.
인증서는 수직적인 구조를 가지고 있습니다.
아래 예시처럼 최상위 기관인 DigiCert로 부터 인증받은 하위 인증인 DigiCert SHA2-CA 로 부터 인증을 받았다는 것을 확인할 수 있습니다.
최상위 인증기관은 무조건 신뢰할 수 있는 기관으로써 RootCA라고 부릅니다. (최상위 인증기관의 개인키가 침해될 경우 모든 중간 인증기관과 최종 사용자의 인증서가 전부 폐지되어야 하므로 엄격한 보안으로 관리되며 무조건 신뢰할 수 있다고 가정한다.)
위 예시에서 RootCA는 DigiCert이며 DigiCert SHA@~CA 는 RootCA와 구분짓기 위해 ICA(Intermidiate CA) : 중간인증기관이라고 부릅니다.
RootCA의 인증서들은 일반적으로 웹브라우저에 내장되어 있으며, 해당 인증서에 대응하는 공개키 또한 인증서 내부에 포함하고 있습니다.
암묵적으로 RootCA는 무조건 신뢰한다고 약속하였지만 ICA는 그렇지 않기 때문에 신뢰할 수 있는 방안이 아래와 같이 필요합니다.
인증서 발급 방법
- B회사가 인증서 발급요청을 한다. B회사의 인증서해시값을 RootCA의 비밀키로 함호화 한다.
- B회사의 인증서해시값을 공개키로 언제든지 복호화하여 확인하여 변조가 되었는지 확인할 수 있다.
- 상위기관의 공개키로 하위기관의 인증서 해시값을 복호화함으로써 쉽게 변조 유무를 확인할 수 있어 신뢰할 수 있다고 간주하며 위 원리를 Chain of Trust라고 부른다.
CRL(Certificate Revocation List) 이란?
인증서 폐기 목록으로 현재 사용중인 인증서가 만료된 것인지 정상적으로 사용할 수 있는 것은지를 확인하는 신뢰가능한 목록을 뜻합니다. ( 폐지 사유 : 인증서와 연관된 주체의 개인키 누설, 소속변경, 인증기관의 개인키 누설 등..)
인증기관은 일정한 시간 간격으로 CRL을 발행합니다. (아주 실시간은 아니다.)
HTTPS로 접속을 시도한 후 클라이언트는 인증서에 기록된 CRL 주소에서 CRL List를 다운로드 받아 인증서의 폐기 여부를 확인하게 된다.
CRL 동작 방법
- HTTP, LDAP를 이용해서 인증서를 통해서 받은 URL를 통해서 CRL를 요청한다.
- CA를 요청을 받은 후에 CRL List를 보내주게 된다.
- 브라우저에서 CRL 정보를 파싱하고 현재 인증서가 CRL에 포함이 되어 있는지를 확인한다.
CRL 표준 규격
- 폐지된 인증서
- 일련번호
- 폐지 일자
- 폐지 사유 코드
- 인증서 발급자
- 무효가된 일정
💡 참고링크
https://gruuuuu.github.io/security/what-is-x509/
https://m.blog.naver.com/ijoos/221708140724
'정보보안' 카테고리의 다른 글
PKI 인증 체계 (0) | 2023.08.10 |
---|---|
전자서명, 전자서명 생성 / 검증 (0) | 2023.08.10 |
양방향 암호화 기법 (0) | 2023.08.10 |
단방향 암호와 기법(Hash) (0) | 2023.08.10 |
보안 개념 (0) | 2023.08.10 |