https://www.cloudflare.com/ko-kr/learning/ssl/why-is-http-not-secure/

 

HTTP와 HTTPS 차이점

  • HTTPS 는 암호화 및 인증이 포함된 HTTP 이다 . 
  • 두 프로토콜의 유일한 차이점은 HTTPS가 TLS ( SSL )를 사용하여 일반 HTTP 요청 및 응답을 암호화하고 해당 요청 및 응답에 디지털 서명한다는 것.
  • 결과적으로 HTTPS는 HTTP보다 훨씬 더 안전하다.
  • HTTP를 사용하는 웹사이트는 URL에 http://가 있고 HTTPS를 사용하는 웹사이트는 https://가 있다.

 

HTTP란?

  • HTTP는 Hypertext Transfer Protocol의 약자이며 네트워크를 통해 데이터를 전송하는 데 사용되는 프로토콜이다. 
  • 웹 사이트 콘텐츠 및 API 호출을 포함하여 인터넷을 통해 전송되는 대부분의 정보는 HTTP 프로토콜을 사용한다. 
  • HTTP 메시지에는 요청과 응답이라는 두 가지 주요 종류가 있다.

 

HTTP 요청/응답

  • HTTP 요청은 사용자가 웹 속성과 상호 작용할 때 사용자의 브라우저에서 생성된다. 
  • 예를 들어 사용자가 하이퍼링크를 클릭하면 브라우저는 해당 페이지에 나타나는 콘텐츠에 대한 일련의 "HTTP GET" 요청을 보낸다. 
  • 누군가 Google에서 "HTTP가 무엇인가요?"라고 검색하면 어떤한 페이지는 검색 결과에 표시되며 링크를 클릭하면 브라우저가 페이지를 렌더링하는 데 필요한 정보를 얻기 위해 일련의 HTTP 요청을 생성하고 보낸다.
  • 이러한 HTTP 요청은 모두 origin server 또는 proxy caching server로 이동하며 해당 서버는 HTTP 응답을 생성한다. 
  • HTTP 응답은 HTTP 요청에 대한 응답을 의미한다.

 

HTTP 요청의 모습

HTTP 요청은 HTTP 프로토콜을 따르는 일련의 텍스트 줄이다. GET 요청은 다음과 같다.

  • 사용자의 브라우저에서 생성된 이 텍스트 섹션은 인터넷을 통해 전송된다. 
  • 문제는 연결을 모니터링하는 모든 사람이 읽을 수 있는 일반 텍스트로 위와 같이 전송된다는 것
  • 이는 사용자가 웹사이트나 웹 애플리케이션을 통해 민감한 데이터를 제출할 때 특히 문제가 된다.
  • 오고가는 데이터는 암호, 신용 카드 번호 또는 양식에 입력된 기타 데이터일 수도 있고 HTTP에서는 이 모든 데이터가 누구나 읽을 수 있도록 일반 텍스트로 전송된다. 

  • 웹 사이트에서 HTTPS 대신 HTTP를 사용하는 경우 세션을 모니터링하는 모든 사람이 모든 요청과 응답을 읽을 수 있다. 
  • 즉, 헤커는 요청 또는 응답의 텍스트를 읽고 누군가가 요청하거나 보내거나 받는 정보를 정확히 알 수 있다.

 

HTTPS란?

  • HTTPS의 S는 "보안(Secure)"을 의미한다. 
  • HTTPS는 TLS(또는 SSL)를 사용하여 HTTP 요청 및 응답을 암호화하므로 공격자는 텍스트 대신 겉보기에 무작위로 보이는 암호화된 여러 문자를 보게 된다.

 

헤커는 아래와 같은 데이터 대신에

 

다음과 같은 것을 보게 된다.

t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ==

 

HTTPS에서 TLS/SSL은 HTTP 요청 및 응답을 어떻게 암호화하는가?

  • TLS는 공개키 암호화 라는 기술을 사용한다 .
  • 공개키(public key)와 개인키(private key)의 두 가지 키가 있으며 공개키는 서버의 SSL 인증서를 통해 클라이언트 장치와 공유된다. 
  • 클라이언트가 서버와의 연결을 열면 두 장치는 공개키 및 개인키를 사용하여 세션키(session keys) 라고 하는 새로운 키에 동의하여 둘 사이의 추가 통신을 암호화한다.
  • 그런 다음 모든 HTTP 요청과 응답은 이 세션키로 암호화되므로 통신을 가로채는 사람은 일반 텍스트가 아닌 임의의 문자열만 볼 수 있다.

 

HTTPS는 웹 서버를 인증하는 데 어떻게 쓰이는가?

  • HTTP에서는 신원 확인이 없으며 신뢰 원칙을 기반으로 한다. 그러나 현대 인터넷에서는 인증이 필수적입니다.
  • ID 카드가 개인의 신원을 확인하듯이 개인키는 서버 신원을 확인한다. 
  • 클라이언트가 origin server와 채널을 열 때(예: 사용자가 웹 사이트를 탐색할 때) 웹 사이트 SSL 인증서의 공개키와 일치하는 개인키를 소유하면 서버가 실제로 웹 사이트의 합법적인 호스트임을 증명한다. 
  • 이렇게 하면 다음과 같이 인증이 없을 때 발생할 수 있는 여러 공격을 방지하거나 차단하는 데 도움이 된다.
    • On-path attacks
    • DNS hijacking
    • BGP hijacking
    • Domain spoofing

또한 SSL 인증서는 인증서를 발급한 인증 기관에서 디지털 서명된다. 이를 통해 서버가 자신이 주장하는 사람인지 확인할 수 있다.

 

 


[ 참고 자료]

https://www.cloudflare.com/ko-kr/learning/ssl/why-is-http-not-secure/

 

[ AWS로 https 설정하는 법 참고자료 ]

 

https://velog.io/@server30sopt/EC2-HTTPS%EB%A1%9C-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0

 

EC2 HTTPS로 연결하기

👾 작성자: 이승헌🐬 작성자의 한마디: https로 연결은 눈감고 한다우선 해당 글을 포스팅하기에 앞서 http에서 굳이 https로 연결하는 이유에 대해 이야기해보려 합니다.HTTP는 Hyper Transfer Protocol의

velog.io

https://pgmjun.tistory.com/69

 

[AWS] EC2 도메인 연결 및 HTTPS 적용하기

EC2 도메인 연결 & EC2 HTTPS 적용 안녕하세요 오늘은 AWS EC2에 도메인을 연결하고 HTTPS까지 적용해보는 시간을 갖도록 하겠습니다. 이 글은 이전에 생성한EC2가 이미 있다는 가정하에 HTTPS와 도메인

pgmjun.tistory.com

 

+ Recent posts