Network Security

TLS보안 프로토콜 기술

부산대보금자리 2021. 12. 1. 13:37

SSL/TLS라고 부르기도 하며 SSL에서 TLS로 변했다고 보면 된다. 

현재 TLS1.2를 가장 많이 사용하고 1.3도 사용하긴 한다.

사용 예시는 Https, VoIP, CoAP, MQTT이다.

 

목적 = End to End 보안이다.

총 세 가지 기능을 제공한다.

: 기밀성(=대칭키), 메시지 무결성(=MAC), 인증(=공개키)

 

 

SSL/TLS가 위치하는 곳은 TCP위이며 4 계층 보안이라고 보면 된다.

주로 4계층 안에서 TCP보안을 TLS라 부르고 UDP보안을 DTLS라고 부른다. 

 

이제 본격적으로 TLS에 대해 알아보자.

TLS내의 프로토콜은 크게 4개로 분류된다. 

하지만 위의 Handshaking protocol과 Record protocol이 중요하다

미리 간단히 소개하자면 Handshaking은 상호 간의 인증, record는 암호화이다. 

 

먼저 Handshaking protocol이다.

내부에는 다시 세 가지 프로토콜로 나뉜다.

 

HandShake protocol를 미리 간단하게 살펴보자.

크게 협상, 인증(=optional), 공개키 기반으로 키 공유 총 세가지 기능이 수행된다.

 

협상이란 어떤 TLS 버전인가? 암호화 알고리즘은 무엇을 쓸 것인가? 

인증이란 서버, Client의 인증서를 통해 인증하는 것으로 Client가 서버를 인증하는 것은 거의 필수이고 그 반대는 optional인 경우가 많다.

키 공유란 공개키를 공유하고 이를 통해 디피헬먼을 진행하여 하나의 키가 생성되는 것이다.

Flowgram으로 나타내면 위와 같다. 

Client가 먼저 Hello를 보내며 통신이 시작되며 Server는 이에 대한 응답으로 인증서, 키 교환, 인증서 요구 등을 진행한다.

이제 구체적으로 보자.

Client Hello를 전송할 때 패킷에 포함되는 내용은 위와 같다.

이때 Client random과 session ID은 재전송 공격을 막기 위해 쓰인다. 

여기서 Ciphersuite list란 Client가 이용 가능한 키 교환, 인장, 암호화, mac기법에 사용할 알고리즘을 전송해주는 것이다.

패킷을 열어 보면 이런 식으로 되어있는데 여기서 ECDHE는 타원곡선 기반 디피헬먼 키 교환을 한다는 것이다.

Hello verify Request는 DTLS에서 진행한다. 

UDP와 TCP의 차이는 바로 연결이 불안정하다는 것인데 이에 대한 확인을 보내는 것이다. 

이 과정에서 cookie를 보내는데 이는 udp를 통한 ddos 공격을 막기 위해 쿠키를 교환하여 연결의 신뢰성을 인증하기 위한 것이다. 

이에 대한 응답으로 Client hello back이 전송되어야 한다.

ServerHello에서는 서버의 프로토콜 버전, 랜덤 넘버, session ID, 암호화 알고리즘 등을 전달한다.

 

미리 공유된 비밀키가 있는 것이 아니면 인증서 기반 키 교환이 일어나야 하므로 인증서를 보낸다. 

이를 받으면 Client는 유효한지 확인한다.

이 메시지는 전송한 인증서로 디피헬먼 키 교환을 하자는 것이다. 

이후 서버는 상호 인증을 위해 Client의 인증서를 요청할 수도 있다.

위까지 전송이 되면 서버는 Server Hello Done을 보내고 대기한다. 

 

* TLS의 특징

1. Record protocol

데이터에 대해 MAC을 씌운 다음 암호화가 일어난다. 

 

+ Computing master secret 

master secret을 통해 

 

이러한 key로 split 되어 활용된다. 

master secret key를 만드는 방법은 아래와 같다.

보면 seed값이 중요한데 이는 "master secret"이라는 문자열과 두 주체의 random값을 토대로 만들어진다.

 

'Network Security' 카테고리의 다른 글

터널링과 VPN  (0) 2021.08.23
스푸핑 공격 대응책  (0) 2021.08.18
스니핑 : promiscuous,tcpdump,fragrouter,dsniff과 대응책  (0) 2021.08.09
스캔 및 탐지  (0) 2021.08.08
IP주소 추적하기  (0) 2021.08.06