네트워크

HTTPS란?

rnrwk0502 2024. 7. 29. 23:18

HTTPS란?

HTTPS는 Hypertext Transfer Protocol Secure의 약자로 HTTP프로토콜의 보안이 강화된 버전이라고 할 수 있다.

 

HTTPS는 HTTP가 직접 TCP와 통신하는 소켓 부분을 SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)라는 프로토콜로 대체해서 사용하는 것이다.  ( SSL/TLS는 HTTP와는 독립된 프로토콜이다. )

https://feel5ny.github.io/2019/08/26/HTTP_004_01/

SSL / TLS란?

SSL은 직역하면 보안 소켓 레이어라는 뜻으로, 인터넷 상에서 데이터 전송 시에 안전하게 데이터가 오갈 수 있도록 도와주는 레이어다. 

 기본적으로 응용 계층의 경우 암호화 작업없이 전송된다. 때문에 HTTP를 쓰는 사이트에 접속할 때, 패킷을 잡아 응용 계층 관련 정보를 분석하면 쉽게 민감한 정보를 알아낼 수 있다. 

 하지만 HTTPS를 쓰는 사이트에 접속할 때 교환되는 패킷을 아무리 분석해도 정보를 얻을 수 없는데, SSL/TLS가 응용계층의 데이터를 암호화해주기 때문이다.

 

TLS는 SSL의 업데이트 버전으로 SSL의 최종 버전인 3.0과 차이가 크지 않다. 결과적으로 SSL과 명칭만 다르다고 볼 수 있다. (때문에 SSL로 많이 부른다.)

 

SSL/TLS의 주요 기능 

  • 공개키 인증서를 이용하여 서버, 클라이언트의 상호 인증
  • 메세지 인증코드에 의한 메세지 무결성 제공 
  • 메세지 압축 
  • 암호화용 세션 키 생성을 위한 키 교환
  • 생성된 공유 비밀키에 의해 암호화된 종단간 안전한 연결 통로 제공

 

SSL의 암호화 방식

SSL은 보안과 성능 상의 이유로 공개키 암호화 방식과 대칭키 암호화 방식을 적절히 섞어서 사용한다.

 

대칭키 방식하나의 키로 암호화와 복호화를 둘 다 할 수 있는 암호화 기법이다.

 예를 들면 보물 상자에 하나의 열쇠 구멍이 있고 거기에 맍는 열쇠 하나로 보물 상자를 열고 잠굴 수 있는 것과 같다.

 웹 통신으로 생각해보면 클라이언트와 서버가 각각 '1234'라는 키를 갖고 있다가 데이터가 왔을 때 해당 키로 복호화를 하고, 데이터를 보낼 때 같은 키로 암호화를 해 전송하는 방식이다.

 이런 대칭키 방식은 공개키 방식에 암호화/복호화 속도가 빠르다는 장점이 있지만, 키를 교환할 때 중간에 가로챌 위험이 있기 때문에 키를 안전하게 교환하기 어렵다는 단점이 있다.

 

이런 대칭키 방식의 문제를 해결하기 위해 탄생한 암호화 방식이 바로 공개키 방식이다.

 

공개키 방식공개키, 개인키라는 서로 다른 두 개의 키로 암호화,복호화를 하는 암호화 기법이다. 

공개키는 누구나 가질 수 있는 키지만, 개인키는 소유자 한 명만 가질 수 있는 키로 두 키는 늘 한 쌍으로 동작한다.

 예를 들어 빨간 열쇠와 파란 열쇠가 있고 보물 상자를 열때 두 개의 키가 모두 사용된다. 빨간 열쇠로 잠궜다면 파란 열쇠로만 열수 있고, 반대로 파란 열쇠로 잠궜다면 빨간 열쇠로만 열 수 있는 것이다.

 웹 통신으로 보면 공개키로 암호화한 데이터는 개인키로만 복호화할 수 있고, 반대로 개인키로 암호화한 데이터는 공개키로만 복호화할 수 있다.

 그래서 만약 서버가 개인키를 갖고, 클라이언트에게 공개키를 전달해 서로 데이터를 암호화해서 주고받는다면 중간에 누군가 공개키를 가로챘다고 해도 개인키를 모르기 때문에 데이터를 완전히 복호화할 수 없다.

 따라서 대칭키보다 더 안전하게 데이터를 주고받을 수 있는 점에서 장점이 있지만, 암호화 과정이 복잡하므로 속도가 느리다는 단점이 있다.

 

이러한 SSL방식을 적용하려면 인증서를 발급받아 서버에 적용시켜야 한다.

인증서사용자(웹브라우저)가 접속한 서버가 우리가 의도한 서버가 맞는지 보장하는 역할을 한다. 이러한 인증서를 발급하는 기관을 CA(Certificate Authority)라고 부른다. 공인인증기관의 경우, 사용자(웹 브라우저)는 미리 CA리스트와 함께 각 CA의 공개키를 알고 있다.

 

이제 순서대로 인증서 발급과정과 함께 어떤 식으로 사이트가 안전하게 사용자와 통신을 하는지 알아보자.

  1. 인터넷 사이트는 자신의 정보와 공개키를 인증기관에 제출한다.
  2. 인증기관은 제출된 데이터 검증절차를 거쳐 개인키로 사이트에서 제출한 정보를 암호화한다.
  3. 인증기관은 인증서를 발급하여 사이트에게 전달한다.
  4. 인증기관은 사용자(웹 브라우저)에게 자신의 공개키를 제공한다.

여기까지가 인증서가 발급되는 과정이다. 사용자가 사이트에 접속할 경우 그 다음은 어떻게 될까?

크게보면 HandShake, 세션, 세션종료 3단계로 이루어진다.

  1. 사용자가 사이트에 접속한다.
  2. 사이트는 자신의 인증서를 웹 브라우저에게 보낸다.
  3. 웹 브라우저는 미리 받았던 인증기관의 공개키로 해독하여 검증한다. 그러면 사이트의 정보와 공개키를 알게 된다.
  4. 웹 브라우저는 사이트와의 통신에 사용할 임시 대칭키를 생성한다.
  5. 3번에서 얻은 사이트의 공개키로 대칭키를 암호화해서 사이트에 보낸다.
  6. 사이트도 받은 대칭키를 자신의 개인키로 복호화해 대칭키를 얻는다.   (여기까지 HandShake단계)
  7. 웹 브라우저와 사이트는 공통으로 갖고있는 대칭키를 셰션키로 사용하여 대칭키 기법으로 데이터를 암호화하여 통신한다.   (셰션단계)
  8. 데이터 전송이 끝나면 세션을 종료해 통신을 마치고, 통신에서 사용된 셰션키도 함께 폐기한다.    (셰션종료단계)

 

 

출처

https://velog.io/@smc2315/HTTPS

 

HTTPS

HTTPS의 개념과 동작방식에 대해 살펴보자

velog.io

http://www.ktword.co.kr/test/view/view.php?m_temp1=1957&id=831

 

SSL/TLS

SSL/TLS, SSL, TLS   Secure Socket Layer, Transport Layer Security   안전 소켓 계층, 전송계층 보안(2023-08-06)

www.ktword.co.kr

https://devdy.tistory.com/14

 

[네트워크]HTTP와 HTTPS의 차이점 그리고 동작 방식

HTTP와 HTTPS의 차이점이 뭔가요? 음...HTTPS가 더 보안에 강하다는 점? 그럼 왜 보안에 강할까, 대체 어떤 차이 점이 있을까 이 글을 다 마쳤을 때 적어도 저 질문에 대해 단답으로 끝내는 일이 없도

devdy.tistory.com

https://brunch.co.kr/@swimjiy/47

 

그림으로 쉽게 보는 HTTPS, SSL, TLS

SSL과 TLS는 무슨 차이일까 | 지난 포스팅에서 웹 브라우저와 웹 서버 간에 데이터를 주고받기 위해 사용하는 인터넷 프로토콜인 HTTP에 대해 알아봤습니다. 1996년에 탄생한 이후부터 지금까지 HTTP

brunch.co.kr

https://babbab2.tistory.com/4

 

TLS(SSL) - 1. TLS의 암호화 방식(대칭키, 비대칭키)

안녕하세요, 소들입니다 :) 제 티스토리의 첫 포스팅 내용은 바로 TLS에 관련된 내용이에요. TLS가 뭐야? 하시겠죠? 그럼 먼저 SSL이란 단어는 들어보지 않으셨나요? OpenSSL이라든가 이도 익숙하지

babbab2.tistory.com

https://12bme.tistory.com/80

 

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

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

12bme.tistory.com