Post

대칭/비대칭 암호화, CA, TLS


암호화

대칭 암호화 방식은 연산량은 적으나 보안 위험이 있고 비대칭 암호화 방식은 연산량이 많고 보안 위험이 없다.


대칭 암호화 방식(Symmetric Encryption)

암호화와 복호화에 사용하는 키가 동일한 방식

암/복호화 알고리즘이 단순하지만 처음에 키를 공유할 때에 보안 위험이 있다.


비대칭 암호화 방식(Asymmetric Encryption)

상호 암/복호화할 수 있는 두 개의 키를 발급하고 하나는 외부에 노출하지 않는 개인 키로, 다른 하나는 외부에 노출하는 공용 키로 사용하는 방식

공유 키만으로는 데이터를 복호화할 수 없으므로 보안성이 뛰어나지만 암/복호화 알고리즘이 복잡하여 연산 효율이 떨어진다.


인증서(Certificate)와 CA(Certificate Authority)


인증서

통신하고자 하는 목적지의 신원을 확인하기 위한 증명서

  • 포함 정보
    1. 서버의 공개 키
    2. 서버 정보 및 신원
    3. 발급 기관 정보
    4. 유효 기간
    5. 디지털 서명: 인증서 발급자의 신원

디지털 서명은 누가 이 인증서를 보장하는가를 나타내며 자체적으로도 서명을 할 수 있다. 최상위 CA 기관은 이러한 Self-signed 인증서를 사용한다.

대부분의 경우 서버가 신원을 인증받기위해 인증서를 발급하지만 은행 시스템이나 쿠버네티스 환경과 같이 클라이언트의 신원이 중요한 경우에는 클라이언트에서도 인증서 발급이 필요한 경우가 있다.


CA

인증서를 발급하고 검증하는 제3의 기관 또는 서버이다.

  • 인증서 발급 과정
    1. 서버로부터 인증서 요청(CSR; Certificate Signing Request)을 받는다.
    2. 서버의 정보와 공개 키의 유효성을 검증한다.
    3. 유효한 경우, 서버의 공개 키를 해싱 후 CA 자체 개인 키로 디지털 서명을 생성한다.
    4. 발급된 인증서를 서버에 전송한다.

웹 환경에서 브라우저(클라이언트)의 경우, CA의 공개키를 미리 가지고 있으며 서버가 제공하는 인증서를 이 공개키로 해독하여 검증할 수 있다.


TLS

전송 계층에 동작하며 기존 SSL(Secure Socket Layer) 3.0을 계승한 것이 TLS이다.

tls-handshake

HTTPS의 S는 보안을 의미하며 TLS 방식으로 데이터를 암호화하여 주고받는 프로토콜이다.

  • TLS Handshake
    1. Client Hello: 서버에게 지원가능한 암호화 알고리즘 및 프로토콜 버전, 랜덤 데이터, 세션 ID(=0), 서버 도메인를 포함하여 메시지 전송
    2. Server Hello: 클라이언트에게 사용할 암호화 알고리즘, 프로토콜 버전, 랜덤 데이터, 사용할 세션 ID를 포함하여 메시지 전송
    3. Server Certificates: 서버가 클라이언트에게 인증서 전송
    4. Server Hello Done: 인증서 전송 완료
    5. Client Key Exchange Message: 생성한 랜덤 데이터와 수신한 랜덤 데이터를 조합하여 만든 pre-master-secret 대칭 키를 공개 키로 암호화하여 전송
    6. Key Generation: 공개 키 전송 완료
    7. Cipher Spec. Exchange: 성공 메시지 전송
    8. Finished: Handshake 완료
This post is licensed under CC BY 4.0 by the author.