article thumbnail image
Published 2021. 10. 31. 13:25

목차

  1. HTTP vs HTTPS
  2. SSL/TLS
  3. SSL 통신 과정

1. HTTP vs HTTPS

1.1. HTTP

Hyper Text Transfer Protocol

서로 다른 시스템들 사이에서 통신을 주고 받게 하는 가장 기본적인 프로토콜이다.

서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용한다.

한편, HTTP는 서버에서 브라우저로 전송되는 정보가 암호화되지 않는다는 문제점을 가지고 있다.

그래서 데이터가 쉽게 도난 당할 수 있다.

 

1.2. HTTPS

HTTPS는 HTTP에 SSL을 사용한 프로토콜이다.

HTTP는 전송되는 정보가 암호회되지 않는 문제점이 있었는데, HTTPS는 이 문제를 SSL을 활용해서 해결한다.

 

SSL은 서버와 브라우저 사이에서 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고받을 때, 해당 정보가 도난당하는 것을 막아주기 때문이다.

 

여기서 한가지 짚고 갈 점은, HTTPS는 HTTP 자체를 암호화하는 것은 아니다.

HTTP를 사용해서 운반하는 내용, 즉 HTTP Message body를 암호화 한다.

이때, HTTP header는 암호화되지 않는다.

 

1.3. 왜 HTTPS를 사용해야 하는가?

첫번째는 보안성을 위해서이다.

 

HTTP로 데이터를 전송하면 ,네트워크로 전달되는 데이터는 원본 그 자체이다.

그래서 해커가 중간에서 가로챈 후, 이 데이터를 보면 해당 데이터에 어떤 내용이 있는지 바로 알 수 있다.

 

HTTP와 달리 HTTPS로 전송할 때는 데이터를 암호화해서 전송한다.

그래서 해커가 중간에서 데이터를 가로채도, 데이터는 암호화되어 있기 때문에 이 데이터가 어떤 내용을 가지고 있는지는 알기 어렵다.

그래서 HTTP가 아닌 HTTPS로 데이터를 전송해서 보안성을 확보해야 한다.

 

두번째는 검색엔진 최적화를 위해서이다.

구글은 HTTPS를 사용하는 웹 사이트에 가산점을 부여한다.

그래서 HTTP를 사용하는 건 큰 마이너스 요소가 된다.

자신의 웹 사이트가 검색 엔진에 더 빈번하게 노출되고 싶다면, HTTPS는 불가피한 선택이다.

 

또한 가속화된 모바일 페이지, 즉 AMP를 만들 때는 HTTPS를 사용해야만 한다.

AMP는 모바일 기기에서 컨텐츠를 훨씬 빠르게 로딩하기 위한 방법으로, 구글에서 만들었다.

모바일 친화적은 웹 사이트를 만들고, 모바일 검색 순위를 증가시키는게 점점 더 중요해진 요즘에, 결국 HTTPS로 전환하는 것이 필수적이다.


2. SSL/TLS

SSL의 업그레이드 버전이 TLS이다.

두 단어를 동일하게 표현해서 두 단어 중 무엇을 써도 무방하다.

 

위의 두 사이트는 SSL 인증서를 무료로 발급해주는 사이트이다.

 

2.1. SSL은 무엇일까?

Secure Sockets Layer의 약자로, Netscape 사에서 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜이다.

SSL은 공개키/개인키, 즉 공개키 방식과 대칭키 방식을 혼합해서 사용한다.

왜 두 방식을 함께 사용할까?

 

2.2 대칭키, 공개키

먼저 공개키와 대칭키 방식이 무엇인지 알아보자.

대칭키 방식은 동일한 키로 암호화와 복호화를 수행하는 방법이다.

그래서 누구든지 암호화에 이용된 키를 가지고 있다면, 해당 데이터를 쉽게 복호화할 수 있다.

대칭키 방식은 암호화와 복호화가 쉽다는 장점을 가지고 있다. 반면, 키를 배송할 때 문제가 된다.

즉, 암호화할 때 사용한 키를 원본 그대로 전달하고 있고, 해커가 암호화한 데이터를 가로채면 이 데이터가 어떤 내용을 갖고 있는지 쉽게 해독할 수 있다.

 

공개키 방식은 서로 다른 키로 암호화와 복호화를 수행하는 방법이다.

그래서 공개키 방식은 비대칭키 방식으로도 불린다.

즉, 데이터 암호화 시에는 공개키를 사용하고, 데이터 복호화 시에는 개인키를 사용한다.

 

공개키로 암호화한 데이터는 오직 개인키로만 복호화할 수 있기 때문에 누구든지 공개키를 가져도 상관이 없다.

공개키는 단어 그대로 공개키이기 때문에 중간에 해커가 가로채도 문제가 되지 않는다.

 

해커가 중간에 전송되는 데이터를 가로채도, 자신이 가지고 있는 키로 확인한다.

공개키 방식에서는 개인키로만 복호화 할 수 있기 때문에, 공개키로 무슨 짓을 해도 알 수가 없다.

 

정리하면, 공개키 방법은 공개키를 무한대로 나눠줘도 괜찮기 때문에 키 배송 문제는 없다.

그렇지만 공개키 방식은 대칭키 방식보다 암호화 연산 시간이 더 소요되어 비용이 크다.

결론적으로 대칭키 방식의 장점이 공개키 방식의 단점이 되고, 공개키 방식의 장점이 대칭키 방식의 단점이 된다.

 

그래서 SSL은 두 방식을 모두 섞어서 사용한다.

 

2.3. SSL은 왜 필요할까?

서버와 브라우저 간 전송되는 데이터를 외부의 공격자로부터 보안하기 위해 필요하다.

암호화의 대상은 비밀번호나 개인 정보등이 해당된다.


3. SSL 통신과정

SSL은 공개키 방식과 대칭키 방식을 혼합해서 사용한다고 하였다. 

좀 더 구체적으로 말하자면, SSL은 공개키 방식으로 대칭키를 전달한다.

그리고 이 대칭키를 활용해서 암호화와 복호화를 하고, 서버와 브라우저간 통신을 진행한다.

 

 

  1. A에서 B로 접속 요청을 보낸다.
  2. B는 A에게 자신의 공개키를 전송한다.
  3. A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화 한다.
  4. 이렇게 암호화한 자신의 대칭키를 B에게 전달한다.
  5. B는 A의 대칭키를 자신의 개인키로 복호화한다.
  6. 복호화 결과로 A의 대칭키를 얻어낼 수 있다.
  7. 이렇게 얻어낸 대칭키를 활용해서 A와 B는 안전하게 통신한다.

 

즉, 데이터 암호화와 복호화를 위한 한 쪽의 대칭키를 다른 쪽의 공개키로 암호화하여 전송하면,

반대편에서 자신의 개인키로 복호화하여 그 반대편의 대칭키를 알아내고

이 대칭키를 바탕으로 서로 통신을 하게 된다.

 


출처 : https://www.youtube.com/watch?v=wPdH7lJ8jf0&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=6 

 

 

복사했습니다!