반응형

안녕하세요 취업길잡이 Coy입니다

 

오늘은 HTTP와 HTTPS에 대해서 알아보도록 하겠습니다

HTTP란

HTTP는 Hyper Text Transfer Protocol의 약자로 Hyper Text를 전송하기 위해 만든 프로토콜입니다.

HTTP는 인터넷상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신규약이라고 이해하시면 됩니다.

이 프로토콜은 80번 포트를 사용하고 있습니다.

HTTP 통신은 텍스트 교환을 하며 보안 이슈가 존재합니다

HTTP에 존재하는 보안 이슈

  1. 암호화되지 않은 통신이라 제 3자가 볼 수 있습니다
  2. 정보의 완전성을 증명할 수 없어서 제 3자가 중간에서 바꿀 수 있습니다
  3. 통신 상대를 확인하지 않기 때문에 위장을 할 수 있습니다

암호화 되지 않는 통신이라 도청가능

http를 사용한 request나 response가 통신 내용은 http가 암호화하는 기능은 없기 때문에 통신 전체가 암호화 되지않습니다.

TCP/IP의 구조의 통신 내용은 통신 경로 전체를 엿볼 수 있기 때문에 보안상 취약합니다.

통신 내용을 엿볼 수 있다는 것은 암호화된 통신이어도 마찬가지입니다.

차이점은 암호화된 메세지 패킷은 볼 수 있어도 암호화 되어있기 때문에 메세지속 의미는 파악할 수 없습니다

정보의 완전성을 증명할 수 없어서 변조가능

완전성은 정보의 정확성을 가리킵니다. HTTP가 완정성을 증명할 수 없다는 뜻은 request나 response가 통신 과정 중 변조되었다고 해도 이 사실을 알 수 없다는 뜻입니다.

위와 같이 중간에서 패킷을 빼앗아 변조하는 공격을 중간자 공격이라고 합니다

통신 상대를 확인하지 않기 때문에 위장가능

HTTP에서는 통신 상대를 확인하지 않습니다.

따라서 누구나 request를 할 수 있고 response를 보낼 수 있습니다.

따라서 아래와 같은 약점이 있습니다

  • request 보낸 곳에서 response를 받아도 진짜 웹서버인지 위장된 웹서버인지 알 수 없다
  • 웹 서버에서 request를 받아도 진짜 클라이언트인지 위장한 클라이언트인지 알 수 없다.
  • 어디서 누가 request 했는 지 알 수 없다
  • 모든 request를 받기 때문에 대량의 request 공격(DDos 공격)에 취약하다

따라서 위에서 말하는 이 3가지를 방지하기 위해 HTTPS가 등장합니다

 

HTTPS란?

HTTPS는 HTTP 프로토콜 위에 SSL이라는 것을 한번 씌워서 만든 프로토콜입니다

HTTP 통신을 하는 소켓부분을 SSL이나 TLS 프로토콜로 대체하게 되었습니다.

이 프로토콜은 HTTP와 다르게 443번 포트를 사용하고 중간에서 제 3자가 정보를 볼 수 없도록 암호화를 지원합니다.

HTTPS = HTTP + 완전성 보호 + 증명서 + 통신 암호화 라고 생각하시며 됩니다

증명서로 상대방의 신원을 증명합니다

HTTPS의 구조

위에서 설명한 것 처럼 HTTP는 직접 TCP와 통신하게 되고 HTTPS는 SSL을 한번 더 거쳐서 TCP와 통신하게 됩니다.

HTTPS 암호 시스템

HTTPS는 대칭키 암호화 방식과 공개키 암호화 방식을 모두 사용하고 있습니다

키를 안전하게만 교환하면 공개키 암호만을 사용해서 통신을 할 수 있다고 생각하지만 공개키 암호화 방식은 대칭키보다 처리속도가 느립니다.

따라서 HTTPS는 두가지 장점을 다 살릴 수 있도록 각각의 방식을 조합해서 통신합니다.

키를 교환하는 곳에서는 공개키 암호화 방식을 이용하고 그 후에 메세지를 교환하는 곳에서는 대칭키 암호화 방식을 이요합니다

  1. 대칭키 암호로 사용하는 키를 공개키 암호화방식을 통해 서버랑 클라이언트가 주고받음
  2. 그 후에 메시지 통신에 사용하는 모든 통신은 주고받은 대칭키를 가지고 대칭키 암호화방식으로 진행함

공개키가 정확한지 아닌지를 증명하는 증명서

공개키가 진짜인지 아닌지 증명할 수 없기 때문에 공개키 암호화 방식에도 문제점이 있습니다.

웹 서버에서 받은 공개키가 진짜 그 웹서버에서 발행한 공개키인지 모를 수 있기 때문입니다.

이 문제를 해결하기 위해선 CA(인증기관)과 CA가 발행한 공개키 증명서가 이용되고 있습니다.

CA는 클라이언트와 서버가 모두 신뢰하는 제 3자 기관입니다.

 

이런식으로 오늘은 HTTP와 HTTPS에 대해서 알아보았습니다

 

2단계 개념 모음집 목적과 활용법은 아래 글을 읽어보시면 좋습니다

 

2단계 면접 요약정리 카테고리 설명글

 

도움이 필요하시면 사연을 메일로 보내주세요

 

jek300300@gmail.com

 

도움이 되셨다면 공감과 구독 부탁드립니다

 

읽어주셔서 감사합니다

 

당신의 취업이 성공할 때까지 같이 하겠습니다! by 취업길잡이 Coy

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기