본문 바로가기
IT/개발지식

SSL, TLS, HTTPS는 무슨 차이인가요?

by InfopediaBK 2023. 2. 9.
728x90

우선, 이번에 소개하고자 하는 SSL, TLS, HTTPS는 모두 웹에서 전달되는 정보들을 보호하기 위한 기술들입니다. 온라인 쇼핑과 은행 업무에서부터 관련된 많은 애플리케이션이 있고 대부분 웹에 의존하고 있는 만큼 웹 보안에 대한 중요성은 무시할 수 없는 부분입니다.

 

이때 필요한 정보들은 민감한 정보일 가능성이 높고 이 정보들에 대한 보안을 유지하기 위해 HTTPS(HyperText Transfer Protocol Secure) 및 SSL(Secure Socket Layer), TLS(Transport Layer Security)이라는 개념이 도입되었다고 볼 수 있습니다.

HTTP의 문제

HTTP는 웹 상에서 HTML을 전송하기 위한 통신 프로토콜을 의미합니다. 이때 바이너리 데이터가 아닌 단순한 텍스트 형태로 데이터의 전송이 이뤄지기 때문에 보안에 문제가 생길 수 있습니다.
예를 들어, 우리는 일반적으로 클라이언트의 데이터를 서버로 전송하고 이에 대한 응답을 받는 형태로 애플리케이션을 구현하게 되는데 만약 이 데이터를 누군가 중간에서 가로챘다고 가정을 해봅시다.

 

이때 이 가로챈 데이터가 단순히 텍스트의 형태를 가지고 있다면 분명히 문제가 생길 것입니다. 이를 보안한 것이 HTTPS라는 프로토콜이며 이때 사용되는 통신 프로토콜이 SSL과 TLS라고 생각하면 됩니다.

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)는 표준 HTTP와 SSL 또는 TLS를 결합한 웹 보안 통신 프로토콜입니다. HTTPS를 사용하여 웹 사이트를 방문하면 URL이 "http" 대신 "https"로 시작되고 위 사진처럼 브라우저에 자물쇠 아이콘이 표시됩니다.

 

즉, https가 적용된 웹 사이트의 경우 클라이언트와 서버 간의 전송 데이터들이 암호화되고 보호되고 있다고 생각하면 됩니다.
HTTPS를 구현하기 위해서는 데이터의 암호화가 필요하고 크게 대칭키 암호화와 비대칭키 암호화가 있습니다.

대칭키 암호화 기법

대칭키 암호화 기법은 이름 그대로 대칭 즉, 암호화와 복호화를 위한 키가 동일한 것입니다. 클라이언트와 서버가 암호화하는 키와 복호화하는 키를 모두 알고 있다면 쉽게 암호화와 복호화가 가능합니다. 다만, 문제는 이 대칭키를 공유하기 힘들다는 것입니다.

 

최초에 클라이언트와 서버 간의 연결을 설정할 때, 이 키를 공유한다고 가정해 봅시다. 이 키를 누군가가 중간에 가로챈다면 암호화 방식 자체를 바꿔야 하는 큰 문제로 번질 수 있습니다.

비대칭키 암호화 기법

비대칭키 암호화 기법은 예상하셨겠지만 대칭키 암호화와 반대로 암호화하는 키와 복호화하는 키가 다릅니다. 그렇다 보니 중간에 키 값을 가로챈다고 하더라도 큰 문제가 발생하지 않습니다.

 

다만, 생각해 볼 필요가 있는 부분이 “서버에서 받은 데이터가 유효한 즉, 신뢰성 있는 클라이언트에서 전송된 데이터인지 어떻게 알 수 있을까? 하는 부분입니다.

CA

서버로 들어온 데이터가 신뢰성 있는 데이터라는 것을 확실히 하기 위해 SSL, TLS인증서를 사용하게 됩니다. 그리고 이 인증서를 발급해 주는 기관을 우리는 CA라고 부릅니다. 브라우저는 이런 CA 목록을 내부적으로 가지고 있고 비대칭키 암호화를 통해 암호화된 데이터를 서버로 전송했을 때 서버 입장에서는 SSL/TLS 인증이 완료된 데이터에 대해서만 신뢰하는 것입니다.

SSL과 TLS

SSL(Secure Sockets Layer) 및 TLS(Transport Layer Security)는 인터넷을 통한 보안 통신을 설정하기 위해 가장 널리 사용되는 통신 프로토콜입니다. 두 프로토콜 모두 클라이언트와 서버 간의 데이터 전송 과정에서 민감한 정보들을 보호하는 데 사용됩니다. TLS는 SSL의 등장 이후 나온 프로토콜이며 보통 둘은 상호 대체 관계로 사용되곤 합니다.

차이점

SSL은 Netscape가 1990년대에 개발한 원래 프로토콜입니다. 1999년에 SSL은 인터넷 기술 특별 위원회(IETF)에 의해 개발된 TLS로 대체되었습니다. 사실, SSL 3.0 버전과 TLS의 최초버전은 크게 차이가 나지 않지만, Netscape가 업데이트에 참여하지 않게 되면서 소유권 변경을 위해 이름이 변경되었습니다.

 

두 프로토콜은 모두 같은 목적을 가지고 있지만 몇몇 차이점이 있고 이러한 차이점들 때문에 최근에는 SSL보다는 TLS의 사용을 권장하고 있습니다.

  • 버전: SSL에는 세 가지 버전(1.0, 2.0 및 3.0)이 있는 반면 TLS에는 여러 버전(1.0, 1.1, 1.2 및 1.3)이 있습니다. TLS 버전 1.0 및 1.1에는 취약성이 있는 것으로 확인되었기 때문에 최신 버전의 사용을 권장하고 있습니다.
  • 지원되는 알고리즘: SSL은 제한된 수의 암호화 알고리즘만 지원하는 반면 TLS는 더 강력한 암호화 및 인증 방법을 포함하여 더 많은 알고리즘을 지원합니다.
  • 핸드셰이크 프로세스: 두 프로토콜 모두 핸드셰이크 프로세스를 사용하여 클라이언트와 서버 간에 연결을 설정합니다. 그러나 TLS의 핸드셰이크 프로세스는 더 많은 옵션을 제공하고 그만큼 보안성이 더 좋다고 볼 수 있습니다.

결론

결론적으로 SSL, TLS 및 HTTPS는 인터넷을 검색할 때 민감한 정보들을 보호하기 위해 필수적인 웹 보안의 중요한 요소들입니다. 개발자로서 일하다 보면 배포 과정에서 HTTPS를 적용해야 한다라는 이슈가 항상 나오곤 합니다. 조금은 부족하지만 HTTPS의 원리에 대해 어느 정도 정확하게 이해할 수 있는 포스팅이었기를 바랍니다.

728x90

'IT > 개발지식' 카테고리의 다른 글

애자일 방법론이란?  (0) 2023.02.11
XSS와 CSRF  (0) 2023.02.10
CORS (Cross-Origin Resource Sharing)와 JSONP (JSON With Padding)  (0) 2023.02.08
JWT(JSON Web Token)란?  (0) 2023.02.07
객체지향 프로그래밍이란?  (0) 2023.02.06

태그

, , ,

댓글0