네트워크 - SSL-TLS

2020-11-16

컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.

-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의


Securing TCP

우리가 가장 많이 쓰는 트랜스포트 레이어 프로토콜은 TCP와 UDP 입니다.

그런데 과거에 TCP와 UDP가 암호화, 보안에 대한 생각이 없었습니다.

그렇기에 TCP와 UDP 데이터는 그냥 바로 인터넷에 뿌려집니다.

전혀 암호화 되어 있지 않고 아주 중요한 패스워드 같은 것도 인터넷에 그대로 뿌려집니다.

웹을 사용해서 웹 메일 같은 것을 쓴다고 하면 웹에 아이디와 패스워드가 있는데 도청이 가능하다면 그냥 오픈 된 채로 날아간다는 것입니다.

이런 문제점을 해결하기 위해서 TCP 연결, TCP 데이터를 암호화 해서 전달하는 방법을 사람들이 연구 했고,

그것이 SSL 또는 TLS라는 이름을 갖는 프로토콜 입니다.

TCP연결의 암호화 그리고 데이터 무결성,

데이터가 중간에 바뀌지 않는 것을 뜻하고 TCP로 연결 되어 있는

두 디바이스들이 서로 자신을 인증 할 수 있는, 자신이 특정 서버라고 했다면

정말 그 서버가 맞다는 것을 인증 할 수 있는 기능을 뜻합니다.

SSL은 인터넷의 애플리케이션 레이어에 해당하는 프로토콜입니다.

TCP에 얹혀져서 HTTP에 암호화 기능을 제공하는 프로토콜이라고 생각하면 됩니다.

SSL(Secured Socket Layer)/TLS(Transport Layer Security)

SSL은 95년과 96년에 2.0, 3.0이 연구 되었는데, 이 버전 3.0을 더 발전 시킨 것이 TLS 입니다.

SSL은 유사하며, TLS가 좀 더 강한 보안을 제공합니다.

그리고 더 강한 보안을 제공하려다 보니 SSL 보다는 TLS가 속도가 느린 특징이 있습니다.

SSL/TLS Principle

SSL과 TLS는 어떤 클라이언트가 서버에 접속을 하면 “안전한 SSL 연결을 만들어 보자”라고 request를 먼저 보냅니다.

그러면 서버가 이것이 “나에 대한 인증서야” 하고 알려 줍니다.

이 증명서에는 특정한 암호 코드가 들어 있고, 암호화 한 데이터는 해당 서버에서만 다시 풀어 볼 수 있습니다.

이렇게 certificate를 주게 되면 클라이언트는 이 후에 자신들이 사용 할 비밀 키, 비밀 암호 키를 certificate 정보로 암호화 해서 서버에 전달 하게 됩니다.

이 서버만 암호화 키를 알아 봄으로써 해석할 수 있게 되고, 해당 서버와 클라이언트만 특정한 암호화 된 코드를 가지고 데이터를 주고 받을 수 있게 됩니다.

그럼으로써 외부의 다른 침입자는 이 키를 알지 못하게 하기 때문에 정보를 해독 할 수가 없게 만듭니다.

HTTPS = HTTP + SSL/TLS

http 하고 접속을 했다 하더라도 접속 하는 순간에 https로 변경 되는 그런 사이트들을 종종 볼 수 있습니다.

이 https라는 것은 http에다가 SSL 또는 TLS를 더한, 결국 암호화 된 TCP연결을 사용 하는 http입니다.

그림에서 윗 부분은 HTTP에 해당하는, 커넥션이 안전하지 않다는 모습을 나타내고,

아랫 부분은 암호화 된 커넥션을 통해서 HTTPS는 여기에 해당 하는 모습입니다.