본문 바로가기
개발/브라우저와 네트워크

HTTP와 HTTPS

by 안뇽! 2021. 12. 22.
반응형

HTTP

서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜.

클라이언트와 서버가 80번포트를 통해 통신한다.

HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 상태를 갖고 있지 않은 Stateless 프로토콜이다.

 

HTTP는 암호화되지 않은 텍스트를 전송하는 프로토콜이기에 보안이 취약하다.

이러한 문제를 해결하기 위해 HTTPS가 등장하였다.

 

HTTPS

클라이언트와 서버가 443 포트를 통해 통신한다.

보안통신을 위한 프로토콜인 TLS에 HTTP의 통신방법이 합쳐진 프로토콜이다.

(TLS와 SSL에 대한 설명은 흐름에 방해가 되어 후반부에 적었다.)

 

HTTPS는 일반텍스트대신 TLS를 통해 암호화된 데이터를 전송한다.

때문에 데이터를 탈취해도 정확한 '키'가 없다면 해커는 데이터를 해독할 수 없다.

이 '키'는 공개키 암호화 방식으로 운용되는 키이다.

 

  • 인증서
  • CA
  • 비대칭 키 암호화

위 3가지 방식이 HTTPS의 특징이다.

 

인증서

데이터를 제공한 서버가 정말 데이터를 보내준 서버인지 인증,확인하는 용도로 사용

인증서의 내용에 서버의 도메인 정보가 있어, 데이터 제공자의 인증을 용이하게 한다.

 

코드스테이츠 학습자료

  1.  서버가 클라이언트에게 응답과 인증서 정보를 전달한다.
  2.  클라이언트는 인증서의 도메인과 응답객체의 도메인을 비교하여 약속된 응답인지, 제3자 공격인지 판단할 수 있다.

 

CA

인증서를 발급하는 공인된 기관

 

HTTPS의 암호화 방식 - 공개키 암호화 ( 비대칭키 암호화 방식으로 불리기도 한다. )

 

클라이언트에게는 모두에게 공개하는 공개키A를 제공하고, 서버는 비공개키 B를 갖는다.

이렇게 A키와 B키가 한쌍을 이루게 되면, A키로 암호화한 데이터는 무조건 B키가 있어야만 해독할 수 있고 그 반대도 마찬가지이다.

A키는 공개하고 B키는 비공개하기 때문에 공개키 암호화 방식을 비대칭 키 암호화 방식이라고도 부르기도 한다.

 

 

 

 

SSL과 TLS

넷스케이프가 SSL 2.0을 1995년 2월에 출시. 결함때문에 1996년 3.0버전으로 업그레이드

SSL3.0 버전은 TLS1.0 버전의 기초가 된다. TLS와 SSL은 상호운용되지 않는다.

 

TLS에서 제공하는 보안 서비스

  • 암호화 : 데이터를 암호화 하여 전송한다.
  • 데이터 무결성 : 데이터가 전송되는 동안 데이터가 변경되거나 손상되는 일이 없도록 한다.
  • 인증 : 사용자가 의도된 웹사이트와 통신중임을 입증한다. -> 중간자 공격 차단

패킷이 암호화 되어 송수신되므로 정보탈취 부분에서는 강력한 보안을 자랑하지만, 암호화된 패킷이 클라이언트 또는 서버로 전송되기 때문에 송수신자간 데이터 교환이 일어나는 일에서는 무력해진다.

 

개인정보유출, 기밀정보유출, DDos, APT, 악성코드 공격이 발생할 경우 무력화 된다.


HTTPS가 좋은 이유

1. 보안

 

2. 검색엔진 상위노출 

  • 구글은 HTTPS에 가산점을 준다.
  • HTTPS를 사용하지 않으면 '주의요함'이라는 메시지를 표시하게 되는데 유저들은 이러한 페이지를 기피한다.

https://www.thewordcracker.com/miscellaneous/%EA%B5%AC%EA%B8%80-%ED%81%AC%EB%A1%AC-http-%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A3%BC%EC%9D%98-%EC%9A%94%ED%95%A8-%EA%B2%BD%EA%B3%A0-%EB%AC%B8%EA%B5%AC-%ED%91%9C%EC%8B%9C/

 

 

 


요약 :

http와 https의 차이에 대해 설명하세요

http는 80번 포트를 사용하여 클라이언트와 서버가 통신합니다.

텍스트를 전송하기 때문에 보안이 취약합니다.

 

이러한 문제를 해결하기 위해 암호화된 데이터를 전송하는 https가 등장했습니다.

https는 보안통신을 하는 프로토콜인 TLS에 http 통신이 합쳐진 통신방식, 즉 보안성이 강화된 http통신입니다.

 

https는 TLS프로토콜을 통해 데이터 암호화, 데이터 무결성, 상대방 인증을 제공한다.

 

https는 데이터를 암호화 하기 위해 공개키 방식을 사용하는데, 클라이언트에게 공개된 키 A를 제공하고 서버는 비공개키B를 사용합니다.

이렇게 한쌍의 A,B키가 이루어지면 A키로 암호화한 데이터는 반드시 B키가 있어야만 해독할 수 있고 그 반대도 마찬가지 입니다.

한쪽은 공개키 다른한쪽은 비공개키를 사용하기 때문에 비공개키 암호화 방식이라 불리기도 합니다.

 

또한 https는 인증서를 통해 상대방이 약속된 상대인지 확인합니다.

서버는 클라이언트에게 응답을 전달할때, 인증서정보도 함께 전달합니다.

클라이언트는 인증서의 도메인과 응답객체의 도메인을 확인하여 약속된 통신인지, 제3자 공격인지 판단할 수 있습니다.

 


참고자료 

https://mangkyu.tistory.com/98

https://post.naver.com/viewer/postView.nhn?volumeNo=16561296&memberNo=1834 

https://brunch.co.kr/@hyoi0303/10

https://ko.wikipedia.org/wiki/HTTPS

https://namu.wiki/w/TLS

반응형

'개발 > 브라우저와 네트워크' 카테고리의 다른 글

SEO) robots.txt와 sitemap.xml  (1) 2022.09.22
TLS 프로토콜 작동방식  (0) 2022.01.04
CORS 정리  (2) 2021.11.22
토큰  (0) 2021.11.02
Accept 헤더 (콘텐츠 협상 헤더) 그리고 Content-type과의 차이  (0) 2021.10.28