SSL/TLS 암호화에 대해 알아보자!

윤효준·2025년 2월 26일

콤퓨타 공부

목록 보기
13/17

SSL/TLS 암호화란?

1. 등장 배경

인터넷이 보편화되면서 웹사이트에서 로그인 정보, 결제 정보, 개인 데이터 등 다양한 민감한 정보를 주고받기 시작했습니다. 하지만 초기 인터넷 통신은 기본적으로 암호화되지 않은 HTTP 프로토콜을 사용했기 때문에 데이터가 평문으로 전송되었고, 이를 중간에서 가로채는 패킷 스니핑(packet sniffing) 공격이 빈번하게 발생했습니다. 또한 중간자 공격(MITM, Man-In-The-Middle Attack), 데이터 변조(Data Tampering) 등의 보안 위협이 대두되었습니다.

이를 해결하기 위해 Netscape에서 1990년대 중반, 인터넷 통신을 보호하는 SSL(Secure Sockets Layer) 프로토콜을 개발했습니다. 이후 SSL 2.0, 3.0을 거쳐 TLS(Transport Layer Security)로 발전하며 보안성이 대폭 강화되었고, 현재 대부분의 웹사이트에서는 TLS 프로토콜을 기반으로 안전한 HTTPS 통신을 사용하고 있습니다.

💡 잠깐! 주요 보안 위협 살펴보기

  • 패킷 스니핑(Packet Sniffing): 네트워크에서 전송되는 데이터를 가로채어 분석하는 공격 방식입니다. 암호화되지 않은 HTTP 통신에서는 공격자가 로그인 정보나 개인 데이터를 쉽게 획득할 수 있습니다.
  • 중간자 공격(MITM, Man-In-The-Middle Attack): 공격자가 클라이언트와 서버 사이에 개입하여 데이터를 가로채거나 변조하는 방식입니다. 신뢰할 수 없는 네트워크(예: 공공 Wi-Fi)에서는 이런 공격이 발생할 가능성이 큽니다.
  • 데이터 변조(Data Tampering): 전송 중인 데이터를 악의적으로 변경하여 오작동을 유발하거나 피해를 입히는 공격입니다. 예를 들어, 온라인 송금 시스템에서 수신 계좌 정보를 변조하면 금전적 손실을 초래할 수 있습니다.

2. SSL/TLS 암호화란?

SSL/TLS는 인터넷 상에서 데이터를 안전하게 전송하기 위해 사용되는 암호화 프로토콜입니다. 현재 대부분의 웹 통신은 TLS로 이루어지지만, 여전히 "SSL"이라는 용어가 관습적으로 사용됩니다.

인터넷에서 데이터가 오가는 동안 해커는 다양한 방법으로 정보를 가로채거나 변조할 수 있습니다. SSL/TLS는 이를 방지하고 다음과 같은 보안 기능을 제공합니다.

  • 기밀성(Confidentiality) : 데이터를 암호화하여 제3자가 내용을 볼 수 없도록 보호합니다.
  • 무결성(Integrity) : 데이터가 변조되지 않았음을 보장합니다.
  • 인증(Authentication) : 서버(및 경우에 따라 클라이언트)의 신원을 확인합니다.

3. SSL/TLS의 동작 원리

1) SSL/TLS 핸드셰이크(Handshake)

SSL/TLS 통신은 "핸드셰이크(Handshake)" 과정을 거쳐 보안 연결을 설정합니다. 이는 클라이언트(웹 브라우저 등)와 서버(웹사이트 등) 간에 안전한 통신을 위한 초기 협상 과정입니다.

① 클라이언트 헬로 (Client Hello)

  • 클라이언트는 서버에 "나는 SSL/TLS를 지원하며, 사용할 수 있는 암호화 알고리즘 목록은 다음과 같다"는 메시지를 보냅니다.
  • 이 메시지에는 SSL/TLS 버전, 지원 가능한 암호화 알고리즘(Cipher Suite), 난수(Random Data) 등이 포함됩니다.

② 서버 헬로 (Server Hello)

  • 서버는 클라이언트의 요청을 받아서 "나는 이 암호화 알고리즘을 사용할 것이며, 내 인증서는 다음과 같다"라는 응답을 보냅니다.
  • 이때 서버의 SSL 인증서(SSL Certificate) 가 함께 전송됩니다. (인증 기관(CA, Certificate Authority)에 의해 발급된 경우 신뢰성이 높습니다.)

③ 서버 인증 및 공개 키 교환

  • 클라이언트는 서버 인증서를 검증합니다.
  • 인증서는 신뢰할 수 있는 인증 기관(CA) 에 의해 발급되었으며, 이를 클라이언트가 신뢰하는 경우에만 안전한 연결을 진행합니다.
  • 클라이언트는 인증서에 포함된 서버의 공개 키(Public Key)를 획득합니다.

④ 세션 키 생성

  • 클라이언트는 서버의 공개 키로 암호화한 "세션 키"(대칭 키)를 서버로 전송합니다.
  • 서버는 자신의 개인 키(Private Key) 로 이를 복호화하여 동일한 세션 키를 얻습니다.
  • 이후 클라이언트와 서버는 이 대칭 키를 사용하여 안전한 데이터 암호화를 수행합니다.

2) 암호화된 데이터 전송

세션 키가 설정되면 클라이언트와 서버는 이 키를 사용하여 데이터를 암호화한 후 주고받습니다. 이는 데이터가 중간에서 가로채더라도 해독할 수 없도록 보호하는 역할을 합니다.

3) 세션 종료

통신이 끝나면 클라이언트와 서버는 세션을 종료하고, 사용된 세션 키는 폐기됩니다.


4. SSL/TLS 인증서 종류

SSL/TLS를 적용하려면 "SSL 인증서"가 필요하며, 인증서의 종류에 따라 검증 수준이 다릅니다.

  1. 도메인 검증(DV, Domain Validation)

    • 가장 기본적인 인증서로, 단순히 도메인의 소유권만 확인합니다.
    • 개인 블로그, 일반 웹사이트 등에 사용됩니다.
  2. 기업 검증(OV, Organization Validation)

    • 도메인 소유권뿐만 아니라 기업의 신원도 검증합니다.
    • 기업이나 단체의 웹사이트에서 많이 사용됩니다.
  3. 확장 검증(EV, Extended Validation)

    • 가장 엄격한 인증서로, 법적 문서와 기업의 상세 정보를 확인합니다.
    • 금융 기관, 대기업, 정부 웹사이트에서 주로 사용됩니다.
profile
작은 문제를 하나하나 해결하며, 누군가의 하루에 선물이 되는 코드를 작성해 갑니다.

0개의 댓글