TLS(Transport Layer Security)란?
넷스케이프사에서 개발한 SSL의 진화버전이다.
인터넷 통신을 하는 두 사용자가 서로의 신원정보를 인증하는 절차를 갖는 프로토콜이다.
이 방법을 사용하면 제 3자가 정보를 감청, 조작할 수 없다.
TLS 절차
- 먼저 클라이언트에서 서버에 ClientHello 메시지를 보낸다. 여기에는 클라이언트에서 가능한 TLS 버전, 서버 도메인, 세션 식별자, 암호 설정 등의 정보가 포함된다.
- 클라이언트의 메시지를 받은 서버는 ServerHello 메시지를 클라이언트에게 보낸다. 여기에는 ClientHello 메시지의 정보 중 서버에서 사용하기로 선택한 TLS 버전, 세션 식별자, 암호 설정 등의 정보가 포함된다.
- 서버가 클라이언트에 Certificate 메시지를 보낸다. 여기에는 서버의 인증서가 들어간다. 이 인증서는 별도의 인증 기관에서 발급받은 것이며, 서버가 신뢰할 수 있는 자임을 인증한다. 전송이 끝나면 ServerHelloDone 메시지를 보내 끝났음을 알린다.
- 클라이언트는 서버에서 받은 인증서를 검증한다. 인증서의 유효 기간이 만료되지 않았는지, 그 인증서가 해당 서버에게 발급된 인증서가 맞는지 등을 확인한다. 인증서를 신뢰할 수 있다고 판단하였다면 다음 단계로 넘어간다.
- 클라이언트는 임의의 pre-master secret을 생성한 뒤, 서버가 보낸 인증서에 포함된 공개 키를 사용해 암호화한다. 이렇게 암호화된 pre-master secret을 ClientKeyExchange 메시지에 포함시켜 서버에 전송한다.
- 서버는 전송받은 정보를 복호화하여 pre-master secret을 알아낸 뒤, 이 정보를 사용해 master secret을 생성한다. 그 뒤 master secret에서 세션 키를 생성해내며, 이 세션 키는 앞으로 서버와 클라이언트 간의 통신을 암호화하는데 사용할 것이다. 물론 클라이언트 역시 자신이 만들어낸 pre-master secret을 알고 있으므로, 같은 과정을 거쳐 세션 키를 스스로 만들 수 있다.
- 이제 서버와 클라이언트는 각자 동일한 세션 키를 가지고 있으며, 이를 사용해 대칭 키 암호를 사용하는 통신을 할 수 있다. 따라서 우선 서로에게 ChangeCipherSpec 메시지를 보내 앞으로의 모든 통신 내용은 세션 키를 사용해 암호화해 보낼 것을 알려준 뒤, Finished 메시지를 보내 각자의 핸드셰이킹 과정이 끝났음을 알린다.
- 이제 서버와 클라이언트 간에 보안 통신이 구성된다.
TLS는 OSI 7계층 중 Application Layer이다.
HTTPS는 TLS프로토콜을 응용한 HTTP 이다.
신뢰성을 잃어버린 인증서 업체가 많아 인증서 업체에 따라 신뢰성이 각기 다르다.
암호화 과정때문에 성능상의 문제가 있다.
자세한 설명 : https://namu.wiki/w/TLS
참고 : https://www.cloudflare.com/learning/security/glossary/transport-layer-security-tls/
'정보보호 > 일반' 카테고리의 다른 글
SIEM(Security Information and Event Management)이란? (0) | 2019.03.03 |
---|---|
다크웹(dark web)이란? + tor (1) | 2019.03.03 |
windows XP 해킹 - MS08_067 이용 (0) | 2019.03.02 |
APT 공격에 대한 이해 (0) | 2019.03.02 |
DNS 스푸핑 공격 (0) | 2019.03.02 |