본문 바로가기

Network

🔐 SSL & TLS?

📌 서론

개발하면서 SSL 관련 Exception이 발생했다. 해결하기 위해 여러 방법들을 찾아보고 해결 했다.

하지만 SSL이 뭔지 모르고 해결했기 때문에 이것은 해결했다고 할 수 있을까? 문득 이런 생각이 들었다.

이렇게 저렇게 설정하면 된다고 하지만, 본질적인 부분을 모르거나 핵심적인 키워드에 대해서 모르고 넘어가게 되면 또 같은 상황이 반복될거라 생각했다.

따라서 이번 글은 SSL을 알고 넘어가기 위해 글로 정리하려고 한다.


📌 SSL?

우리는 웹 서비스를 이용하려고 할 때 해당 서비스는 보다 더 안전한 서비스를 제공하기 위해 노력하고 있다. 이때 웹서버와 브라우저 사이의 보안을 위한 것이 SSL이다.

그림[1] - 자물쇠 모양의 의미

웹 서비스를 이용하다보면 종종 자물쇠 모양(그림[1])을 볼 수 있는데 해당 서비스는 SSL 이라는 보안 프로콜을 사용한다는 의미이다.

그림[2] - A에서 B로 메세지 전송

SSL은 인터넷 같이 TCP/IP 네트워크를 사용하는 통신에 적용되며, 통신 과정에서 전송계층 종단간 보안과 데이터 무결성을 확보 해준다고 한다. 즉, A에서 보낸 데이터가 원래의 내용 그대로 Z에서 받는다는 것을 보장(그림[2])한다는 의미이다.

일단은 간단하게 이해하고 넘어가보자.


📌 SSL / TLS 관계

SSL에 대해서 알아보면 자주 등장하는 것이 TLS(Transport Layer Security, 전송 계층 보안)이다.

왜 SSL을 검색했는데 TLS가 나올까? 더 자세히 알아보자.

SSL, TLS 역사

그림[3] - SSL과 TLS의 역사

SSL의 역사는 예전에 브라우저를 만들던 Netscape에 의해 개발되어 SSL 1.0은 대중에게 공개되지 않았고, 1995년에 SSL 2.0이 처음으로 등장했다. 하지만 몇가지 취약점이 발견되어 1996년에 SSL 3.0 으로 빠르게 대체 되었다. (버전 2.0 및 3.0은 때로 SSLv2, SSLv3으로 표기된다)

TLS는 회사가 독점할 수 있고, 여러가지 이유IETF(국제 인터넷 표준화 기구)에서 1999년에 SSL 3.0을 기반으로 TLS 1.0으로 발표했고, 그 뒤로 1.1, 1.2, 1.3까지 나오게 되었다.

TLS로 부르겠다.

SSL, TLS 두 키워드는 다른게 맞지만 SSL은 TLS를 지칭한다고 생각하면 될 것 같다. SSL보다는 최신의 TLS로 불려야 하는게 맞지 않을까? 생각이 들었다.

그러므로 SSL과 TLS 두 키워드 모두 사용해서 글로 정리하면 혼동이 올 수 있어 이번 글에서는 TLS로 표기한다.


📌 TLS 등장

모든 것은 어떠한 문제를 해결하기 위해 등장한다. 그렇다면 TLS는 왜 등장했을까? 자세히 알아보자.

목적지까지 경로

그림[4] - traceroute로 목적지까지 경로 알아내기

리눅스에서 traceroute 명령어로 현재 나의 위치부터 목적지(google.co.kr)까지 도달할 때 까지의 경로를 볼 수 있다. 그림[4]을 보면 여러 경로를 거친다는 것을 알 수 있다.

무엇이 문제인가?

그림[5] - A에서 Z까지 경로

A에서 Z로 "Hello" 메세지를 보낸다고 가정해보자. 도착 지점까지 수 많은 경로를 거쳐야 한다면 여기서 어떤 문제가 발생할 수 있을까?

  1. 보내는 지점(A), 도착 지점(Z) 뿐만 아니라, 각각의 경로에서 데이터를 훔쳐볼 수 있다.
  2. 호스트(A)에서 보냈다고 확신할 수 없다. 예를 들어 중간 지점(D)에서 호스트(A)라고 속일 수 있다.
  3. 중간 지점(D)에서 데이터를 변경할 수 있다.

그렇다면 재밌는 예시를 한번 들어보자.

그림[6]

철수가 영희에게 메시지를 보내는데 여러 경로를 거친다면, 질투심을 가진 민수가 중간 지점에서 지켜보고 있다가 메세지를 가로채서 변조 할 수 있다. 그렇게 되면 정상적으로 메세지를 보내지 못하는 상황이 발생하게 된다.

그래서 위와 같은 상황(?)을 막기 위해 TLS(Transport Layer Security)가 등장했다.


📌 TLS에 대해

TLS의 강력함

TLS는 이 세 가지 보안 목표를 달성함으로써, 안전한 통신이 가능할 수 있게 만들었다.

1. 기밀성 (Confidentiality): 암호화를 통해 실제 데이터보내는 쪽(철수)과 받는 쪽(영희)에서만 확인이 가능하다.

그림[7] - 암호화

2. 인증성 (Authenticity): 인증을 통해 발신자를 확인하여, 주고 받는 사람이 맞는지 확인 할 수 있다.

그림[8] - TLS 인증서

3. 무결성 (Integrity): 중간에 데이터가 위/변조 되지 않았음을 보장한다.

데이터의 무결성을 제공하기 위해 해시 함수(hash function)키 있는 해시 함수(keyed hash function)가 있다. 우리가 중점으로 봐야 할 것은 키 있는 해시 함수(keyed hash function)의 여러 종류 중에 메시지 인증 코드(message authentication code, MAC)이다.

그림[9] - 키에 따라 달라지는 해시 값 (예시)

메시지 인증 코드는 키에 따라서 메시지를 넣었을 때 나오는 해시 값이 달라지는 것이 특징이다. 철수와 영희는 같은 키를 가지고 있어, 같은 해시 값을 계산해 낼 수 있다. 그러므로 철수가 보낸 메세지가 변조되지 않았다는 무결성을 보장할 수 있다.

TLS는 어디에?

그림[10] - 응용 계층과 전송 계층 사이에 있는 TLS

TLS는 OSI 7계층 중에 특정 계층에 속한것이 아닌, 전송 계층 응용 계층 사이에 독립적인 계층을 만들어 동작한다. 데이터를 전송할 때는 TLS 계층에서 암호화 해서 하위 계층으로 보내고, 데이터를 받을 때는 TLS 계층에서 복호화하여 상위 계층으로 보낸다.

 


📌 결론

  1. TLS의 3가지 보안 목표인 기밀성 (Confidentiality), 인증성 (Authenticity), 무결성 (Integrity)을 지켜, 안전한 서비스를 제공받을 수 있다.
  2. TLS는 응용 계층과 전송 계층 사이에서 데이터를 암호화, 복호화한다.
  3. 개인적인 생각으로 SSL이라고 명칭하는 것보다는 최신의 TLS로 불리는게 맞지 않나?

https://www.youtube.com/watch?v=EPcQqkqqouk

 

[버즈빌의 누구나 궁금해하는 개발 이야기] 보안 프로토콜, TLS 1.3 - 모비인사이드 MOBIINSIDE

[버즈빌의 누구나 궁금해하는 개발 이야기] 보안 프로토콜, TLS 1.3 - 모비인사이드 MOBIINSIDE

www.mobiinside.co.kr

 

SSL-TLS HTTPS 란? 암호화 통신방법 설명

SSL-TLS HTTPS 란? 암호화 통신방법 설명 SSL , TLS 의 차이점을 알고 있을까요~? 그냥 보안이 조금 더 강화된 통신방법~? 그렇게만 이해해도 충분하답니다. 이글에서 다루는 부분은 SSL 통신이 어떤 과정을 통해..

soul0.tistory.com

 

[정보보안] SSL(Secure Socket Layer) 이란

현재 근무 중인 업체에서 SSL 인증서 적용 작업이 필요하다고 합니다. SSL 인증서관련 필요한 것이 무엇인지에 대한 요청이 있었습니다. 간단하게 SSL에 대해 정리해보겠습니다. 1. SSL 개념 잡기 SSL의 개념에 대..

12bme.tistory.com

 

SSL/TLS 핸드세이크 [정보통신기술용어해설]

 

www.ktword.co.kr