brunch

You can make anything
by writing

C.S.Lewis

by 테크유람 Mar 28. 2021

디지털 인증서의 원리와 생성 과정

디지털 인증서(Digital Certificate)는 언제 필요한 것인가

보안이 필요한 인터넷상의 네트워크 통신에서 특히 상대방에게 데이터를 인터넷을 통해 전달할 때엔 평문을 암호문으로 바꾸는 암호화(encryption) 및 데이터를 보낸 사람과 받는 대상이 당사자가 맞음을 증명하는 사용자 인증(authentication)이 필요합니다.


이때 많이 사용하는 방식이 공개키 기반의 비대칭키 암호화(Asymmetric Encryption) 방식입니다. 대칭키 암호화 방식은 공개키와 비밀키(개인키) 2개의 key를 사용하여 메시지를 암호화 및 복호화하는 방식을 의미합니다.


아래 예제는 실제 공개키 기반의 암호화 방식을 간단하게 표현한 것입니다.(실제로는 몇 개의 단계가 더 있습니다) 안전한 통신을 원하는 철수와 영희는 사전에 동일한 한 쌍의 공개키/비밀키를 나누어 갖고, 영희는 공개키로 암호화한 데이터를 철수에게 보내고, 철수는 비밀키로 암호문을 복호화하여 열람할 수 있습니다.


<공개키 기반의 암호화 방식>

보기엔 문제가 없지만, 좀 더 깊게 생각해보면 위의 모델에도 여러 가지 보안적인 문제가 있습니다.

철수가 정말 철수가 맞음을 영희는 어떻게 믿고 보안 통신을 할 것인가?

길동이가 본인이 철수라고 속이는 것을 영희는 어떻게 판단할 수 있나?

철수가 영희에게 건네준 Key는 정말 철수가 만들었는지 어떻게 믿을 수 있나?

철수가 실수로 영희에게 잘못 만들어진 Key를 전달하면 영희는 어떻게 알 수 있나?


만약, 철수와 영희 사이에 둘 다 믿을만한 누군가가(부모님 혹은 선생님) 철수와 영희의 신분과 소유한 키가 정상적임을 증명해준다면 철수와 영희는 더욱 믿을 수 있는 통신을 할 수 있게 됩니다.


디지털 인증서는 무엇인가?

디지털 인증서(Digital Certificate)는 보안이 필요한 통신에서 상대방이 통신하고자 하는 대상이 맞음을 확인해주는 역할을 합니다. 부동산 계약서 혹은 여권(passport)과 같이 공신력 있는 인증 역할을 하는 것입니다. 디지털 인증서의 실제 모습은 작은 컴퓨터 파일입니다.


디지털 인증서의 목표는 인증서 소유주의 신분과, 인증서에 포함된 공개키(public key)가 그 소유주 것이 맞음을 증명해줍니다. 이를 위해, 모두가 신뢰할 수 있는 제삼자 인증 기관(CA, Certificate Authority)의 역할이 필요합니다.


CA는 디지털 인증서를 발급해주는 신뢰할 수 있는 기관입니다. 일반적으로 잘 알려진 기관이며 금융 기관, 공공기관, 혹은 소프트웨어 회사 등이 CA 역할을 하고 있습니다. ☞ Verisign, Entrust


CA는 새로운 디지털 인증서 발급뿐만 아니라, 기존 인증서의 관리 및 특정한 이유로 만료되거나 취소된 인증서에 대한 회수도 담당하고 있습니다. CA는 자신의 역할 일부를 등록 기관(RA, Registration Authority)이라 부르는 제3의 기관에게 위탁할 수도 있습니다. ☞ ANNA, the Object Management Group, W3C, IEEE


디지털 인증서는 어떻게 생성하고, 사용하는가?

철수와 영희가 서로의 신분을 확인하고, 보안적으로 안전한 통신을 해야 한다고 가정해봅시다.


① 철수는 공개키와 비밀키(개인키) 한 쌍을 생성하여 소유한다.

② 철수는 다양한 방법으로 본인이 철수가 맞음을 CA에게 증명한다.

---------------------------------------------------

CA의 확인과 인증서 발급 과정이 진행된다...

---------------------------------------------------

③ 철수는 자신의 공개키가 본인 것이 맞음을 인증하는 인증서를 CA로부터 발급받는다.

④ 철수는 발급받은 인증서를 영희에게 전달한다. 인증서에는 철수의 공개키가 포함되어 있다.

⑤ 영희는 자신이 신뢰하는 CA(②번 CA와 동일한 기관)가 발급한 인증서가 맞는지 확인한다.

⑥ 영희는 인증서에 포함된 철수의 공개키로 데이터를 암호화하여 철수에게 전달한다.

⑦ 철수는 ①번에서 보유한 비밀키(개인키)로 데이터를 복호화한다.


<디지털 인증서의 생성 및 사용 과정>


위 과정을 잘 살펴보면 결국 디지털 인증서는 서로가 신뢰할 수 있는 기관이 인증서를 요청한 사람이나 기관에 대한 신분과, 보유한 공개키에 대해 또 다른 관계자에게 보증을 해주는 방식임을 알 수 있습니다.


디지털 인증서 생성 과정을 좀 더 기술적으로 설명한다면?

①번에서 철수는 공개키/비밀키 한 쌍을 만들어야 하는데, 보통은 키를 생성하는 소프트웨어를 사용하거나 RA가 대신 키 쌍(key pair)을 만들어줄 수 있습니다. 이때엔 생성한 키와 자신을 입증하는 정보(이름, 전화번호, 기타 등등)를 함께 RA(CA가 임무를 맡긴 기관)에 보냅니다.


철수가 본인의 정보와 공개키를 RA에게 전달할 때도 남이 엿보거나, 변조할 수 없도록 인터넷상에서 안전하게 전달되어야 합니다. 인증서를 RA에게 요청하는 과정도 표준화되어있고 이를 CSR(Certificate Signing Request)이라고 합니다. CSR은 공개키 암호화 표준(PKCS: Public Key Cryptography Standards)의 기술 일부입니다.


RA는 접수한 CSR이 유효한 요청인지를 확인해야 합니다. 철수가 제공한 신원 정보가 맞는지, 철수는 CSR에 포함한 공개키의 나머지 한 쌍인 비밀키(개인키)를 보관하고 있는지를 확인합니다. 이 과정을 POP(Proof Of Possession)이라고 합니다.


모든 확인이 완료되면 RA는 철수의 CSR 내용을 CA로 전달하고 CA는 (필요하다면 한 번의 확인을 더 거치고) 디지털 인증서를 X.509 표준 기술 등을 이용하여 생성합니다. CA는 완성된 인증서를 철수에게 전달하고 사본 1부를 CA 내부에 있는 Certificagte Directory에 보관합니다.


<X.509 인증서 형식>

X.509 방식으로 생성한 디지털 인증서는 위의 형식에서 알 수 있듯이 인증서 버전, 고유 넘버, 서명 알고리즘, 유효 기간, 공개키 정보, 발행자, 대상자, 확장 정보 등이 담겨있습니다.


디지털 인증서 기술은 신원 확인과 암호화가 필요한 다양한 IT 기술에 사용됩니다. 예를 들면 HTTPS 사용을 위한 웹 서버용 SSL 인증서, 이메일 인증서 (PGP, S/MIME), IPSEC 인증서, 공인 인증서 등이 해당됩니다.


웹 사이트 운영자가 SSL/TLS 인증서를 CA로부터 발급을 받아 웹 서버에 설치하여 HTTPS를 지원하는 경우는 웹 서버와 웹 사이트 접속자의 브라우저 간 인증을 위한 인증서라 할 수 있습니다. 이 시나리오에 대해서는 SSL 인증서 관련 글에서 좀 더 자세히 설명하였습니다.




매거진의 이전글 인증 토큰을 활용한 SSO의 구현
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari