COCO World
[CS] HTTP와 HTTPS를 비교해보자 본문
🍙 들어가기에 앞서
HTTP와 HTTPS는 둘다 인터넷을 통해 데이터를 전송하기 위한 프로토콜이지만 데이터 전송의 보안과 관련하여 중요한 차이점을 가지고 있다.
2014년 구글에서는 HTTP를 HTTPS로 바꾸라고 권고한다. HTTPS를 사용하는 웹 사이트에 대해서 검색 순위 결과에 약간의 가산점을 주겠다고 발표했는데 이는 사실상 HTTP를 사용하는 웹 사이트에게 벌점을 주는 것과 마찬가지였다. HTTP에서 HTTPS로의 전환은 좀 더 번거롭고, 보안측면에서 더 우수한 특징을 가지고 있다. 이제 두 가지의 차이점을 살펴보자.
🍙 HTTP (Hypertext Transfer Protocol)
인터넷에서 웹 페이지, 이미지, 동영상 등의 리소스를 전송하기 위해 사용되는 프로토콜이다. HTTP는 클라이언트와 서버 간의 통신을 위한 규약으로, 클라이언트가 서버에 요청(Request)을 보내고, 서버는 해당 요청에 대한 응답(Response)을 반환하는 방식으로 동작한다.
프로토콜(Protocol)이란?
컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계이다. 기기 간 통신은 교환되는 데이터의 형식에 대해 상호 협의를 요구한다. 이런 형식을 정의하는 규칙의 집합이다.
HTTP 4가지 요청의 메서드
- GET: 리소스의 조회를 요청합니다.
- POST: 서버에 데이터를 제출하여 리소스를 생성하거나 수정합니다.
- PUT: 리소스를 업데이트 또는 생성합니다.
- DELETE: 리소스를 삭제합니다.
HTTP의 특징
HTTP는 상태를 유지하지 않는(Stateless) 프로토콜이다. 즉, 각각의 요청은 서로 독립적으로 처리되며, 이전 요청과의 관계나 상태를 기억하지 않는다. 따라서 클라이언트와 서버 간의 통신은 필요한 요청과 해당 응답으로 이루어진다.
HTTP는 일반적으로 TCP/IP 프로토콜 위에서 동작하며, 요청과 응답 메시지는 헤더(Header)와 본문(Body)으로 구성된다. 헤더는 요청 또는 응답에 대한 정보를 포함하고, 본문은 실제 데이터를 담고 있다.
하지만 HTTP는 보안상의 취약점이 있어 데이터의 암호화나 보호가 필요한 경우에는 HTTPS를 사용하는 것이 좋다. HTTPS는 SSL 또는 TLS 프로토콜을 사용하여 데이터의 암호화와 보안을 제공한다.
TCP/IP 프로토콜이란?
인터넷 프로토콜 스위트(Internet Protocol Suite) 중 하나로, 인터넷을 포함한 네트워크에서 데이터 전송을 위한 프로토콜 집합이다. TCP/IP는 네트워크 계층 모델인 OSI 모델의 기반을 이루는 프로토콜이며, 인터넷에서 데이터의 전송과 통신을 가능하게 한다.
TCP/IP의 주요 프로토콜 구성
- IP(Internet Protocol) : IP는 인터넷에서 컴퓨터 간의 데이터 패킷 전송을 위한 프로토콜입니다. IP는 데이터를 작은 단위인 패킷(Packet)으로 나누어 전송하고, 각 패킷은 목적지 IP 주소와 출발지 IP 주소를 포함합니다. IP는 패킷의 경로를 결정하고, 라우팅을 수행하여 패킷이 목적지까지 도달할 수 있도록 합니다.
- TCP(Transmission Control Protocol) : TCP는 IP 위에서 동작하는 전송 계층 프로토콜로, 데이터의 신뢰성과 순서 보장을 담당합니다. TCP는 데이터의 분할과 조립, 흐름 제어, 오류 검출 및 복구 기능을 제공하여 신뢰성 있는 데이터 전송을 보장합니다. TCP는 패킷이 목적지에 정확하게 도착하고, 데이터의 손실이나 손상이 없도록 합니다.
- UDP(User Datagram Protocol) : UDP는 IP 위에서 동작하는 전송 계층 프로토콜로, 신뢰성보다는 속도와 단순성에 초점을 둡니다. UDP는 TCP와 달리 연결 지향적인 특성이 없으며, 데이터의 손실이나 손상에 대한 복구 기능을 제공하지 않습니다. 그러나 UDP는 실시간 스트리밍, DNS(Domain Name System) 등에서 사용되는 등 속도와 대역폭 효율성이 중요한 경우에 유용합니다.
- ICMP(Interent Control Message Protocol) : ICMP는 네트워크에서 메시지를 교환하기 위한 프로토콜로, 주로 네트워크의 상태, 에러 메시지 및 호스트 간의 통신을 확인하는 데 사용됩니다. ICMP는 예를 들어 "ping" 명령어를 통해 호스트의 응답 시간을 측정하고 네트워크의 문제를 진단하는 데 활용됩니다.
🍙 HTTPS (Hypertext Transfer Protocol Secure)
HTTP 프로토콜의 보안 버전으로, 데이터의 안전한 전송을 위해 SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용한다. HTTPS는 웹 서버와 클라이언트 간의 통신을 암호화하여 제3자가 데이터를 엿들을 수 없도록 보호한다.
HTTPS는 주로 온라인 상거래, 금융 서비스, 로그인 페이지와 같이 민감한 정보를 주고받아야 하는 웹 사이트에서 사용된다. 이러한 사이트에서는 HTTPS를 통해 보안성을 강화하고 사용자의 개인정보를 안전하게 보호할 수 있다.
라고 하지만 요즘엔 거의 HTTPS로 배포가 되는 추세인 것 같다.
SSL(Secure Sockets Layer)
웹 상에서 데이터 통신의 보안을 제공하기 위해 개발된 프로토콜입니다. SSL은 클라이언트와 서버 간의 통신을 암호화하고 인증하는 기능을 제공하여 데이터의 기밀성과 무결성을 보호합니다.
주로 웹 브라우저와 웹 서버 간의 통신을 보호하는 데 사용됩니다. 클라이언트(웹 브라우저)와 서버(웹 서버) 사이에서 데이터를 주고받을 때, SSL은 데이터를 암호화하여 제3자가 데이터를 엿들을 수 없도록 보호합니다. 이를 위해 SSL은 대칭키 암호화와 공개키 암호화를 조합하여 데이터를 안전하게 전송합니다.
TLS(Transport Layer Security)
웹을 포함한 네트워크 통신에서 데이터의 기밀성과 무결성을 보호하기 위해 사용되는 보안 프로토콜입니다. TLS는 SSL(Secure Sockets Layer) 프로토콜의 후속 버전으로 개발되었으며, 현재는 SSL의 이름 대신 TLS라는 용어가 일반적으로 사용됩니다
🍙 HTTPS가 HTTP와 비교하여 제공하는 보안 기능
1. 암호화
HTTPS는 데이터를 암호화하여 전송한다. 클라이언트와 서버 간의 통신은 공개키/개인키 암호화 방식을 사용하여 데이터를 암호화하고, 이는 제3자가 데이터를 도청하더라도 내용을 이해할 수 없도록 한다.
2. 데이터 무결성
데이터가 전송 중에 변경되지 않았는지 확인하기 위해 메세지 인증 코드(Message Authentication Code)를 사용한다. 이를 통해 데이터가 중간에서 수정되거나 손상되었는지 여부를 확인할 수 있다.
3. 신원 보증
HTTPS는 인증서를 사용하여 웹 사이트의 신원을 보증한다. 인증서는 신뢰할 수 있는 기관에 의해 발급되며, 웹 사이트의 신원과 공개키를 포함하고 있다. 이를 통해 클라이언트는 통신하는 서버가 신뢰할 수 있는지 확인할 수 있다.
4. SEO (검색 엔진 최적화)
HTTPS는 검색 엔진 최적화에 더욱 유리한 요소이다. 구글과 같은 검색 엔진은 HTTPS를 사용하는 사이트를 우선적으로 색인화하고 노출시킨다. 따라서 HTTPS를 사용하면 검색 엔진에서 노출되는 가능성이 더 높다.
References
'CS Store' 카테고리의 다른 글
[CS] SQL과 noSQL의 특징과 차이점을 알아보자 (0) | 2023.05.29 |
---|---|
[CS] 서버사이드 렌더링(SSR)과 클라이언트사이드 렌더링(CSR) (0) | 2023.05.29 |
[CS] 쿠키(Cookie)와 세션(Session)의 개념 및 특징, 차이점 (0) | 2023.05.28 |
[CS] 웹 브라우저 공격 종류들과 보안책을 알아보자. (0) | 2023.05.27 |
[CS] REST란 무엇일까, Restful API에 대해 알아보자 (0) | 2023.05.24 |