Computer Science/[ Network ]

[ Network ] 06. SSL/TLS

kim.svadoz 2020. 9. 22. 16:41
728x90
반응형

SSL/TLS란?

Secure Socket Layer, Transport Layer Security

  • 전송 계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행
    • 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해 주는 역할을 수행하는 보안용 프로토콜
  • 주요 응용
    • HTTP(HTTPS), FTP(FTPS), TELEMENT, SMTP, SIP, POP, IMAP 등에서 사용 가능
    • 주로, 웹 브라우저웹 서버사이의 안전한 보안 채널을 제공하기 위해 많이 사용된다

OpenSSL

*DTLS는 TLS프로토콜은 UDP에 적용가능하게 해주는 UDP를 위한 프로토콜이다. 그러므로 UDP기반의 애플리케이션들은 이 DTLS를 사용함으로 도청, 간섭, 메시지 변조 등 네트워크 상에서 발생할 수 있는 공격들을 막을 수 있다. 특히나 UDP를 사용하는 IoT에 보안성을 추가해줄 수 있는 프로토콜로 제시되고 있다.*

SSL/TLS 역사

  • 최초 제안 : 넷스케이프 사

    • 버젼 : SSL v1.0(1994.7), SSL v2.0(1994.12), SSL v3.0(1996.11)

      SSL v3.0은 그 당시 사실상의 웹 보안 표준이었음

  • SSL의 표준화 기여 => TLS 표준

    • SSL v3.0 을 참고로하여 RFC 2246(1999년)으로 표준화된 것이 TLS 임
      버젼 : TLS 1.0 (RFC 2246,1999) : SSL v3.1에 해당,
      TLS 1.1 (RFC 4346, 2006), TLS 1.2 (RFC 5246, 2008)

      따라서, SSL 및 TLS는 본질적으로 같으며 버전이 다른 정도임

SSL/TLS 주요 기능

  • 상호 인증

    • 공개키 인증서를 이용하여 서버, 클라이언트의 상호 인증
    • 즉, 클라이언트/서버 두 응용 간에 상대방에 대한 인증
  • 메세지 압축

    • 디폴트는 Null(즉, 무 압축)

      압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능

  • 메세지 인증(메세지 무결성)

    • 메세지 인증 코드 HMAC에 의한 메세지 무결성 제공(HMAC MD5, HMAC SHA-1 등)
  • 암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환

    • RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성(서버 공개 키 사용)
    • Diffie-Hellman : Diffie-Hellman프로토콜을 기반으로 한 키 교환 방식
  • 생성된 공유 비밀키에 의해 암호화된 종당간 안전한 연결 통로 제공

    • 스트링 암호화 : 40, 128 비트의 RC4
    • 블록 암호화 : IDEA, 40, 56비트의 DES, 168 비트의 3DES 등

SSL/TLS 특징

  • 클라리언트/서버 기반의 프로토콜

  • 응용 프로그램(어플리케이션) 자체 구현 가능

    • 대부분의 다른 보안 프로토콜(EAP,IPsec 등)은 운영체제 등에 밀접하게 관련됨
  • 인증 구조 : X.509

    • X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행
  • 키 교환 방식 : (협상 선택 가능)

    • Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,
      Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza
  • 대칭키 암호화 방식 : (협상 선택 가능)

    • RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA 등
  • 해쉬 알고리즘 : (협상 선택 가능)

    • Null, MD5, SHA-1

    SSL/TLS 프로토콜 스택

  • 전송계층 TCP 위에서, 보안 소켓/보안 채널/터널링을 구성

    image-20200922151717154

    • 응용계층에서 생성된 데이터에 대한 보안(인증,무결성,기밀성),압축 등의 서비스 제공

    • SSL/TLS 보안 터널을 위한 TCP/UDP 포트번호

      ex) 보안 HTTP를 위한 포트번호 4433 ( HTPS )

    • 한편, UDP 상에서도 가능한 버전으로

      • DTLS (Datagram Transport Layer Security) RFC 6347(2012년)가 있음

SSL/TLS의 상세 프로토콜 스택 : ☞ SSL/TLS 구성 프로토콜 참조

=> 크게, 하위 레코드 계층 프로토콜(단편화,압축,무결성,암호화,인증 기능 제공)과
위 핸드세이크 관련 프로토콜들로 구성*

SSL/TLC 핸드세이크

초기 협상 단계 => 인증 단계 => 보안 채널 형성 => 상호 암호화 통신 시작

  1. 초기 협상 단계
    • 클라이언트, 서버 간에 Client Hello, Server Hello 메세지 교환
    • 클라이언트가 서버에게 Cipher Suite(사용 가능 암호화, 해싱 방식 등)을 보내고 서버 인증서를 요구
  2. 인증단계
    • 서버에서 공개키, 서버명, 인증기관 주소 등을 포함한 인증서를 클라이언트에게 전송
    • 이 때, 서버는 클라이언트가 제시한 것 중 자신이 선택한 암호화 방식 및 인증서를 보냄
    • 필요히 클라이언트는, 인증서를 발급한 인증기관 서버에 접속하여 서버 인증서의 유효성 확인
  3. 보안채널 형성
    • 클라이언트는 보안 채널 형성에 필요한 세션키를 만들기 위해,
    • 서버의 공개키를 이용하여 임의의 수(Pre Master Key)를 암호화시켜 서버에게 전송하고,
    • 서버자신의 비밀키(개인키)로 이를 해독(역암호화)하게 됨
    • 이때 임의의 수(Pre Master Key)로부터 Master Key를 유도하고,
    • 이 Master Key로부터 양측은 암호화,복호화에 필요한 세션키를 생성함
  4. 상호 암호화 통신 시작
    • 즉, 보안성이 확립된 TLS 터널 내에서 상호 통신
728x90
반응형