TLS(Transport Layer Security)

00SNU3K·2021년 8월 6일
1

TLS란?

과거 명칭 SSL(Secure Sockt Layer)이 표준화 되면서 바뀐 것이 TLS(Transport Layer Security)이다. TCP/IP 네트워크를 사용하는 통신에 적용되며 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보해줌.

TLS 보안 목표

  1. 인증성 (Authenticity) : 앨리스와 쪽지를 주고받는 상대방이 밥임을 인증하는 것

  2. 기밀성 (Confidentiality) : 앨리스와 밥 만이 서로의 쪽지를 읽을 수 있고, 이브는 불가능하게 하는 것

  3. 무결성 (Integrity) : 앨리스가 쓴 쪽지가 변경되지 않았음을 보장하는 것

이 세가지 보안 목표를 달성함

TLS의 3단계 기본 절차

  1. 지원 가능한 알고리즘 서로 교환

    • 키 교환과 인증에 사용될 암호화 방법, 메시지 인증 코드(MAC)가 결정
    • 키 교환과 인증 알고리즘은 공개키 방법을 사용하거나 미리 공유된 키(TLS-PSK)를 사용할 수도 있다.
    • 메시지 인증 코드들은 HMAC 해시 함수로 만든다.
    • SSL에서는 비표준 무작위 함수를 사용한다.
  2. 키 교환, 인증

  3. 대칭키 암호로 암호화하고 메시지 인증

TLS 암호화 모음(Cipher Suite)

TLS{키 합의 프로토콜} {인증 방법} WITH {암호화 기법} _{데이터 무결성 체크 방법}

인증 방법은 인증성을, 암호화 기법은 기밀성을, 데이터 무결성 체크 방법은 무결성을 나타냄

예를 들어서 TLS_DHE_RSA_WITH_AES_256_CBC_SHA256의 경우, 키 합의 프로토콜은 DHE, 인증 방법으로는 RSA, 암호화 기법으로는 AES_256_CBC, 데이터 무결성 체크 방법으로는 SHA256을 사용하는 것을 알 수 있음.

TLS의 약점

패킷이 암호화되어 송수신되므로 정보탈취 부분에서는 강하다. 기밀성이 우선이므로 스니핑 공격에서 뛰어난 보안성을 보인다. 다만 암호화된 패킷이 클라이언트 PC 또는 서버로 전송되기 때문에 송수신자간 데이터 교환이 일어나는 일에 대해서는 무력해진다. 개인정보유출, 기밀정보유출, DDos, APT, 악성코드 공격이 발생할 경우 무력화 된다.

TLS 1.2

img

  1. ClientHello에서 클라이언트는 자신이 사용할 TLS 버전, 사용 가능한 암호화 모음 등을 서버에 보냄

  2. 서버는 그중에서 암호화 모음 하나를 선택해서 ServerHello에 기입하고 자신의 인증서와 함께 클라이언트에 보냄

  3. 이언트는 서버의 인증서를 평가한 후, ClientKeyExchange에 세션 키를 만들어서 서버의 공개 키로 암호화 후 전달함

  4. ChangeCipherSpec은 이후 보내는 모든 메시지는 암호화될 것임을 상대에 알리는 용도

img

  • 암호화 모음은 키 합의 프로토콜, 인증 알고리즘, 암호화 기법, 무결성 체크 기법을 모두 묶은 것으로 한 줄에 대해 코드값을 부여하고 있어서 확장성이 매우 떨어짐.
  • 새로운 프로토콜이 추가된다면, 다른 모든 조합에 대해서 무수히 많은 새로운 항목을 만들어야함.

TLS 1.3

img

  • TLS 1.3은 1.2에 비해 RTT를 줄여서 속도를 개선했음. 처음 연결 시 1-RTT가 소요되고, 다시 연결 시에는 0-RTT를 시범적으로 지원.

  • TLS 1.2는 Client - Server - Client - Server 의 2 RTT 후에 암호화된 데이터가 송수신

  • TLS 1.3은 Client - Server 의 1 RTT 후에 Finished와 암호화된 데이터가 같이 송수신

img

  • 서로 구별이 되는 암호화 기법, 키 합의 프로토콜, 인증 알고리즘으로 분리해서 나타내기 때문에 새로운 프로토콜 추가된다하더라도 모든 조합이 자동으로 지원 가능하게 됨.

  • 실제 예시를 들어보면 기존에는 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256라는 이름의 암호화 모음이 있었고, 이는 0xCCA9라는 값을 가지고 있었다면, TLS 1.3부터는 <TLS_CHACHA20_POLY1305_SHA256( 0x1303), x25519(0x001D), ecdsa_secp521r1_sha512(0x0603)>와 같이 세 요소의 조합으로 나타낼 수 있음.

profile
네트워크 전문가를 꿈꾸며

0개의 댓글