본문 바로가기
CS/보안

PKI 란? 공개키 기반 구조 개념

by 🌻♚ 2021. 10. 6.

PKI(Public Key Infrastructure)

PKI 공개키 기반 구조에 대해서 굉장히 어렵게 설명이 되어 있는 경우가 많아 쉽게 이해할 수 있도록 정리할 겸 글을 작성합니다. 공개키 암호화와 전자서명을 사용할 수 있게 기반을 마련해둔 것이 PKI(Public Key Infrastructure)이다.

이전 글에서 [CS/보안] - 대칭키 / 비대칭키 양방향 암호화 기법 방법에 대해서는 알아봤습니다. 이런 공개키 암호화를 쉽게 사용할 수 있도록 기반을 마련하는게 PKI인데... 이런 기반? 인프라?를 구축하기 위해서 CA라는 개념이 등장하게 됩니다.

공개키 암호화에서 개인키는 오로지 개인이 소유하고 있어야 합니다. 반면 공개키의 경우 다른 사람들도 사용을 해야하는데... 이것을 어떻게 구할 수 있을까....
모두에게 신뢰를 받는 누군가가 이런 공개키들을 인증해주면 안전하고 신뢰가가는 기반을 만들 수 있습니다.
이렇게 신뢰를 받는 기관이 CA(Certificate Authority)입니다.


CA(Certificate Authority) - 공인 인증기관

위 이미지는 Windows 환경에서 Wikipedia의 SSL 인증서를 브라우저에서 확인한 내용입니다. 인증서의 체인을 확인해보면 DigiCert의 중간 인증기관과 Root 인증기관을 타고타서 인증을 해줍니다. 여기서 Wikipedia의 ssl 인증서를 인증한 위의 Digicert 인증서들이 바로 CA에서 발급 및 서명해준 것 입니다.

이런 공인 인증기관은 개인키를 생성하고 개인키를 기반으로 공개키를 만드는데... 이 공개키가 발급된 인증서에 들어 있는 정보 중 하나 입니다. 이렇게 만들어진 개인키와 공개키 쌍을 CA들이 만들었다고 인증서를 발행하는 것이고 제 3자 인증 역할을 해줍니다.

그럼 이런 CA들은 신뢰받는 기간이라는 것을 누가 보증할까요? CA는 다른 기관들을 인증해주는데... 막상 해당 CA는 누가 인증을 해주는 건지.... 궁금할 수 있습니다. 우선 Windows 운영체제의 기준에서 "컴퓨터 인증서 관리"로 이동하면 신뢰할 수 있는 루트 인증 기관, 중간 인증 기관 등 해당 컴퓨터에서 신뢰하고 있는 인증서들을 확인할 수 있습니다. Windows 운영체제에서 신뢰 받는 기관들이 이미 등록되어 있기도 하고.... 직접 인증서를 설치해서 인증 받는 기관이라는 것을 인증할 수도 있습니다.

이런 식으로 이미 공유가 되어 있는 상태이기 때문에 해당 인증서가 인증해준 인증서는 모두 신뢰할 수 있다는 것으로 판단할 수 있습니다.

PKI 공인인증 절차

가장 대표적인 PKI 기반이 적용되어 있는 것이 "공인 인증서" 입니다. 이제는 "공동 인증서"라고 불리는데... 개인키와 공개키를 이용한 대표적인 예를 들 수 있습니다.

은행에서 공인 인증서를 통해 본인 인증하는 과정

100% 정확하지는 않지만 대체적으로 큰 흐름은 위와 같습니다.

  1. A 사용자가 은행 거래를 하기 위해 본인 인증이 필요해서 공인 인증서 발급을 요청한다.
    1. 개인이 직접 CA로 요청하는 것은 아니고 은행에서 대행한다.
  2. 공인 인증 기관에서는 개인키를 생성한다.
  3. 개인키를 이용해서 공개 키가 들어간 인증서를 생성한다.
  4. 발급된 인증서를 사용자에게 반환되고 개인키와 함께 묶어서 공인 인증서라고 한다.
    1. 실제로 공인인증서 파일을 확인해보면 하나의 파일이 아니라 키 파일 하나와 인증서 파일 하나 이렇게 두개로 되어 있는 것을 확인할 수 있다.
  5. A 사용자는 발급 받은 공인 인증서를 통해서 본인을 인증하기 위해 은행의 인증서를 먼저 획득한다.
    1. 은행의 인증서를 CA에서 획득한다고 표현했는데 실제로는 Handshake 과정을 거쳐 은행에서 인증서를 받고 해당 인증서의 체인을 확인하는 과정이 5번의 총 과정이다.
  6. A의 인증서와 A의 개인키로 암호화된 데이터를 은행의 인증서(공개 키)로 암호화해서 은행에게 보낸다.
    1. 은행의 인증서로 암호화했기 때문에 은행의 개인 키로만 복호화할 수 있다.
    2. 은행에서 A의 인증서와 A의 개인키로 암호화된 데이터를 받는다.
    3. A의 개인키로 암호화된 정보를 A의 인증서로 복호화가 된다면 A의 인증서가 맞다는 것을 확인할 수 있다.
  7. 이렇게 A라는 것을 인증하는 과정이 진행된다.

내부적인 과정이 공개되어 있지는 않기 때문에 정확한 모델은 아니다. A 사용자가 HandShake를 요청해서 은행의 인증서를 확인하는 방법이 아니라 반대로 은행이 A의 인증서를 인증기관을 통해 확인하는 절차가 될 수도 있다. 중요한 것은 전체적인 흐름을 기억하는 것 이다. PKI는 이런 공개키 암호화 구조에 신뢰를 더하기 위해 CA라는 인증 기관이 추가되었고 쉽고 편리하게 사용할 수 있게 된다.

댓글0