itisjustK
코딩과 사람 사는 이야기
itisjustK
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • 일이삼사오육칠팔구십일이삼사오육칠팔구십일이삼사오육칠.. (0)
    • Web (43)
      • html & css (9)
      • django & python (15)
      • java script (9)
    • iOS (51)
      • Swift (42)
      • SwiftUI (5)
    • CS (25)
      • 자료구조 (6)
      • 운영체제 (3)
      • 데이터베이스 (9)
      • 네트워크 (7)
    • PS (34)
      • 알고리즘 & 자료구조 (0)
    • Life (36)
    • Retrospective (15)
    • Book (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • nosql
  • 생활코딩
  • mongodb
  • 세그멘테이션
  • CoreData
  • ios
  • 점주
  • 생활코딩 #이고잉 #HTML #코딩 #개발자
  • 어플
  • AppleDevloperAcademy
  • 킨디
  • SwiftUI
  • 독립서점
  • POSTECH
  • 개발자
  • binding
  • CS
  • crud
  • SWIFT
  • 연결리스트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
itisjustK

코딩과 사람 사는 이야기

[CS - 네트워크] HTTP와 HTTPS
CS/네트워크

[CS - 네트워크] HTTP와 HTTPS

2023. 2. 21. 13:29

HTTP와 HTTPS

HTTP에는 3가지 문제점이 있다. 각각에 대한 보완점이 있는데, HTTPS는 이 3가지 문제점을 모두 보완할 수 있다. HTTP의 3가지 문제점이 어떤 것이며, HTTPS의 개념 및 구조와 어떻게 문제점들을 보완할 수 있는지 알아보자.

 

 


 

HTTP의 3가지 문제점

첫번째로, HTTP는 TCP/IP 통신을 하고, 이는 평문 통신이라 도청 가능한 네크워크라는 점이다.

 

TCP/IP 구조의 통신은 경로 상에서 엿볼 수 있고, 암호화가 되지 않았기 때문에 의미를 파악할 수 있다. 또한 패킷을 수집하는 것만으로도 도청 가능성이 있다. 때문에 암호화가 필요하다.

 

보완 방법으로는, 통신 자체를 암호화된 통신을 사용할 수 있다. SSL(Secure Socket Layer) 또는 TSL(Transport Layer Security)라는 프로토콜을 사용하는 방법이다. HTTP와 SSL이 합쳐진 것을 HTTPS라고 한다. 또한, 통신되는 메세지의 콘텐츠를 암호화하는 방법이 있다. 이는 메세지를 받는 측에서 암호를 해독하는 처리가 필요하다.

 

 

두번째로, 통신 상대를 확인하지 않기 때문에 위장 가능성이 있다는 점이다.

 

HTTP는 통신 상대를 확인하는 처리가 없다. 누구나 Request를 보낼 수 있다. 이 특징 때문에 통신 받는 입장에서는 상대가 허가된 상대인지도 모르고, 정당한 방식으로 보낸 것인지도 모르며, 어떤 상대이건 간에 Request에 대한 무엇이든 Response를 보내야 한다. 때문에 DoS 공격에 대한 방어도 할 수 없다.

 

보완 방법으로는, SSL을 이용하는 것이다. SSL은 상대를 확인하는 수단으로 증명서를 이용하기 때문에 상대가 누구인지, 허가된 사용자인지 확인할 수 있다. 증명서는 제 3자 기관에서 발급된다. 이걸로 웹 사이트 인증에도 활용할 수 있다.

 

 

세번째로, 정보의 완전성을 증명할 수 없어서 변조가 가능하다는 점이다.

 

정보의 완전성이란 정확도를 얘기하는 것이며, 정보가 정확한 것인지 확인할 수 없다는 점이다. 서버나 클라이언트 측은 받은 통신이 실제로 상대방이 보낸 내용이 맞는지 확인할 방법이 없다. 그래서 누군가가 중간에 끼어들어 통신을 변조하는 중간자 공격 (man-in-the-middle)이 발생할 수도 있다.

 

보완 방법으로는, 해시값 활용이나 파일 디지털 서명 확인 등이 있지만, 가장 확실한 방법은 HTTPS를 사용하는 것이다. HTTPS는 암호화, 인증, 다이제스트 기능을 제공하기 때문에 정보의 완전성을 보장한다는 특징이 있다.

 


 

HTTPS

출처 : https://www.tutorialsmate.com/2020/07/http-vs-https.html

HTTPS는 Hyper Text Tranport Protocol Secure의 약자로, HTTP를 SSL로 감싼 것을 말한다. 그리고 HTTPS는 응용 계층의 새로운 프로토콜이 아니다. HTTPS는 전송 계층의 프로토콜로, 암호화된 메세지의 통신을 담당한다. HTTP가 TCP/IP와 직접 통신을 했다면, HTTPS는 HTTP를 감싼 SSL이 TCP/IP와 통신한다. HTTPS를 이용한다면, 인증과 암호화와 정보의 완전성을 보장할 수 있다.

 

원래 HTTPS는 HTTP보다 더 많은 오버헤드를 갖기 때문에 꼭 필요한 상황에서만 사용했었다. 하지만 하드웨어의 발달과 새로운 HTTP 2.0으로 인해 오히려 HTTPS가 HTTP보다 더 빨라지게 됐다. 그래서 요즘은 모든 웹 페이지에서 HTTPS를 사용하는 추세다.

저작자표시 (새창열림)

'CS > 네트워크' 카테고리의 다른 글

[CS - 네트워크] 검색창에 “www.google.com”을 검색하면 네트워크에서 벌어지는 일 (네트워크 관점)  (0) 2023.02.20
[CS - 네트워크] HTTP (개념, 구조, method, status code 등)  (0) 2023.02.20
[CS - 네트워크] 쿠키와 세션 (Cookie, Session)  (0) 2023.02.19
[CS - 네트워크] 3-way handshaking, 4-way handshaking  (0) 2023.02.14
[CS - 네트워크] TCP와 UDP  (0) 2023.02.14
    'CS/네트워크' 카테고리의 다른 글
    • [CS - 네트워크] 검색창에 “www.google.com”을 검색하면 네트워크에서 벌어지는 일 (네트워크 관점)
    • [CS - 네트워크] HTTP (개념, 구조, method, status code 등)
    • [CS - 네트워크] 쿠키와 세션 (Cookie, Session)
    • [CS - 네트워크] 3-way handshaking, 4-way handshaking
    itisjustK
    itisjustK
    https://www.instagram.com/onttaste

    티스토리툴바