Computer Science/Network

[Network] HTTP & HTTPS

2023. 7. 7. 19:57
목차
  1. HTTP (Hypertext Transfer Protocol)
  2. HTTPS (Hypertext Transfer Protocol Secure)
  3. HTTPS의 통신 흐름

HTTP와 HTTPS는 웹에서 데이터를 전송하는데 사용되는 프로토콜이다.

HTTP (Hypertext Transfer Protocol)

  • 인터넷에서 웹 페이지, 이미지, 동영상 등의 리소스를 전송하기 위한 통신 규약
  • 클라이언트(웹 브라우저)와 서버 간에 요청(request)과 응답(response)을 주고받는 방식으로 동작
  • 암호화되지 않은 텍스트 기반 프로토콜이므로 데이터 전송 과정에서 보안에 취약하다. 요청과 응답의 내용이 암호화되지 않기 때문에 중간에 제3자가 데이터를 도청하거나 조작할 수 있는 위험이 있다. 따라서, 민감한 정보를 전송하는 경우 보안 상의 문제가 발생할 수 있다.

HTTPS (Hypertext Transfer Protocol Secure)

  • HTTP의 보안 문제를 해결하기 위해 나온 프로토콜이며, SSL(Secure Sockets Layer) 또는 TLS(Transport Layer Security) 프로토콜을 사용한다.
  • 웹 브라우저와 웹 서버 간의 통신을 암호화하고, 데이터의 무결성을 보장하며, 인증을 제공한다.
  • 하이브리드 암호화를 사용
  • 클라이언트와 서버 간에 SSL/TLS Handshake 과정을 통해 안전한 연결을 설정하고, 이후에는 대칭키 암호화를 사용하여 데이터를 암호화한다. 이로써 중간에 데이터를 가로채더라도 암호화된 상태로 전송되므로 보안이 강화된다.
  • 주로 민감한 정보(로그인 정보, 결제 정보 등)를 처리하는 웹 페이지, 인터넷 뱅킹, 전자상거래 등에서 사용된다.

HTTPS의 통신 흐름

  1. 클라이언트 요청
    • 클라이언트(웹 브라우저)는 HTTPS로 액세스해야 할 웹 서버의 URL을 입력하거나 링크를 클릭한다.
  2. SSL/TLS Handshake
    • 클라이언트는 서버와 안전한 연결을 설정하기 위해 SSL/TLS Handshake 과정을 시작한다.
    • 서버는 서버의 공개키와 인증 기관(CA)의 디지털 서명이 포함되어 있는 공개키 인증서를 클라이언트에게 제공한다.
    • CA(Certificate Authority): 공개키를 저장해주는 신뢰성이 검증된 민간기업
  3. 인증서 검증
    • 클라이언트는 가지고 있는 CA 공개키를 사용하여 인증서의 유효성을 검증한다.
    • 또한, 인증서에 포함된 도메인 이름과 실제 서버의 도메인 이름을 비교하여 일치 여부를 확인한다.
  4. 세션 키 생성
    • 클라이언트는 세션 키(임시 대칭키)를 생성한다. 이것을 사용하여 데이터를 대칭키 암호화 방식으로 암호화한다.
    • 클라이언트는 서버의 공개키를 사용하여 세션 키를 암호화하여 전송한다.
  5. 데이터 암호화
    • 클라이언트와 서버는 이제 안전한 연결을 설정하고, 대칭키 암호화 방식을 사용하여 데이터를 암호화한다. (세션 키 사용)
  6. 데이터 교환
    • 클라이언트와 서버는 암호화된 데이터를 주고받는다. 즉, 클라이언트의 요청과 서버의 응답이 암호화되어 전송된다.
  7. 연결 종료
    • 클라이언트와 서버 간의 통신이 완료되면, 연결이 종료된다.
❗중요한 점
클라이언트는 서버의 공개키를 인증서를 통해 얻고, 이를 사용하여 데이터를 암호화한다. 클라이언트는 웹 브라우저에 내장된 신뢰할 수 있는 CA의 공개키를 사용하여 인증서를 검증한다.이를 통해 서버의 신원을 확인할 수 있다.

 

But, HTTPS를 지원한다고 해서 무조건 안전한 것은 아니다.

왜냐하면 신뢰할 수 있는 CA 기업이 아니라 자체적으로 인증서를 발급할 수도 있고, 신뢰할 수 없는 CA 기업을 통해서 인증서를 발급받을 수도 있기 때문이다.

이런 경우, "주의 요함", "안전하지 않은 사이트" 등의 알림이 발생한다.

 

[참고] https://jeong-pro.tistory.com/89

 
저작자표시

'Computer Science > Network' 카테고리의 다른 글

[Network] 로드 밸런싱 (Load Balancing)  (0) 2023.07.16
[Network] TSL/SSL HandShake  (0) 2023.07.07
[Network] 대칭키 & 비대칭키  (0) 2023.07.07
[Network] UDP (User Datagram Protocol)  (0) 2023.06.30
[Network] TCP/IP 흐름제어 & 혼잡제어  (0) 2023.06.30
  1. HTTP (Hypertext Transfer Protocol)
  2. HTTPS (Hypertext Transfer Protocol Secure)
  3. HTTPS의 통신 흐름
'Computer Science/Network' 카테고리의 다른 글
  • [Network] 로드 밸런싱 (Load Balancing)
  • [Network] TSL/SSL HandShake
  • [Network] 대칭키 & 비대칭키
  • [Network] UDP (User Datagram Protocol)
dbssk
dbssk
dbssk
K.Back-end
dbssk
  • 분류 전체보기 (220)
    • 끄적 (0)
    • TIL (8)
      • Trouble Shooting (1)
    • Programmers (94)
      • Lv.0 (29)
      • Lv.1 (40)
      • Lv.2 (25)
    • 백준 (15)
    • 구름 (0)
    • Computer Science (79)
      • 컴퓨터 구조 (3)
      • Operating System (18)
      • 알고리즘 (9)
      • 자료구조 (11)
      • Database (10)
      • Network (8)
      • Web (12)
      • Design Pattern (8)
    • Spring (2)
    • Languages (13)
      • Java (13)
    • 북 스터디 (9)
      • 스프링 부트 핵심 가이드 (9)
      • 자바 코딩 인터뷰 완벽 가이드 (0)
    • 프론트엔드 (0)

인기 글

최근 글

태그

  • 자료구조
  • stack
  • 프로그래머스
  • 코딩테스트
  • hash
  • 배열
  • 개발자이력서
  • 개발자포트폴리오
  • 백엔드공부
  • LV.1
  • 스택
  • spring
  • 백준
  • 백엔드스쿨
  • java
  • 개발자취업
  • 해시
  • 개발자취준
  • Lv.0
  • LV.2
hELLO · Designed By 정상우.
dbssk
[Network] HTTP & HTTPS
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.