네트워크
HTTP? HTTPS?
머전제이팍
2023. 4. 9. 12:33
통신 Protocol의 국룰, HTTP와 HTTPS에 대해 정리해 보자..
HTTP(Hyper Text Transfer Protocol)?
💡 인터넷에서 데이터를 주고 받기 위한 통신규약중 하나
- 웹 브라우저와 서버/클라이언트 통신에서 주로 사용되는 통신 규약.
- HTTP는 웹 브라우저와 서버 간의 데이터 전송을 위해 TCP/IP 프로토콜 위에서 동작하며 2)기본적으로 암호화하지 않은 평문 통신 방식
- 기본 80 port를 사용
http의 구성 요소

image reference: https://mangkyu.tistory.com/98
- http method: 요청 메시지에서 사용되는 method로, 서버에서 수행할 동작을 지정.
- 대표적인 HTTP 메소드로는 GET(자원 조회), POST(자원 생성), PUT(자원 갱신), DELETE(자원 삭제) 등이 존재.
2. Path: HTTP 요청의 경로.
- 클라이언트가 요청하는 자원의 위치를 가리키며, 예를 들어, "http://example.com/api/users"는 클라이언트가 "example.com" 서버의 "/api/users" 경로에 위치한 자원을 요청한다는 것을 의미
3. Protocol: HTTP 프로토콜의 버전을 나타냄.
- 현재는 HTTP/1.1이 국룰
4. Headers: HTTP 요청이나 응답의 부가적인 정보를 담는 부분, 예시의 경우 host: 요청된 reousrce의 dns 이름, Accept- Laguange: fr ⇒ 클라이언트가 프랑스어로 응답해주는것을 선호한다.
** protocol의 종류는 추후 정리 예정
BUT! HTTP는 이러한 문제점들이 있다!
- HTTP 는 평문 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
- 완전성을 증명할 수 없기 때문에 변조가 가능하다.
=> 이러한 이유로 주민등록번호, 비밀번호 등을 제 3자가 도청하는 불상사가 일어날수도 있음
=> 이러한 이유로 HTTPS가 등장
HTTPS?(Hyper Text Transfer Protocol Secure)
💡 HTTP에 암호와와 인증을 추가하여 보안을 더한 protocol
- HTTP 통신하는 소켓 부분을 SSL(Secure Socket Layer)or TLS(Transport Layer Security)라는 프로토콜로 대체하여 통신하는 protocol == HTTPS!
- 기본적으로 443 port를 사용
암호화 방식
💡 http는 대칭키 암호화 방식, 비대칭키 암호화 방식을 두가지 다 이용한다.
- 대칭키 암호화
- 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
- 키가 노출되면 매우 위험하지만 연산 속도가 빠름
- 비대칭키 암호화
- 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용함
- 키가 노출되어도 비교적 안전하지만 연산 속도가 느림
HTTPS의 동작 과정
💡 HTTPS는 위의 암호화 방식 2가지를 사용하여 동작한다.
⇒ 즉, 안정성과 연산속도를 둘다 챙길 수 있다!!
- HTTPS 연결 과정(Hand-Shaking)에서는 먼저 서버와 클라이언트 간에 Session key를 교환.
- Session key는 주고 받는 데이터를 암호화하기 위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어짐.
- 문제는 이 Session key를 클라이언트와 서버가 어떻게 교환할 것이냐 인데, 이 과정에서 비대칭키가 사용.
즉, 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키가 사용되는 것이고, 이후에 데이터를 교환하는 과정에서 빠른 연산 속도를 위해 대칭키가 사용되는 것이다.
두 방식의 장단점
HTTP의 장단점:
- 장점: 구성이 단순하며, 빠른 속도로 데이터를 전송가능.
- 단점: 데이터가 평문으로 전송되므로 보안에 취약.
- 또한, 데이터 무결성이 보장되지 않기 때문에 중간에 데이터가 변조될 가능성이 있다.
HTTPS의 장단점:
- 장점: HTTP와 달리, SSL 인증서를 사용하여 데이터 암호화를 지원합니다. 따라서, 데이터 전송 시에 더욱 안전하며, 중간자 공격을 방지할 수 있다.
- 단점: SSL 인증서 발급 및 설치, 암호화/복호화 처리로 인해 성능이 HTTP보다 느릴 수 있습니다. 또한, SSL 인증서 발급 및 유지 보수 비용이 발생할 수 있다.