[혼공네] 7-2. 안전성을 위한 기술

목록으로 돌아가기

암호와 인증서

대칭 키 암호화 방식과 공개 키 암호화 방식

키와 원문 데이터에 수학적 연산 과정을 거치면 암호문이 생성된다. 이러한 과정을 암호화 알고리즘이라고 한다.

대칭 키 암호화 방식은 암호화와 복호화에 동일한 키를 사용한다. 두 호스트가 같은 키를 가지고 암호화 및 복호화를 진행하는 것이다. 이러한 방법은 상대방에게 안전하게 키를 전달하기 어려운 단점이 있다. 이러한 방법이 있다면 굳이 암호화할 필요가 없다. 그래서 공개 키 암호화 방식이 등장한다.

공개 키 암호화 방식은 비대칭 키 암호화 방식이라고도 부른다. 한 쌍의 키가 존재하며, 각각 암호화와 복호화에 따로 쓰인다. 이 쌍의 키를 공개 키, 개인 키라고 부른다. 각 키는 서로를 유추할 수 없게 되어있어 공개 키는 공개를 해도 무방한 것이다. B가 A에게 공개 키를 요구한 뒤, 이를 토대로 내용을 암호화한다. 암호화한 내용을 A에게 전달하면 A는 개인 키로 복호화하여 사용하는 메커니즘이다.

대칭 키는 작은 부하로 빠르게 수행이 가능하다는 장점이 있으며, 공개 키는 암호화 및 복호화에 시간이 상대적으로 많이 들지만 키를 안전하게 공유할 수 있는 장점이 있다.

공개 키와 대칭 키를 함께 사용하는 방식이 존재한다. 공개 키로 대칭 키를 암호화하고, 개인 키로 암호화 된 대칭 키를 복호화 할 수 있다. 이러한 대칭 키를 세션 키라고 한다.

인증서와 디지털 서명

인증서는 말 그대로 무엇인가를 증명하기 위한 문서다. 네트워크에서는 일반적으로 공개 키를 인증서라고 일컫는다. 공개 키 인증서는 공개 키와 공개 키의 유효성을 입증하기 위한 전자 문서다. 웹으로부터 공개 키를 받는 상황에서 그것의 유효함을 판단하기 위해서는 누가 생성했는지, 조작되진 않았는지 등의 내용 증명이 필요하다. 이러한 인증서를 인증 기관이라는 제 3의 기관에서 발급해주며, CA라고 부르기도 한다. CA는 보증을 담당하는 서명 값을 함께 넣어 준다.

인증서 검증은 다음과 같은 절차를 밟는다. 인증서와 서명 값을 분리한다. 이후 서명 값을 CA의 공개 키를 통해 복호화한다. 그러면 인증서에 대한 해시 값을 얻을 수 있는데, 인증서 데이터에 대한 해시 값을 직접 구한 뒤 이를 복호화한 값과 비교하면 된다. 만약 값이 일치한다면 그것은 유효한 것이 된다. 이를 디지털 서명이라고 부른다.

HTTPS: SSL과 TLS

SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인증과 암호화를 수행하는 프로토콜이며, TLS는 SSL을 계승한 프로토콜이다. 이들을 사용하는 대표적인 프로토콜은 HTTPS가 있다.

HTTPS 메시지는 크게 3가지 단계를 거쳐 송수신된다.

  1. TCP 쓰리 웨이 핸드셰이크
  2. TLS 핸드셰이크
  3. 암호화된 메시지 송수신

TLS 핸드셰이크 과정은 암호화 통신을 위한 키를 교환하고, 인증서 송수신과 검증이 이루어진다. 제일 먼저 클라이언트가 ClientHello 메시지를 보낸다. 암호 스위트라는 ‘사용 가능한 암호화 방식과 해시 함수’를 담아 서버에게 요청하면 서버는 그에 대한 응답으로 ServerHello를 보낸다. 제시된 정보 중 선택하는 메시지로, TLS 버전, 암호 스위트 등의 정보를 보낸다. 이를 토대로 서버와 클라이언트는 키를 만들고 암호화된 암호문을 주고 받게 된다.

서버는 Certificate 메시지와 CertificateVerify 메시지를 전송하는데, 이는 각각 인증서와 검증을 위한 디지털 서명을 의미한다. 클라이언트는 이를 토대로 서버의 공개 키를 검증한다. 이어서 이들은 Finished 메시지를 주고 받으며 통신을 끝낸다.

문제 1. 세션 키에 대해 설명하시오.

→ 공개 키로 대칭 키를 암호화하고, 개인 키로 암호화된 대칭 키를 복호화하여 사용하는 방식에서 사용되는 키다.

author-profile
Written by 상 한규

댓글