기록공간

HTTPS란 무엇인가? 본문

Network/HTTP

HTTPS란 무엇인가?

입코딩 2021. 9. 13. 10:34
반응형

HTTPS 개요

HTTPSHTTP over Secure Socket Layer 의 약자로 SSL(Secure Socket Layer)을 이용한 HTTP 통신 방식이다. HTTP에 대해서 자세한 내용이 궁금하다면 하단 게시물을 참고하자.

 

HTTP는 무엇인가?

HTTP는 HyperText Transfer Protocol의 약자로 WWW(월드 와이드 웹) 상에서 정보를 주고받을 수 있는 프로토콜이다. 즉 HyperText로 이루어져 있는 HTML(HyperText Markup Language) 문서를 서로 주고받을 수 있..

lipcoder.tistory.com

 

HTTP의 치명적인 단점, 보안

HTTP는 웹을 지탱하는 심플한 기술이지만 치명적인 단점이 있다. 브라우저와 웹서버가 통신함에 있어서 주고 받는 데이터가 암호화 되지 않고 그대로 전송 되어진다는 점이다.

 

이러한 도청을 스니핑(sniffing)이라고 한다.

HTTP는 인터넷이라는 통로를 이용해 웹 서버와 브라우저가 서로 통신하게 해주므로, 해커가 그 중간 통로를 도청하게 된다면 중요한 정보들을 탈취할 수 있다. 만약 데이터 일부가 로그인 기능에서 사용하는 아이디 및 비밀번호와 같은 데이터라면  매우 치명적일 수 있다. 더 나아가 해커는 정상 데이터를 중간에서 변조시킬 수도 있다.

 

HTTPS 등장 

HTTPS를 단순하게 설명하면 위의 HTTP의 단점을 극복하고자 HTTP에 SSL이라는 기술을 더한 것이다. 여기서 복잡한 암호화 알고리즘이나 SSL 암호화 전달 방식 등은 내용이 어려워 질 수 있으므로 설명을 생략한다.

 

HTTPS는 HTTP 통신을 함에 있어 데이터를 암호화 하여 통신한다. 따라서 중간에 통신을 도청 할지라도 내용을 알아볼 수 없다. 그러면 웹 서버에서는 브라우저에서 보내는 데이터 정보을 어떻게 알 수 있을까?  

 

암호화, 암호화 키(Key)

HTTPS는 암호화 통신을 한다고 언급했다. 그러면 암호화와 암호화 키가 무엇인지 간략하게 짚고 넘어야가 할것이다. 여기서는 매우 많은 복잡한 설명들은 생략되기 때문에 실제와 다를 수 있다. 대략적인 개념은 같기에 이를 유의하여 보도록 한다.

 

데이터 암호화에는 키(key)가 필요하다. A와 B가 어떤 데이터에 대해서 똑같은 암호화 알고리즘을 사용한다면 같은 결과가 나올것이기에 어떤 암호화 알고리즘을 사용하는지만 알아낸다면 암호화된 데이터일지라도 쉽게 답을 유추할 수 있다. 그러나 암호화 키라는 변수를 두면 암호화 결과를 달라지도록 할 수 있어 데이터를 예측 할 수 없게 된다.

 

암호화시 사용하는 암호화 키는 매우 중요하며 해커에게 노출되어서는 안된다. 그런데 중요한 점은 암호화된 데이터를 다시 원래 데이터로 복호화 하는 과정에서도 키가 필요하다는 점이다. 이는 열쇠로 자물쇠를 잠구고 다시 그 열쇠로 열어야 하는 것과 같은 이치이다.

 

따라서 암호화된 데이터를 주고 받기 이전에 통신할 대상과 키를 분배하여 공유해야 한다. 그런데 키를 공유하게 된다면 키를 주고 받는 과정에서 해커에게 노출될 수 있다. 해커가 키를 가로챈다면 데이터를 암호화 하여 통신한다고 하여도 데이터를 마음대로 복호화 하여 들여다 볼 수 있을것이다. 그러면 그 키를 또 암호화해야 할까? 그럼 또 그에 대한 암호화 키가 필요하게 될 것이고 점점 문제만 복잡해질 뿐 해결책이 되지는 못할 것이다.

 

SSL, 인증서, 인증기관(CA)

SSL은 암호화 통신과 암호화 키를 공유할 수 있도록 하는 기술이다. 이때 등장하는 것이 인증기관이다. 

인증기관은 CA(Certificate Authority)라고 하는데, 인증기관은 암호화에 사용하는 키를 담은 인증서를 발급하고 관리한다.

 

인증기관은 보안상 매우 중요한 역할을 하기 때문에 전 세계적으로 신뢰받는 기관이 운영한다. 실례로 어떤 인증기관은 보안 사고가 발행해 인증기관 목록에서 제외된 사건이 있었다. 신뢰를 잃어버렸기 때문이다.

 

웹 서버를 운영하는 웹 사이트(네이버, 구글 등...)는 암호화키를 생성하여 하나는 자신이 보관하고 하나는 인증기관에게 넘겨 인증서를 발급 받는다. 그리고 인증기관은 인증서를 발급 및 관리해주는 대신 돈을 받는다. 발급된 인증서는 인증기관이 보관한다.

 

 

HTTPS 통신 과정

인증기관에 인증서를 의뢰할 때 통신시 사용할 암호화 키와 웹사이트 주소를 넘겨주었고 이를 바탕으로 인증기관은 인증서를 만들어 보관하였다. 

 

여기서 알아야 할 사실이 있는데, 브라우저는 이미 인증기관 목록을 가지고 있다는 사실이다. 브라우저를 개발하는 기업에서 개발시 인증기관 목록을 미리 넣어두기 때문이다. 크롬이나 파이어폭스, 인터넷 익스플로러 등에는 인증기관 목록이 담겨져 있는 것이다. 

 

따라서 브라우저는 웹 서버와 통신하기 이전에 인증기관 리스트를 확인하여 인증기관에 현재 자신이 통신하려는 웹 서버의 인증서가 있는지 확인하고 있으면 인증서를 받는다.

 

인증서에는 웹서버가 인증서를 발급할때 첨부했던 암호화키가 들어있으므로 이것을 가지고 데이터를 암호화하여 웹 서버와 통신한다. 웹 서버는 최초 인증서를 발급할 때 사용했던 자신의 암호화 키로 복호화 하면 된다. 

 

제 3자인 인증기관이 암호화 키를 인증서에 담에 관리하는 SSL을 사용하기 때문에 암호화 키를 분배하는 과정에서 탈취 당하지 않을 수 있으며, 분배된 암호화 키를 통해서 암호화 통신을 할 수 있는 것이다.


출처 : https://dololak.tistory.com/541

반응형

'Network > HTTP' 카테고리의 다른 글

[HTTP 강의] 1. 인터넷 네트워크  (0) 2022.01.21
[HTTP 완벽 가이드] HTTP 개관  (0) 2021.04.29
HTTP는 무엇인가?  (0) 2021.02.09
Comments