본문 바로가기
이론/네트워크

공개 키 인증서 (Public key certificate)

by 유세지 2023. 5. 28.

 

 

지난 포스트에서는 디지털 서명을 이용해 부인방지를 적용하는 과정에 대해 알아보았습니다. 이번 포스트에서는 네트워크 통신상에서 디지털 서명을 포함하고 있는, 인증서에 대해서 간단하게 알아보겠습니다.

 

 

인증서란?

인증서는 디지털 서명보다 비교적 친숙하게 들리는 용어입니다. 실제로 일상생활에서 마주치게 될 확률이 높기 때문인데, 예시로 사용자가 웹을 탐색할때 종종 아래와 같은 오류 페이지를 만나게 될 때가 있습니다.

 

연결이 비공개로 설정되어 있지 않습니다. 오류

 

이때 주소창 부분의 "주의 요함" 을 클릭해서 확인해보면, 이런 팝업이 표시됩니다.

 

인증서가 올바르지 않음

 

두 번째 리스트의 '인증서가 올바르지 않음' 이라는 문구가 보이시나요? 우리가 오늘 알아 볼 인증서가 바로 이것입니다.

 

웹 서핑을 할때 암호화 프로토콜인 HTTPS 를 이용하면, 우리는 실시간으로 이 인증서를 사용하고 있는 것이나 다름이 없습니다. 위의 경우를 살펴보면, 인증서의 유효 기간이 만료되어 정상적인 인증서라고 볼 수 없기 때문에 연결에 실패하고 있는 모습입니다.

 

유효성 기간이 2019년 5월 5일까지로, 만료된 모습입니다.

 

 

여기서 말하는 인증서, 즉 공개 키 인증서(Public key certificate)는 공개 키의 소유권을 주장하는데 사용되는 일종의 전자 문서입니다. 디지털 서명이 송신자의 신원을 확인했다면, 인증서는 제 3자나 기관으로부터 그 확인을 보장받는 역할을 맡고 있습니다. 즉, 해당 서명이 믿을만한 서명인지를 재차 확인하여 악의를 가진 중간자로부터 통신을 보호합니다.

 

가장 많이 사용되는 인증서의 표준 규격인 X.509를 기준으로 보면, 아래 내용들을 포함하고 있습니다.

 

  • 규격의 버전
  • 인증서 일련 번호
  • 디지털 서명 알고리즘
  • 디지털 서명
  • 인증서의 발행자
  • 유효 기한 게시
  • 유효 기한 종료
  • 공개 키의 소유자
  • 공개 키 알고리즘
  • 공개 키
  • 등등..

 

 

인증서는 그 자체로 신원을 보장하지만, 보장하는 주체가 신뢰할 수 없는 개인이나 조직일 경우 해당 인증서를 이용한 통신이 안전하다고 보기는 어렵습니다. 따라서 인증서를 전문적으로 발급할 수 있는 기관과, 이를 보관할 저장소가 함께 필요합니다. 이렇게 이용자들과 인증 기관, 저장소 등을 묶어 하나의 인프라로 볼 수 있으며 PKI(Public-Key Infrastructure) 라고 부릅니다.

 

 

PKI

PKI는 공개 키 기반의 인프라를 통칭하는 용어로, 우리가 위에서 이야기했던 사용자와 인증 기관을 포함하고 있는 개념입니다.

 

 

PKI의 구조도

 

 

PKI를 구성하는 요소들을 하나씩 살펴보겠습니다.

 

등록자

  • 인증 기관에 자신의 공개 키를 등록합니다.
  • 메시지에 디지털 서명을 합니다.
  • 필요한 경우 등록한 공개 키를 무효화합니다.

인증 기관 (CA: Certification Authority)

  • 키 쌍을 작성합니다. (등록자가 작성하는 경우도 있습니다.)
  • 공개 키 등록 시 본인임을 인증합니다.
  • 인증서를 작성하고, 폐지합니다.
  • 공인 인증 기관으로는 한국정보인증, 금융결제원, 한국전자인증 등이 있습니다.

저장소

  • 인증서를 보관하고, 필요시 이용자가 접근할 수 있도록 합니다.
  • 인증서들이 저장된 데이터베이스입니다.

이용자

  • 메시지를 암호화해서 전송합니다.
  • 디지털 서명을 검증합니다.

 

이처럼 PKI는 각자의 역할을 수행하며 안전하고 신뢰할 수 있는 통신을 보장하도록 구성되어 있습니다. 그러나 이 구조에는 문제가 있는데, 모든 인터넷 사용자들이 하나의 저장소와 인증 기관에 접근하려 한다면 부하를 감당하기 어렵겠죠? 그렇기 때문에 인증 기관은 부하를 분산시킬 수 있는 계층 구조를 사용합니다.

 

 

계층 구조를 띄고 있는 인증 기관의 모습

 

최상위 인증을 담당하고 있는 Root CA에서 등록 대행 기관인 큰 단위의 RA로, 큰 단위의 RA에서 더 작은 단위의 RA로... 이런식으로 계층 구조를 형성하며 이용자들의 요청을 분산해서 받기 때문에 안정적으로 운영이 가능해집니다. 서명을 검증할때 Root CA가 Big-RA를 서명해주고, Big-RA는 Small-RA를 서명해주고, Small-RA가 최종적으로 등록자의 공개 키를 서명해주는 연속적인 구조 덕분에 이러한 계층 구조를 인증서 체인이라고도 부릅니다.

 

글에서는 한국인터넷진흥원(KISA) 에서 관리하는 PKI를 예시로 들었지만, PKI가 어떤 특정한 단체를 지칭하는 것이 아닌 인증 구조를 이야기하는 것이기 때문에 개인도 얼마든지 인증 기관이 되어 인증서를 발급하고, 저장할 수 있습니다. 실제로 개인이 인증 기관이 되어 PKI를 사용하는 경우는 많지 않지만 기업에서 부서별로 PKI를 운영하고, 상호 인증하는 시나리오는 충분히 가능합니다.

 

 

PKI의 취약점

PKI는 많은 문제들을 해결할 수 있는 시스템이지만 몇 가지 취약점들도 가지고 있습니다.

 

공개 키 등록 이전에 공격하기

등록자가 인증 기관에 공개 키를 등록하기 전에, 공격자가 개입하여 공개 키를 자신의 것으로 바꿔치기 하는 방법입니다. 이렇게 되면 인증 기관에서 등록자의 정보와 공격자의 공개 키 조합에 대해 디지털 서명을 하게 됩니다.

 

 

인증 기관에 저장된 개인 키를 훔치기

인증 기관(저장소)에 저장된 개인 키를 훔쳐서 사용하는 경우입니다. 인증 기관은 피해 사실을 확인하는 즉시 CRL(인증서 폐기 목록)을 통하여 이용자에게 현재 키가 도난당한 상태인 것을 통지해야 합니다.

 

 

스스로 인증 기관이 되기

개인도 인증 기관이 될 수 있다는 점을 악용하여, 타인의 인증서를 자유롭게 발급하여 사용하는 경우입니다. 우리가 항상 신뢰할 수 있는 인증 기관을 이용해야 하는 이유이기도 합니다.

 

 

Superfish

또는 클라이언트에 의해 정보를 탈취하는 상황도 발생할 수 있습니다. 2015년에 일어났던 Superfish 사건이 대표적인데, Lenovo 사의 컴퓨터에 설치된 애드웨어 'Superfish' 가 사용자의 통신을 가로채고 개인 정보를 수집하여 맞춤 광고를 내보내고 있던 경우입니다. 이 경우 또 다른 해커로부터의 침입을 허용하는 경로가 될 수 있기 때문에 심각한 보안 문제가 발생했다고 볼 수 있겠습니다.

 

 

개인이 이러한 보안 위협들에 맞서 할 수 있는 노력으로는 클라이언트에 설치된 악성 코드를 방지하기 위해 백신 프로그램을 꾸준히 사용하고, 통신 시 신뢰할 수 있는 인증 기관에서 발급받은 인증서를 사용하는지 확인하는 것이 좋습니다.

 

 

 

마치며

오늘은 통신에서 사용되는 공개 키 인증서와, 이 인증서를 효과적으로 관리하는 인프라 구조인 PKI에 대해 알아보았습니다. 틀린 내용에 대한 지적은 댓글로 부탁드립니다.

 

읽어주셔서 감사합니다.

 

반응형

댓글