CS/Network

[Network] HTTP & HTTPS

ummchicken 2023. 1. 17. 11:57
※ 스트림 (stream) : 시간이 지남에 따라 사용할 수 있게 되는 
일련의 데이터 요소를 가리키는 데이터 흐름
※ 개인키 : 비밀키라고도 하며,
개인이 소유하고 있는 키이자 반드시 자신만이 소유해야 하는 키

※ 공개키 : 공개되어 있는 키
※ 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값

※ 해싱 : 임의의 데이터를 해시로 바꿔주는 일이며, 해시 함수가 이를 담당

※ 해시 함수 : 임의의 데이터를 입력으로 받아 일정한 길의의 데이터로 바꿔주는 함수

 

 

 

 

HTTP 프로토콜이란?

HTTP(Hyper Text Transfer Protocol)이란, 데이터를 주고받기 위한 프로토콜이며 
서버/클라이언트 모델을 따른다.

HTTP는 상태 정보를 저장하지 않는 Stateless의 특징과 
클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 Connectionless의 특징을 가진다.

 

장점

  • 통신 간의 연결 상태 처리나 상태 정보를 관리할 필요가 없어 서버 디자인이 간단하다.
  • 각각의 HTTP 요청에 독립적으로 응답만 보내주면 OK

 

단점

  • 이전 통신의 정보를 모르기 때문에 매번 인증을 해줘야 한다.
  • 이를 해결하기 위해 쿠키(cookie)나 세선(session)을 사용해서 데이터를 처리한다.

 

 

 

 


 

HTTP와 HTTPS

 

HTTP (HyperText Transfer Protocol)

인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약

 

 

 

HTTP의 구조

HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.
HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이며 
Method, Path, Version, Headers, Body 등으로 구성된다.

 

 

 

🚨 HTTP는 텍스트 교환(암호화가 되지 않은 평문 데이터를 전송하는 프로토콜)이므로,

누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재한다.

→ 이런 보안 문제를 해결해주는 프로토콜이 'HTTPS'

 

 

 


 

 

HTTPS (HyperText Transfer Protocol Secure)

인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 
클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약.

즉, HTTPS는 SSL의 껍질을 덮어쓴 HTTP라고 할 수 있다.
(HTTP에 데이터 암호화가 추가된 프로토콜)
※ SSL(Secure Socket Layer) : 인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약

 

HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고 

SSL이 TCP와 통신함으로써 암호화와 증명서, 안전성 보호를 이용할 수 있게 된다.

 

 


 

✔️ 대칭키 암호화와 비대칭키 암호화

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용한다.

 

 

💡 대칭키 암호화

  • 암호화와 복호화에 사용되는 키가 동일
  • 해당 키를 아는 사람만이 문서를 복호화해 볼 수 있음
  • 장점
    • 공개키 암호화 방식에 비해 속도가 빠르다.
  • 단점
    • 키를 교환해야 한다는 문제가 있다.
      • 키를 교환하는 도중 중간자가 도청해 키를 복호화 할 수 있다.

 

 

💡 공개키(비대칭키) 암호화

  • 대칭키의 키교환 문제를 해결하기 위해 등장한 방법이다.
  • 모든 사람은 각자의 공개키와 개인키를 가지고 있다.
    • 공개키는 모든 사용자가 접근 가능한 키이고, 
    • 개인키는 본인만이 접근 가능한 키이다.
  • A는 B의 공개키로 암호화하고, B는 자신의 개인키로 복호화한다.
    • 개인키를 가지고 있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로, 일종의 인증기능 제공.
  • 장점
    • 키 교환을 할 필요가 없어짐
  • 단점
    • 대칭키 암호화 방법에 비해 시간이 오래 걸림

 

비대칭키 암호화는 공개키 / 개인키 암호화 방식을 이용해 데이터를 암호화한다.

공개키와 개인키는 서로를 위한 1쌍의 키이다.

  • 공개키 : 모두에게 공개 가능한 키
  • 개인키 : 나만 가지고 알고 있어야 하는 키

 


 

요약 정리

[HTTP와 HTTPS]

HTTP는 암호화가 추가되지 않았기 때문에 보안에 취약한 반면, 
HTTPS는 안전하게 데이터를 주고받을 수 있다.

하지만 HTTPS를 이용하면 암호화 / 복호화의 과정이 필요하기 때문에 
HTTP보다 속도가 느리다.
또한 HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
그렇다면 언제 HTTP를 쓰고, 언제 HTTPS를 쓰는 것이 좋을까?
→ 개인 정보와 같은 민감한 데이터를 주고받아야 한다면 HTTPS를 이용해야 하지만, 
노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용하면 된다.

 

 

 

 


 

www.naver.com에  에 접속할 때 생기는 과정

웹 동작 방식 이해

 

 

 

1.  사용자가 브라우저에 URL(www.naver.com)을 입력
2. DNS 서버에 도메인 네임으로 서버의 진짜 주소를 찾음
3. IP 주소로 웹 서버에 TCP 3 handshake로 연결 수립
4. 클라이언트는 웹 서버로 HTTP 요청 메시지 보냄
5. 웹 서버는 HTTP 응답 메시지를 보냄
6. 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력

 

 

 

 


출처