네트워크 - TLS/SSL

델리만쥬 디퓨저·2024년 9월 18일

네트워크

목록 보기
6/9

TLS/SSL Handshake

  • TLS(Transport Layer Security)SSL(Secure Sockets Layer)은 인터넷 통신에서 데이터의 기밀성과 무결성을 보장하기 위한 보안 프로토콜
  • TLSSSL의 업그레이드된 버전
  • 클라이언트와 서버 간에 안전한 통신을 설정하기 위해 사용됨

TLS/SSL Handshake의 사용 사례

  • 웹 브라우징 : HTTPS를 통해 웹사이트에 접속할 때, TLS는 데이터를 암호화하여 기밀성을 보장함
  • 이메일 전송 : IMAP, POP3, SMTP와 같은 프로토콜을 사용하는 이메일 클라이언트에서 TLS는 STARTTLS 명령어를 사용하여 보안을 추가함
  • VPN 연결 : 원격 액세스를 위한 안전한 터널링을 통해 기밀성과 무결성을 유지함
  • VoIP 통신 : 안전한 음성 및 화상 통화를 위한 암호화를 제공함

TLS/SSL Handshake의 작동 방식

  • 클라이언트 Hello
    - 클라이언트 시작 : 클라이언트(예: 웹 브라우저)는 TLS/SSL 연결을 시작하기 위해 서버에 ClientHello 메시지를 보냄
    - 메시지 내용
    - 클라이언트가 지원하는 TLS 버전
    - 사용할 수 있는 Cipher Suites(암호화 알고리즘 목록, 예: RSA, ECDSA)
    - 클라이언트가 생성한 무작위 값(Random Value)
    Client -> Server: ClientHello
  • 서버 Hello
    - 서버 응답 : 서버는 ServerHello 메시지를 통해 응답함
    - 메시지 내용
    - 선택된 TLS 버전
    - 선택된 Cipher Suite
    - 세션 ID(Session ID)
    - 서버가 생성한 무작위 값(Random Value)
    Server -> Client: ServerHello
  • 서버 인증 및 키 교환
    - 서버 인증서 전송 : 서버는 클라이언트에게 자신의 디지털 인증서(공개 키 함)를 전송함. 이 인증서는 클라이언트가 서버의 신원을 확인하는 데 사용됨
    - 서버 키 교환 : 서버는 선택된 암호화 알고리즘에 따라 키 교환 메커니즘을 사용하여 클라이언트에게 메시지를 보냄
    - 서버 완료 : 서버는 ServerHelloDone 메시지를 보내 핸드쉐이크의 해당 단계를 완료함
    Server -> Client: Certificate, ServerKeyExchange, ServerHelloDone
  • 클라이언트 키 교환
    - 클라이언트 확인 : 클라이언트는 서버의 인증서를 확인함
    - Pre-Master Secret 전송 : 클라이언트는 서버의 공개 키를 사용하여 암호화된 Pre-Master Secret을 서버에 전송함. 이는 이후 세션 키를 생성하는데 사용됨
    Client -> Server: ClientKeyExchange
  • 세션 키 생성
    - 세션 키 계산 : 클라이언트와 서버는 Pre-Master Secret과 양쪽의 랜덤 값을 사용하여 동일한 세션 키를 독립적으로 생성함
    - 세션 키 사용 준비 : 클라이언트와 서버는 ChangeCipherSpec 메시지를 교환하여 세션 키를 사용해 암호화된 통신을 시작함. 이어서 Finished 메시지를 보내 핸드쉐이크가 성공적으로 완료되었음을 확인함
    Client -> Server: ChangeCipherSpec, Finished
    Server -> Client: ChangeCipherSpec, Finished
  • 안전한 통신 시작
    - 데이터 암호화 전송 : 클라이언트와 서버는 이제 생성된 세션 키를 사용하여 모든 후속 데이터를 암호화하고 복호화하여 안전한 통신을 수행함
    Client <-> Server: Encrypted Data Communication

용어

  • TLS (Transport Layer Security)
    • 인터넷에서 데이터가 안전하게 전송되도록 보호하는 보안 기술
    • 웹사이트를 HTTPS로 시작하게 하고, 데이터를 암호화하여 해커가 중간에서 데이터를 훔쳐보거나 변조할 수 없게 만듬
    • SSL의 후속 버전으로, 데이터의 기밀성, 무결성, 인증을 보장함
  • SSL (Secure Sockets Layer)
    • TLS의 이전 버전으로, 인터넷 초기에 사용되었던 보안 프로토콜
    • 데이터를 암호화하여 안전하게 전송했지만, 몇 가지 심각한 보안 취약점이 발견되면서 더 이상 사용되지 않고, 현재는 모두 TLS로 업그레이드됨
  • Handshake (핸드쉐이크)
    - 클라이언트(예: 웹 브라우저)와 서버(예: 웹사이트)가 안전한 연결을 설정하기 위해 서로 인사를 나누고 보안 설정을 협상하는 과정
    - 이 과정에서는 어떤 암호화 방식을 사용할지 정하고, 필요한 키(암호화 키)를 교환하며, 서로의 신분을 확인하는 작업이 이루어짐
    - 핸드쉐이크가 완료되면 클라이언트와 서버 간의 안전한 통신이 시작됨
  • Cipher Suite (암호 스위트)
    - TLS/SSL 연결에서 사용할 암호화 알고리즘의 묶음
    - 예를 들어, 데이터를 암호화할 때 사용할 알고리즘(RSA, ECDSA)과 데이터의 무결성을 확인할 때 사용할 해시 알고리즘(SHA-256) 등이 포함됨
    - 클라이언트와 서버는 핸드쉐이크 동안 사용할 암호 스위트를 결정함
  • Pre-Master Secret (프리-마스터 시크릿):
    - 클라이언트가 서버와의 세션 동안 사용할 "비밀 키"를 만드는 데 필요한 임시 정보
    - 클라이언트는 이 정보를 서버의 공개 키로 암호화해서 서버에 보내며, 둘 사이에서만 알 수 있도록 보안 처리를 함
    - Pre-Master Secret은 Session Key를 생성하는 데 사용되며, 클라이언트와 서버 간에만 공유되는 비밀 정보임
  • Session Key (세션 키):
    - 클라이언트와 서버가 한 번 안전한 연결이 설정되면 데이터를 암호화하고 복호화하는 데 사용하는 대칭 키
    - 이 키는 핸드쉐이크 과정에서 만들어진 프리-마스터 시크릿을 기반으로 생성되며, 세션이 유지되는 동안 안전한 통신을 보장함
  • Certificate (인증서):
    • 신뢰할 수 있는 제3자(예: 인증 기관(CA, Certificate Authority))가 발행한 디지털 문서로, 서버나 클라이언트의 신원을 확인하는 데 사용됨
    • 예를 들어, 웹사이트가 신뢰할 수 있는 사이트인지 브라우저가 확인할 때 이 인증서를 사용함
    • 일반적으로 인증서는 서버의 공개 키와 소유자 정보가 포함되어 있음
  • ChangeCipherSpec (암호화 사양 변경 메시지):
    • 핸드쉐이크 과정에서 클라이언트와 서버가 서로에게 "이제부터는 우리가 협상한 대로 암호화된 통신을 시작하겠다"라고 알리는 신호
    • 이 메시지 이후부터 모든 통신은 협상된 암호화 방식으로 보호됨
profile
< 너만의 듀얼을 해!!! )

0개의 댓글