[TIL] HTTP vs HTTPS_항해99 Day 68

woonie·2022년 3월 18일
0

TIL

목록 보기
51/64

기술멘토링에서 받은 피드백으로 보안성을 생각하여 팀원들과 HTTPS를 적용하기로 했다.
먼저 기존에 우리가 계속 사용했던 HTTP와 HTTPS의 차이점과 HTTPS에 대해 찾아보았다.

HTTP

HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자이며 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다.

  • HyperText Transfer Protocol
  • OSI 7 계층 중 7계층 응용계층에 속하는 프로토콜
  • 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜
  • 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용
  • 처음에는 www 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 이용되었고, 현재에는 이미지, 비디오, 음성 등 거의 모든 형식의 데이터 전송이 가능하다.
  • Method, Path, Version, Header, Body 등으로 구성된다.
  • Request 와 Response 로 통신을 하는 비연결성(단방향) 프로토콜이다.
  • 문제점 : 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않기에 데이터가 쉽게 도난당할 수 있다.

왜 HTTPS가 보안이 더 뛰어나다고 하는걸까?

HTTPS

  • HyperText Transfer Protocol Secure
  • HTTP 보안버전
  • 데이터 암호화 기능이 추가되었음
  • SSL/TLS 인증서로 통신 내용(데이터)을 암호화시킨다.

단순하게 HTTP와 HTTPS의 차이점은 바로 SSL인증서다. 쉽게 말해서 HTTPS는 HTTP프로토콜에 보안 기능을 추가한 것이라고 한다.
보안은 우리 일상에서 매우 중요하다. 계좌, 신용카드 비밀번호 등 민감한 정보들을 다루는 웹사이트라면 더욱 중요하다.
SSL인증서는 사용자가 사이트에 제공하는 정보/데이터를 암호화 한다. 암호화되어 전송된 데이터는 중간에서 도난 당하더라도 데이터가 암호화 되어있기 때문에 해독할 수 없다. 이 외에도 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지한다.
TSL은 데이터 무결성을 제공하기 때문에 데이터 전송 중 수정되거나 손상되는 것을 방지한다.

보안외 장점

  • SEO품질(검색엔진 최적화)
    HTTP는 보안 외에도 또다른 장점은 검색엔진 최적화다. 일반 웹사이트에 사용자들의 민감한 정보를 다루지 않다면 굳이 HTTPS로 전환할 필요성이 없을 것이다. 지난 2014년 구글에서 HTTPS를 사용하는 웹사이트에 가산점을 주고있지만 사용자들이 가장 안전하다고 생각하는 사이트를 더 많이 방문하기 때문이기도 하다.

HTTPS 구조

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

    • 공개키와 암호화를 기반으로 동작하는 프로토콜
    • SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아준다.
    • 정보/데이터가 공격자에게 노출되는 것을 막을 수 있다.
    • 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지 판단할 수 있다.
    • 정보/데이터의 악의적인 변경을 방지할 수 있다.
  • 대칭키와 공개키

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

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

    • 공개키와 대칭키가 결합된 방식이다.
    • 결합해서 쓰는 이유는, 공개키 방식은 많은 컴퓨팅 자원을 요구한다. 시간이 많이 걸린다는 것이다.
    • 따라서 대칭키를 공개키 방식으로 함호화한 세션 키를 사용하면 더 안전하고 빠른 통신을 할 수 있다.
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글