자세히 보기

Josh Fruhlinger
Contributing Writer

온라인 소통을 안전하게··· ‘PKI’ 동작 원리와 배치 방법

뉴스
2019.06.187분

PKI, 풀어 번역하면 ‘공개 키 인프라’(Public Key Infrastructure)는 인터넷 암호화의 가장 일반적인 형태 중 하나인 공개 키 암호화를 설정하고 관리하는 데 사용되는 모든 것을 가리키는 용어다. 오늘날 공공 인터넷 전체의 트래픽을 보호하기 위해 사용되는 모든 웹 브라우저에 통합되어 있다. 그러나 기업이 내부 통신을 보호하기 위해 이를 배치할 수도 있다.

PKI와 관련된 가장 결정적인 개념은 이름에서 알 수 있듯이 ‘공개 암호키’다. 이러한 키는 암호화 프로세스의 일부일 뿐만 아니라, 통신 당사자의 신원을 인증하는 데도 도움이 된다.

왜 PKI가 중요할까? 이런 암호화와 인증의 조합을 통해 신뢰할 수 있는 온라인 커뮤니케이션이 가능하기 때문이다.

PKI는 어떻게 작동하는가?
PKI의 작동 방식을 파악하기 위해 가장 중요한 개념들은 와 인증서들이다. 이미 아는 바와 같이, 키는 데이터를 암호화하는 데 사용되는 비트의 나열(즉, 숫자)이다. 예를 들어, 만약 3이라는 암호키를 가진 아주 오래된 단순한 카이사르 암호를 사용했다면, 그것은 곧 당신의 메시지에 있는 모든 문자가 알파벳에서 세 번째 뒤의 글자로 대체된다는 것을 의미할 것이다. 

즉, A는 D가 되고, B는 E가 된다. 그것의 메시지를 해독하기 위해서, 수신자는 당신이 카이사르 암호를 사용하고 있을 뿐만 아니라 당신의 키가 3이라는 것을 알아야 할 것이다.

분명히 현대 암호화의 이면에 있는 수학은 이것보다 훨씬 더 복잡하다. 현대 암호화가 수학과 다른 이유 중 하나는 카이사르 암호의 꽤 명백한 문제와 관련이 있다. 당신은 어떻게든 당신의 수신자에게 암호화된 메시지를 인코딩하는 데 사용된 키를 알려야 한다. 

PKI는 보안 통신 채널의 각 참가자가 2개의 키를 가지고 있기 때문에 그렇게 이름이 붙여졌다. 당신에게 보내지는 메시지를 인코딩하도록 요청한 사람을 알 수 있게 해주면서 인코딩에 사용된 키가 바로 공용키이고, 메시지를 받을 때 암호를 해독하는 데 사용하며 비밀을 유지할 수 있도록 하는 것이 사용키다. 

이 두 가지 키는 복잡한 수학 공식을 통해 연관되어 있는데, 이들을 무차별 대입 기법으로부터 도출하기는 어려울 것이다. 비대칭 암호화로 알려진 이러한 형태의 암호화에 대해서 구체적인 내용을 알고 싶다면, 하우스터프웍스(HowStuffWorks)를 참조하면 좋다.

거기에 실린 글들은 PKI 내에서 데이터가 암호화되는 방법을 다룬다. 하지만 PKI는 메시지를 암호화하는 것 외에도 암호화된 메시지를 주고받는 사람이 그들이 누구인가를 말해준다는 사실을 알려주기 때문에 널리 사용되고 있다는 것을 기억해야 한다. 그리고 바로 그 지점에서 인증서가 등장한다. 

PKI 인증서란 무엇인가?
PKI 인증서는 디지털 여권 역할을 하는 문서로서, PKI로 보안을 갖춘 대화에 참여하고자 하는 모든 기관, 단체 및 기업들에게 할당된다. 이 인증서는 꽤 많은 데이터를 포함할 수 있다. 인증서가 포함하는 가장 중요한 정보 중 하나는 그 기관, 단체 및 기업이 가진 공용키다. 즉, 인증서는 그 키를 공유하는 메커니즘이다.

이와 함께 인증하는 절차도 있다. 인증서에는 그 기관, 단체 및 기업이 누구라고 주장되어진다는 신뢰할 만한 소스로부터의 입증을 포함된다. 그 신뢰할 만한 소스는 일반적으로 인증기관으로 알려져 있는데, 그 부분에 대해서는 잠시 후에 더 자세히 다루도록 하겠다. 

이러한 개념들과 함께 다음의 요소들이 PKI를 구성하는 핵심들이다. 

– 인증기관(CA)은 디지털 인증서를 발급하고 자신들의 공용키로 그 인증서에 서명을 하며 참조용으로 인증서를 보관한다. 

– 등록기관은 요청 받은 디지털 인증서가 진품인지 검증한다. (자세한 내용은 다음 섹션에서 다룰 것이다.) 인증기관은 자신이 등록기관의 역할을 하거나 제3자를 이용하여 이를 수행할 수 있다.

– 인증서 데이터베이스는 인증서와 인증서에 관한 메타베이스 모두를 보관한다. 더욱 중요한 것은 인증서의 유효기간도 포함한다는 사실이다.

– 인증서 정책은 PKI의 절차를 대략적으로 규정하며, 이를 통해 외부자들이 PKI가 얼마나 신뢰할 만한가를 평가할 수 있게 해준다. 

PKI 인증서를 얻는 방법
이들 구성요소에 관한 설명에서 알 수 있듯이 신뢰가 PKI의 핵심이다. 내가 당신에게 디지털 인증서를 보낼 때 내가 하는 일 중 하나는 내가 말하는 내가 누구인지를 당신이 믿게 만들려는 것이다. 그렇기 때문에 인증서는 신뢰할 만한 제3자가 나를 보증하는 데 도움이 된다.

실제로 어떻게 작동하는지를 이해하기 위해, 가장 널리 보급된 PKI 시스템인 TLS/SSL 프로토콜을 예로 들어 보겠다. 이 프로토콜은 거의 모든 암호화된 HTTP 통신을 안전하게 해준다.

TLS 암호화 통신을 제공하기 위해서는 웹사이트 소유자가 이미 논의한 바와 같이 인증기관으로부터 인증서를 취득해야 한다. CA를 표방하는 다양한 공급업체들이 있는데, 당신에게 인증서를 발행하기 전에, 그들은 어떤 식으로든 당신이 당신의 웹사이트에 대한 소유권을 증명하도록 요구한다. 

예를 들어, example.com에서 웹 사이트에 대한 SSL 인증서를 구입하려는 경우 hostmaster@example.com을 통해 CA에 이메일을 보내야 할 수도 있다. 이 주소는 그 도메인 이름에 대한 관리 권한이 있는 사람에게만 제한된다. 일단 인증서를 취득하면 웹 서버에 업로드할 수 있다.

물론 다음 질문은 분명히 어떻게 CA를 신뢰할 수 있는가 일 것이다. TLS의 경우, 표준을 담당하는 중앙 집중화된 기관이 없기 때문에 누구나 스스로를 인증기관이라고 내세울 수 있다. 

그러한 역할을 좋지 못한 업체가 맡는다면 대혼란이 벌어질 수 있다. 실제로 애플, 마이크로소프트나 모질라와 같은 OS 및 브라우저 제작업체들은 이러한 점에 있어서 사실상 문지기 역할을 한다. 신뢰할 수 있는 CA의 목록을 유지하고, 수준에 미달하는 업체들은 블랙리스트에 올려놓고 있기 때문이다. 

시만텍의 기준이 느슨하다는 구글의 주장을 놓고 2017년 구글과 시만텍이 벌인 대결에서 보듯이 CA의 신뢰 여부는 아주 중요한 문제다.   

SSL 인증서는 아마도 현실에서 접할 수 있는 가장 흔한 유형의 PKI 인증서일 것이다. 그러나 잠시 후에 논의하겠지만, 이것이 유일한 PKI 인증서는 아니다. 다른 PKI는 증명서 발급에 대한 기준이 다르겠지만, 명심해야 할 것은 어떤 PKI 시스템도 CA가 사용자를 인증할 수 있는 모종의 방법을 가지고 있어야 하며, PKI 시스템의 모든 참가자가 그 방법을 신뢰해야 한다는 점이다. 

SSL/TLS는 사용자들이 결국 루트 인증서 부여 권한을 신뢰하기 위해 선택해야 하는 신뢰의 사슬(chain of trust)이라고 불리는 것을 사용한다. 핀잔 사이버시큐리티(Finjan Cybersecurity)에 의해 대략적으로 제시된 대안은 사용자들의 인증서가 다른 사용자들에 의해 서명되는 신뢰의 거미줄(web of trust)이다. 신뢰의 거미줄 체계는 자급형 네트워크나 조직, 또는 소규모 사용자 커뮤니티에 더 적합하다.

PKI의 용도는 무엇인가?
SSL이 PKI의 가장 광범위한 구현일 수도 있지만, 확실히 그것이 유일한 것은 아니다. 엑스퍼트 익스체인지 스레드에는 다음과 같은 실제 PKI 응용 사례가 많이 포함되어 있다.

– 암호화된 하드드라이브에 대한 복구키 제공
– 데이터베이스 서버와의 내부 통신 보안화
– 문서 서명
– 로컬 네트워크 보안화 — 예를 들어, PKI 용량은 마이크로소프트의 액티브 디렉토리에 내장되어 있으며 디지털 인증서를 보관하는 물리적 키 카드와 함께 작동하여 사용자가 자신이 말하는 그 사람이 맞는지 확인할 수 있다.
– 메시지 보안화 — 예컨대, 시그널 프로토콜이 PKI를 사용한다. 
– 이메일 암호화

왜 보안 이메일에 PKI가 필요한가?
개방된 인터넷을 흘러 다니는 데이터가 암호화되지 않으면 쉽게 가로채기를 당해서 다른 사람이 읽을 수 있다. 또 신원을 확인할 수 있는 방법이 없다면 발신자가 정말로 그 사람이라는 것을 믿기 어려울 수 있기 때문에, PKI는 웹 트래픽 보안에 뛰어난 것과 같은 이유에서 이메일을 보호하는 데 유용하다. 

우리가 살펴본 바와 같이, 웹 트래픽에 대한 거의 보편적인 PKI를 구축하는 것은 대부분의 필요한 인프라가 웹 브라우저와 서버에 내장되어 있기 때문에 상대적으로 어렵지 않다. 이메일은 좀 더 이질적인 클라이언트를 통해 접속되는데, 이 때문에 조금 더 복잡하다. 

이메일 보안을 위한 가장 오래되고 가장 잘 확립된 PKI 시스템 중 하나는 S/MIME이다. 또한, 앞에서 논의한 신뢰의 거미줄 모델을 사용하는 PGP(Pretty Good Privacy)도 있다. 이러한 종류의 이메일 보호에 대한 지원은 마이크로소프트 아웃룩과 같은 클라이언트에 기본적으로 탑재되어 있다. 최근 몇 년 동안 웹 기반 이메일이 부각되고 있지만, 이 점에서 볼 때는 약간 뒤쳐져 있다. 예를 들어, 지메일은 무료 계정이 아닌 유료인 G 스위트 계정에서만 S/MIME를 지원한다.

PKI 튜토리얼
지금까지는 PKI에 관련된 개념들에 대한 개괄적인 소개였다. 오픈소스 아이덴티티 인프라 회사인 스몰스텝(SmallStep)은 ‘인증서와 PKI에 대해 알아야 하지만 너무 두려워 물어볼 수 없는 모든 것‘이라는 놀랍도록 길고 자세한 기사를 내보냈다. 

이를 통해 더욱 심도 있는 내용을 알 수 있을 것이다. 그 중에서도 스몰스텝은 실제로 증명서를 발급하는 과정을 보여주고 있어서, 인증서 안에 무엇이 들어 있는지 직접 알 수 있다.

만약 여러분이 PKI를 설정하고 가볍게 다룰 기본적인 개념을 이해하는 방법을 찾고 있다면, 겐투 위키(Gentoo Wiki)를 참조하라. 켄투 위키의 튜토리얼은 리눅스에서 PKI를 어떻게 사용하는지 설명해 줄 것이다. 사내 PKI에 대한 인증기관을 어떻게 구축할지 알고 싶다면, 해시코프(HashiCorp)가 좋다. 해시코프는 콘셉트를 증명해야 하는 자사의 볼트(Vault) 엔진으로 PKI를 사용하는 방법에 대한 튜토리얼을 가지고 있다. dl-ciokorea@foundryco.com