본문 바로가기
Web

[Web] HTTPS와 HTTP의 차이

by DuncanKim 2022. 7. 1.
728x90

[Web] HTTPS와 HTTP의 차이

 

✏️ HTTPS란 무엇인가?

(Hyper Text Transfer Protocol Secure)

HTTP에 S, 즉 데이터 암호화가 추가된 프로토콜이다. HTTPS를 설명하기 위해서는 전신인 HTTP를 설명하지 않을 수가 없다.

 

HTTP는 클라이언트(사용자)가 요청(request)을 서버에 보내면 서버는 HTTP 응답(response)을 해주는 구조에서 작동한다. 그리고 stateless 한데, state(상태)를 저장하지 않는다는 뜻이다. 바늘로 찌르면 그 부분의 몸이 움찔할 뿐, 다른 부분을 움찔하지는 않는 것 처럼, 어떤 요청이 오면 어떤 요청에만 응답을 하고, 다른 응답과는 연관되어있지 않다는 이야기이다.

 

이 때문에 클라이언트가 요청을 보내고 응답을 받은 후 다시 요청을 보낼 때에는 전에 있었던 요청에 대해 알지 못한다. 그래서 보완적으로 쿠키, 세션, 캐시 등을 활용한다.

 

어떤 통신을 함에 있어서는 제3자의 침투가 예상이 될 수 있다. 그런데 HTTP는 문서 내용 자체를 전송하는 것이기 때문에 정보 탈취의 가능성이 있다. 그래서 이 내용을 암호화하여 통신을 하게 되었는데 그것이 바로 HTTPS이다.

 

암호화 방식에는 대칭키 방식과 비대칭키 방식이 있다. 아래에서 간단히 살펴보겠다.

 

✏️ 대칭키 vs 비대칭키

 

대칭키 방식

  • 클라이언트와 서버가 '동일한' 키를 사용해서 암호화 - 복호화(암호를 다시 평문화)를 진행한다.
  • 키 값을 알지 못하면 복호화시키지 못한다.
  • 만약에 키가 노출되면 매우 위험하지만 연산 속도가 빠르다.
  • 어쨌든 특정한 '키'를 공유해야 하기 때문에 보안상의 문제는 발생한다.

 

비대칭키 방식(개인키 방식, 공개키 방식)

  • A키로 암호화하면 B키로 복호화할 수 있고, B키로 A키를 복호화할 수 있다.
  • 키가 노출되어도 비교적 안전하지만, 연산 속도가 느리다는 단점이 있다.
  • 공개키(모두에게 공개 가능)와 개인키(나만 알고 있어야 하는 것)를 가지고 암호화를 진행한다. 

포털 사이트가 우리에게 뿌린 공개키가 정품인지는 어떻게 확인하는가?

Certificate Authority, CA가 그것을 확인해준다. 브라우저에는 CA 목록이 내장되어 있다.

 

비대칭키 방식의 경우 공개키로도 암호화가 가능하고, 개인키로도 암호화가 가능하다.

 

비대칭키만 사용하는 것은 컴퓨터에 무리를 많이 준다.

그래서 ‘대칭키’를 공유할 때, 비대칭키를 이용해서 공유하고, 대칭키 방식으로 정보를 서로 전달하기도 한다.

네이버도 개인키를 가지고 있고, 대중들 각자도 개인키를 가지고 있다.

 

 

✏️ HTTPS의 연결 과정

 

  1. 클라이언트(브라우저)가 서버로 최초 연결 시도
  2. 서버는 공개키(엄밀히는 인증서)를 브라우저에게 전달
  3. 브라우저는 인증서의 유효성을 검사하고 세션키를 발급
  4. 브라우저는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 획득
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 암호화/복호화를 진행

 

 

✏️ HTTP, HTTPS의 차이 정리

 

- HTTP는 암호화가 추가되지 않았고, HTTPS는 추가되어 있다.
- HTTP는 80번 포트를 사용하지만 HTTPS는 이와 다르게 443번 포트를 사용한다.
- HTTPS는 내가 사이트에 보내는 정보들을 제3자가 못보게 한다.
- HTTPS는 접속한 사이트가 믿을 만한 곳인지를 알려준다.

 

728x90

댓글