HTTP 와 HTTPS 의 차이를 알아보자

kind J·2022년 4월 12일
0
post-thumbnail

HTTP

  • HyperText Transfer Protocol
  • OSI 7 계층 중 7계층 응용계층에 속하는 프로토콜
  • 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
  • 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용됨.
  • 처음에는 www 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용되었고, 현재에는 이미지, 비디오, 음성 등 거의 모든 형식의 데이터 전송이 가능하다.
  • 특성 : 무상태성
  • Method, Path, Version, Header, Body 등으로 구성된다.
  • Request 와 Response 로 통신을 하는 비연결성 프로토콜이다.
  • 문제점 : 평문 텍스트, 즉 암호화되지 않은 텍스트를 전송하는 프로토콜로 중간자 공격에 취약하다. 변조, 위장, 도청에 취약하다.

프로토콜 : 메세지를 주고 받는 양식이나 규칙을 의미하는 통신규약

HTTPS

  • HyperText Transfer Protocol Secure
  • HTTP 보안버전
  • 데이터 암호화 기능이 추가되었음
  • 도청, 통신 상대방 위장, 임의 내용 변경 방지
  • SSL/TLS 프로토콜을 사용하여 통신 내용(데이터)을 암호화시킨다.

HTTP 대신 HTTPS를 사용해야 하는 이유

1. 보안성

HTTP로 데이터를 전송하면 네트워크로 전달되는 데이터는 원본 그 자체 이므로 중간에 해커가 가로채고 해당 데이터의 내용을 알 수 있다.
HTTPS 는 데이터를 암호화해서 전송하므로 해커가 중간에 가로채도 이 데이터가 어떤 내용을 가지고 있는지 알기가 어렵다.

2. SEO(검색엔진최적화)

  • 구글은 HTTPS 를 사용하는 웹사이트에 가산점을 주므로 HTTP를 사용하는 웹사이트는 감점을 받는것이나 다름없다.
  • 가속화된 모바일 페이지, AMP를 만들 때는 HTTPS 를 사용해야한다.

    AMP : 모바일 기기에서 컨텐츠를 훨씬 빠르게 로딩하기 위한 방법으로 구글에서 만들었다.

  • 모바일에서 친화적인 웹사이트를 만들고 검색순위를 증가시키는게 중요하므로 HTTPS로 전환하는 것이 필수적

SSL (Secure Sockets Layer 보안 소켓 계층)

  • 공개키와 암호화를 기반으로 동작하는 프로토콜
  • SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아준다.

대칭키와 공개키

대칭키 : 암호화/복호화에 사용되는 키가 동일한 방식, A와 B가 암호 통신을 하려 한다면 A와 B는 공통된 대칭키를 가지고 있어야한다.
공개키 : 대칭키와 다르게 공개키와 비밀키 두가지로 나눈 방식. 공개키는 다른사람들에게 공개된다. 하지만 비밀키는 오직 비밀키의 소유자만이 알고있는 키다.
공개키로 암호화된 평문은 비밀키로 복호화가 가능하고, 비밀키로 암호화된 평문은 공개키로 복호화가 가능하다. 대칭키 방식보다 암호화 연산 시간이 더 소요되어 비용이 크다.

암호화로 얻을 수 있는 효과

A와 B가 암호화 통신을 하려고 한다고 하자.
A는 B의 공개키를 알고 있고, B는 A의 공개키를 알고있다.

A-> B : B의 공개키 암호화
: A는 B의 공개키를 알고 있기 때문에 B의 공개키로 Text를 암호화 하면 B는 본인의 비밀키로 복호화할수있다.

A-> C : B의 공개키 암호화
: A는 B의 공개키로 암호화한 Text를 C에게 전송한다면 C는 B의 비밀키를 모르므로 복호화 할 수 없다.

즉, 공개키로 암호화 하는 것은 해당 공개키의 소유자만이 해당 암호문을 복호화 할수 있음을 의미함


A -> B : A의 비밀키암호화
: A 가 본인의 비밀키로 Text를 암호화 한다면 B는 A의 공개키로 복호화 할수 있다.

A -> C : A의 비밀키암호화
: A가 본인의 비밀키로 Text를 암호화 한다면 C역시 A의 공개키로 복호화 할 수 있다.

즉, 비밀키로 암호화 하는 것은 해당 암호문은 A에 의해 생성된 것이라는 일종의 인증의 기능을 갖는다.

SSL 사용목적

  • 통신내용(ex. 비밀번호, 개인정보)이 공격자에게 노출되는 것을 막을 수 있다.
  • 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 판단할 수 있다.
  • 통신 내용의 악의적인 변경을 방지할 수 있다.

SSL 은 위와 같은 목적을 위해 인증서를 사용한다.

이 인증서는 믿을만한 공인된 기관에서 발급해준다. 그러한 기관을 CA(Certificate Authority)라고 한다. 믿을 만한 기관이 CS 에서 인증받은 서버는 클라이언트 입장에서 믿고 사용할 수 있다 SSL은 이런한 인증서를 통해 클라이언트와 서버가 보안적으로 안전한 상태로 통신하게 돕는다.

SSL 통신과정

공개키 방식으로 대칭키를 전달한다. 그리고 이 대칭키로 암호화, 복호화를 하고 서버와 브라우저간의 통신을 진행한다.

  • A에서 B로 접속 요청을 보낸다.
  • B는 A에게 공개키를 보낸다.
  • A는 자신의 대칭키를 B에서 전달받은 공개키로 암호화한다. 암호화 한 대칭키를 B에게 전달한다. B는 A의 대칭키를 자신의 개인키로 복호화한다. 복호화 결과로 A의 대칭키를 얻어낼 수 있다. 이렇게 얻은 대칭키를 활용해서 A와 B는 안전하게 통신한다.
  • 데이터 암호화, 복호화를 위한 한쪽의 대칭키를 다른측의 공개키로 암호화 해서 전송하면 반대편에서 자신의 키로 복호화 해서 반대편의 대칭키를 알아내고 대칭키를 바탕으로 서로 통신하게된다.

Session Key

  • 공개키와 대칭키가 결합된 방식이다.
  • 결합해서 쓰는 이유는, 공개키 방식은 많은 컴퓨팅 자원을 요구한다. 시간이 많이 걸린다는 것이다.
  • 따라서 대칭키를 공개키 방식으로 함호화한 세션 키를 사용하면 더 안전하고 빠른 통신을 할 수 있다.

주소창에 왼쪽 끝에 좌물쇠 아이콘이 있다. 클릭 해보면 아래와 같이 뜨는데,
'이 사이트는 보안 연결(HTTPS)이 사용되었습니다' 클릭 -> 자세히 알아보기 누르면

아래와 같이 인증서 탭이 뜨고 공개키를 확인할 수 있다.

출처
http://www.ktword.co.kr/test/view/view.php?m_temp1=648
https://nukw0n-dev.tistory.com/11?category=940859#%EC%-D%B-%EC%A-%-D%EC%--%-C%EC%--%--%--SSL%EC%-D%--%--%EB%-F%--%EC%-E%--%--%EA%B-%BC%EC%A-%--

profile
프론트앤드 개발자로 일하고 있는 kind J 입니다.

0개의 댓글