블로그

인증서의 역할

숀 라이트 썸네일
숀 라이트
2022년 5월 23일 게시

이 게스트 블로그는 시리즈의 일부이며 F5와의 파트너십으로 제작되었습니다.

CSR, PEM, DER, X509... 인증서가 종종 일종의 마법으로 여겨지는 것도 당연한 일입니다.

처음으로 자격증을 따려고 했을 때, 나는 무엇을 해야 할지 전혀 몰랐습니다! 나는 아무 생각 없이 일련의 명령을 복사하고 그것들이 제대로 작동하기를 바랐다. 하지만 보안 측면에서 누군가가 맹목적으로 명령을 복사하기를 기대하는 것은 위험한 일입니다. 그 중에서도 가장 중요한 것은 자격증입니다.

인증서는 TLS(그리고 가장 일반적으로는 TLS를 활용하는 HTTPS) 연결의 초석입니다. 이것을 잘못하면 공격자가 연결을 가로챌 위험에 노출되어 TLS 연결이 제공하는 보호 기능을 사실상 무효화합니다.

이 블로그는 인증서, 특히 인증서 관리의 역할에 대해 알아보는 시리즈의 일부입니다. 첫 번째 부분에서는 인증서의 목적과 인증서가 연결(특히 TLS 연결)을 보호하는 데 중요한 역할을 하는 이유를 살펴보겠습니다.

기밀성 보장 및 무결성 확립

클라이언트가 서버에 연결할 때 고려해야 할 두 가지 보안 원칙이 있습니다.

첫 번째는 비밀유지입니다. 이는 클라이언트와 송수신되는 데이터가 해당 트래픽 외부의 누구에게도 보이지 않도록 하는 데 매우 중요합니다. 로그인 페이지가 좋은 예입니다. 로그인을 시도하는 서버로 사용자 이름과 비밀번호가 전송될 때 다른 사람에게 공개되지 않도록 해야 합니다. 또한 기밀성은 개인정보 보호 측면에서도 중요한 역할을 하며, 호기심 많은 사람이 내가 보고 있는 행동이나 정보를 들여다보는 것을 방지합니다.

두 번째 원칙은 정직성입니다. TLS와 관련해 많은 사람들이 잊거나 알지 못하는 부분이 바로 이것입니다. 무결성이란, 클라이언트와 송수신되는 데이터를 누구도 조작할 수 없다는 것을 의미합니다. 리소스가 공개된 경우에도 여전히 이 데이터의 무결성을 보장하고 싶습니다.

공개적으로 접근 가능한 뉴스 사이트를 생각해 보자. 이 페이지는 공개적으로 사용 가능하므로 기밀성 측면에 대해서는 그다지 신경 쓰지 않습니다(개인정보 보호는 제외하고, 이 예에서는 이를 제쳐두겠습니다). 하지만 우리는 서버에서 클라이언트(사용자 브라우저)로 전송된 데이터가 조작되지 않았는지 확인하고 싶습니다. 공격자는 서버의 무결성을 고려하지 않고 뉴스 기사의 내용을 편집할 수도 있고(가짜 뉴스를 생각해 보세요) 브라우저 익스플로잇 프레임워크 후크와 같은 악성 콘텐츠를 페이지에 삽입할 수도 있습니다.

자격증의 중요성

그렇다면 자격증은 이 모든 것에서 어떤 역할을 할까요? 클라이언트가 서버에 연결할 때는 먼저 의도한 서버에 연결해야 합니다. 공격자가 모방한 서버가 아닙니다. 또한 연결이 종단 간 암호화되어 있는지 보장하고 싶습니다. 즉, 트래픽 검사 및 수정을 위해 어딘가에서 연결이 종료되지 않고 원래 서버로 전달되지 않았다는 의미입니다. 이것을 중간자 공격 이라고 합니다 .

이제 명확히 하자면, 이에 대한 타당한 사용 사례가 있는데, 특히 기업 환경에서는 조직의 보안을 강화하기 위해 인터넷 트래픽을 자주 검사합니다. 여기서 자격증이 중요해집니다. 클라이언트가 TLS 서버에 연결하면, 서버는 클라이언트에게 (서버) 인증서를 제공해야 합니다. 그런 다음 클라이언트는 이 인증서의 유효성을 검사하여 클라이언트가 원래 연결하려고 했던 올바른 서버에 속하는지 확인합니다. 이것이 확립되면(TLS 핸드셰이크의 일부) 클라이언트와 서버 간의 통신을 시작할 수 있습니다.

이 시리즈의 다음 부분에서는 내 블로그에서 이 주제를 계속 탐구하겠습니다. 여기에서는 인증서 검증 과정에 대해 다루겠습니다. 여기서는 인증서 관리의 인간적인 측면과 그 중요성에 대해 자세히 알아보겠습니다.

그때까지 David Warburton과 Nigel Ashworth가 진행하는 F5 myForum 세션( 변화하는 SSL 환경에 대비하세요 ) 을 꼭 확인해 보시기 바랍니다. 지속적으로 진화하는 SSL과 TLS 환경에 대한 훌륭한 개요를 담고 있어, 읽어볼 만한 가치가 충분합니다.

숀 라이트는 소프트웨어 개발자로 시작한 경험이 풍부한 애플리케이션 보안 엔지니어입니다. 그는 주로 웹 기반 애플리케이션 보안에 중점을 두고 있으며, TLS와 공급망 관련 주제에 특별한 관심을 가지고 있습니다. 숀은 애플리케이션 보안과 관련하여 기술적 리더십을 제공하는 데에도 경험이 있으며, 팀이 개발하고 유지 관리하는 시스템 및 애플리케이션의 보안을 개선하기 위해 팀과 협력하는 데에도 경험이 있습니다. 여기서 그의 블로그를 읽을 수 있습니다.