[CS] HTTP vs HTTPS

khj·2024년 10월 7일

Computer Science

목록 보기
1/25
post-thumbnail

HTTP(Hypertext Transfer Protocol)HTTPS(Hypertext Transfer Protocol Secure)는 웹에서 데이터를 주고받는 두 가지 주요 프로토콜입니다. 둘 다 인터넷 통신의 기본 프로토콜이지만, 보안의 측면에서 큰 차이가 있습니다. 이 글에서는 HTTP와 HTTPS의 정의, 통신 과정, 차이점 및 보안 기술인 SSL/TLS에 대해 자세히 설명하겠습니다.

1. HTTP란?

HTTP는 비암호화된 텍스트 기반 프로토콜입니다. 웹 브라우저와 서버 간 데이터를 주고받을 때 주로 사용됩니다. HTTP의 작동 방식은 클라이언트가 요청을 보내면 서버가 응답하는 구조입니다. 예를 들어, 사용자가 웹사이트에 접속하기 위해 URL을 입력하면 브라우저가 서버에 HTTP 요청을 보냅니다. 서버는 해당 페이지의 HTML 파일을 포함한 응답을 클라이언트에게 보내고, 브라우저는 이를 렌더링하여 사용자에게 표시합니다.

HTTP는 기본적으로 80번 포트를 사용하며, 이는 대부분의 웹 서버에서 설정되어 있는 기본 포트입니다. HTTP는 페이지 로딩 속도가 빠르다는 장점이 있지만, 암호화가 되어 있지 않기 때문에 보안 취약성이 큽니다. 네트워크 중간에서 누군가가 데이터를 가로챌 수 있으며, 이를 통해 사용자 개인정보가 유출되거나 피싱 공격에 노출될 위험이 존재합니다.

2. HTTPS란?

HTTPS는 SSL(보안 소켓 계층) 또는 TLS(전송 계층 보안)을 적용한 암호화된 프로토콜입니다. 데이터가 암호화되어 전송되기 때문에 중간에서 데이터를 탈취하더라도 그 내용을 알 수 없습니다. HTTPS는 기본적으로 443번 포트를 사용하며, 이는 SSL/TLS 암호화가 적용된 웹사이트에 대한 요청을 처리하기 위해 예약된 포트입니다.

HTTPS에서 SSL/TLS의 역할은 다음과 같습니다:

암호화: SSL/TLS는 데이터가 전송되는 동안 모든 정보를 암호화하여, 해커가 데이터를 가로챌 경우에도 내용을 이해할 수 없도록 만듭니다.

인증: SSL/TLS는 웹사이트의 신원을 검증하여 사용자가 접속하려는 서버가 진짜 서버인지 확인합니다. 이를 위해 서버는 SSL 인증서를 발급받아야 하며, 이 인증서는 신뢰할 수 있는 제3자 기관(인증기관, CA)에서 발급됩니다.

데이터 무결성: SSL/TLS는 데이터가 전송되는 동안 변경되지 않도록 보장합니다. 데이터가 전송 중에 손상되거나 변조되지 않았음을 확인할 수 있습니다.

3. 통신 과정 비교

HTTP 통신 과정

  1. 사용자가 웹 브라우저에 URL을 입력합니다.
  2. 브라우저는 해당 URL의 도메인 이름을 DNS를 통해 IP 주소로 변환합니다.
  3. 브라우저는 IP 주소로 HTTP 요청을 보냅니다.
  4. 웹 서버는 요청에 대한 응답으로 HTML 문서를 포함한 데이터를 브라우저에 전송합니다.
  5. 브라우저는 받은 데이터를 렌더링하여 사용자에게 표시합니다.

이 과정에서 모든 데이터는 평문으로 전송되므로, 해커가 네트워크 중간에서 데이터를 가로채면 사용자의 개인정보가 유출될 위험이 있습니다.

HTTPS 통신 과정

  1. 사용자가 웹 브라우저에 URL을 입력합니다.
  2. 브라우저는 해당 URL의 도메인 이름을 DNS를 통해 IP 주소로 변환합니다.
  3. 브라우저는 서버에 SSL/TLS 연결을 설정하기 위해 핸드셰이크 과정을 시작합니다.
    • 클라이언트가 서버에 SSL/TLS 버전, 암호화 방법, 난수 등을 포함한 "ClientHello" 메시지를 보냅니다.
    • 서버는 "ServerHello" 메시지를 통해 사용할 SSL/TLS 버전과 암호화 방법을 응답합니다.
    • 서버는 SSL 인증서를 클라이언트에게 전달하여 자신의 신원을 인증합니다.
    • 클라이언트는 서버 인증서를 검증하고, 세션 키를 생성하여 서버에 전송합니다.
  4. 서버는 세션 키를 사용하여 암호화된 데이터를 전송합니다.
  5. 브라우저는 받은 암호화된 데이터를 복호화하여 사용자에게 표시합니다.

이 과정에서 데이터는 암호화되어 전송되므로, 중간에서 가로챌지라도 해커가 내용을 이해할 수 없습니다.

4. HTTP와 HTTPS의 차이

  • 보안:
    • HTTP: 암호화되지 않은 평문 데이터 전송으로, 중간에 있는 공격자가 데이터를 쉽게 읽을 수 있습니다.
    • HTTPS: SSL/TLS를 통해 암호화된 데이터 전송으로, 데이터의 내용이 암호화되어 해커의 공격으로부터 보호됩니다.
  • 속도:
    • HTTP: 암호화가 없기 때문에 데이터 전송 속도가 빠르지만, 보안이 취약합니다.
    • HTTPS: 암호화와 복호화 과정이 추가되므로 약간 느릴 수 있지만, 현대의 기술로 인해 속도 차이는 거의 없습니다.
  • 신뢰성:
    • HTTP: SSL 인증서가 없으므로 사이트의 신뢰성을 보장할 수 없습니다.
    • HTTPS: SSL 인증서를 통해 사이트의 신뢰성을 보장하며, 사용자가 안전한 사이트에 접속하고 있다는 확신을 제공합니다.

5. 왜 HTTPS를 사용해야 할까?

  • 보안 강화: HTTPS를 사용하면 로그인, 결제 정보 등 중요한 데이터가 암호화되어 안전하게 보호됩니다.

  • SEO: 구글과 같은 검색 엔진은 HTTPS를 사용하는 사이트를 더 우선시합니다.

  • 브라우저 지원: 최신 브라우저는 HTTP 웹사이트에 "안전하지 않음" 경고를 표시하여 사용자에게 신뢰할 수 없는 사이트에 대한 경고를 제공합니다.

  • 사용자 신뢰: 안전한 웹사이트는 고객이 안심하고 거래를 진행하도록 돕습니다.

  • 법적 요구 사항: 개인 데이터 보호를 위해 HTTPS를 의무화하는 법적 기준이 마련되고 있습니다.

  • 성능 향상: 최신 TLS 프로토콜은 HTTP/2와 함께 사용되어 페이지 로딩 속도를 향상시킵니다.

profile
Spring, Django 개발 블로그

0개의 댓글