본문 바로가기
Programming/NETWORK

HTTP, HTTPS란 (2)

by 해도 Haedo 2022. 11. 16.
HTTP, HTTPS란 (1) - 1편을 안 보셨다면 이전 글을 보고 오는 걸 추천드립니다.

 

안녕하세요. 뉴핀입니다.

 

지난 포스팅에서 HTTP와 HTTPS 중 HTTP에 대한 내용을 다뤘습니다. 이번 포스팅에서는 HTTPS가 무엇인지 알아보겠습니다.

 


1. HTTPS란

HTTP(HyperText Transfer Protocol) + SSL(Secure Socket Layer) -> HTTPS

기존의 HTTP통신에 SSL 데이터 암호화가 추가된 프로토콜입니다.
(SSL은 현재 TLS(Transport Layer Security)로 발전되었지만 많은 사람들이 사용하는 용어인 SSL을 아직 포함하여 SSL/TLS라고 사용하고 있습니다.)
HTTP는 80번 포트를 사용했었다면 HTTPS는 443번 포트를 사용합니다.
통신 중간에 해커가 데이터를 탈취하더라도 정보를 알 수 없도록 암호화를 지원해줍니다.

 


2. 대칭키와 비대칭키

HTTPS 프로토콜은 데이터를 암호화하는데 대칭키와 비대칭키 암호 방식을 모두 사용합니다.

  • 대칭키
    • 클라이언트와 서버가 동일한 키를 사용하여 암호화/복호화를 진행합니다.
    • 같은 키를 사용하여 암복호화 속도가 빠릅니다.
    • 키가 노출되면 데이터를 탈취당할 위험이 큽니다.
  • 비대칭키
    • 클라이언트와 서버가 서로 쌍을 이루는 다른 키를 사용하여 암호화/복호화를 진행합니다.
    • 다른 키를 사용하여 암복호화 속도가 대칭키에 비해 느립니다.
    • 키가 노출되면 비교적 안전합니다.

우선 대칭키와 비대칭키가 어떤 것인지 확인만 하고 뒷부분에서 HTTPS는 어떻게 대칭키와 비대칭키를 사용하는지 알아보겠습니다.

 


3. SSL이란

앞에서 말한 것처럼 SSL이란 Secure Socket Layer의 약자로 서버와 클라이언트가 통신할 때 데이터를 암호화해주는 보안 기능을 가진 암호화 프로토콜입니다. 

SSL은 CA(Certificate Authority)라는 인증기관들에서 발급합니다.

SSL/TLS

그림을 통해 SSL이 어디서 동작하는지 확인해보겠습니다.
SSL은 어느 네트워크 계층에 속해 있다기보다 네트워크 통신에서 전송계층과 응용계층 사이에서 동작하는 프로토콜입니다.
전송계층과 응용계층 사이에서 데이터 통신이 이루어질 때 데이터를 안전하게 암호화해 전송하게 됩니다!

 


4. SSL 동작 방법

앞서 설명하기로 SSL은 대칭키와 비대칭키를 모두 사용한다고 했습니다.
SSL은 대칭키의 장점과 비대칭키의 장점을 모두 사용해서 암호화를 진행하고 있습니다.
간략하게 대칭키의 장점은 암복호화가 빠르다! 비대칭키의 장점은 대칭키에 비해 더욱 안전하다!입니다.

브라우저 사용자가 접속한 HTTPS 사이트는 우선 데이터의 암복호화를 진행할 대칭키를 만듭니다. 대칭키가 암복호화할 땐 빠르니깐요!
그리고 만든 대칭키를 사용자에게 전달할 때 사용할 비대칭키를 만들어 사용자에게 전달합니다.
비대칭키는 공개키와 비밀키 서로 다른 키를 사용하여 암복호화를 진행하게 됩니다.
사이트는 클라이언트별로 공개키와 비밀키를 만들어 비밀키는 자신이 보유하고 있고 공개키를 클라이언트에게 전달합니다.
사이트는 파일을 암복호 할 대칭키를 비밀키로 암호화하여 클라이언트에게 전송하고
클라이언트는 아까 받은 사이트의 비밀키를 통해 암호화된 대칭키를 받고 아까 받은 공개키를 통해 복호화하여 대칭키를 받게 됩니다.

이런 방법을 통해 SSL은 대칭키와 비대칭키의 장점을 모두 사용하여 데이터를 주고받게 됩니다.

 


5. 마치며

두 번의 포스팅을 통해 http통신과 https통신에 대해 알아보았습니다.
이번 포스팅을 하면서 저도 다시 한번 공부를 해보게 되었네요 ^~^.

http/https에 대해서 최대한 간략하게 꼭 알아야 하는 내용에 대해 요약해서 정리해보았는데요.
혹시 훨씬 자세히 알고 싶으시다면 생활코딩-https와 ssl인증서를 읽어보시는 걸 추천드립니다!
개발자라면 모두 아는 생활코딩님께서 정말 자세히 잘 설명해주셨더라고요. 저도 많은 부분 참고해서 글을 작성했습니다.

감사합니다!!

'Programming > NETWORK' 카테고리의 다른 글

HTTP, HTTPS란 (1)  (0) 2022.11.02

댓글