Front-End/Web & 표준 & ETC

[Network] HTTP vs HTTPS

Voyage_dev 2022. 2. 24. 19:25

HTTP (Hyper Text Transfer Protocol)?

서버 및 클라이언트 모델을 따라 서로 다른 시스템들 사이에서 통신과 데이터를 주고 받기 위한 가장 기초적인 프로토콜이다. 통신 규약으로, 80번 포트를 사용하고 있다

하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이다. HTTP는 정보를 텍스트로 주고받기 때문에 네트워크에서 전송 신호를 인터셉트하면 전송된 데이터 유출이 가능하다 예를들어, HTTP로 비밀번호나 주민등록번호 등을 주고 받으면 제3자가 정보를 조회할 수 있다

이런 보안 문제를 개선하기 위해 HTTPS (HyperText Transfer Protocol Secure)가 등장하게 되었다

 

HTTPS (HyperText Transfer Protocol Secure)?

기존 HTTP에 SSL(보안 소켓 계층)을 사용함으로 인해 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다 즉, 데이터 암호화가 추가된 프로토콜이다. HTTP와 다르게 포트번호 443번을 사용한다

HTTPS에서 보장하는 것

  1. 기밀성
    • HTTPS는 인터넷과 같은 공공 매체에서 두 참여자 간의 통신을 보호
    • SSL이나 TLS를 사용해 웹 브라우저와 서버 사이에 암호화된 통신을 구현
    • 공개키 암호화 방식으로 HTTP 메시지를 암호화해 보안을 강화
  2. 무결성
    • HTTPS는 변조되지 않은 정보로 목적지에 도달하게 한다
    • 데이터 전송 중 의도적 또는 비의도적으로 감지되지 않아 수정되거나 손상될 수 없다
  3. 인증
    • HTTPS를 통해 웹사이드의 진위 여부를 확인할 수 있다
    • SSL은 웹사이트의 신원을 인증해준다

 

HTTPS가 보안이 뛰어난 가장 큰 이유와 장점

가장 큰 장점이자 HTTP와 차이는 바로 SSL 인증서이다. SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화하는데, 쉽게 말해서 데이터를 암호로 바꾼다고 생각하면 된다

이렇게 암호화된 데이터는 유출이 된다거나 훔쳐 낸다고 해도 해독할 수 없다

 

대칭키 / 비대칭키 암호화 & 공개키 / 비공개키

HTTPS는 대칭키 암호화 & 비대칭키 암호화 방식 모두 사용하고 있다

 

대칭키 암호화

  • 클라이언트와 서버가 동일한 키를 사용해 암호화 / 복호화를 진행
  • 키가 노출되면 매우 위험하지만 연산 속도가 빠르다

비대칭키 암호화

  • 1개의 쌍으로 구성된 공개키와 개인키를 암호화 / 복호화 하는데 사용한다
  • 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다

 

공개키 방식 (PKI, Public Key Infrastructure)

  • 두 개의 키를 갖게 되며, A키로 암호화하면 B키로 복호화가 가능하며, 반대로 B키로 암호화하면 A키로 복호화가 가능하다
  • 모두에게 공개가능한 키

비공개키 (개인키)

  • 소유자(private한 사용자) 나만 가지고 있게 된다

 

암호화를 공개키로 하느냐 개인키로 하느냐에 따라 얻는 효과가 다르다

 

공개키 암호화

  • 공개키로 암호화를 하면 개인키로만 복호화할 수 있다. 즉, 개인키는 나만 가지고 있기 때문에 나만 볼 수 있다

개인키 암호화

  • 개인키로 암호화하면 공개키로만 복호화할 수 있다. 즉, 공개키는 모두에게 공개되어 있기 때문에 내가 인증한 정보임을 알려 신뢰성을 보장할 수 있다

HTTPS는 암호화 과정을 거치면서 웹 부하가 생기고 느려진다. 하지만 현재 인터넷에서는 그 차이가 미미하다고 한다.

예전에는 인증서 비용이 비쌌으나 Let's Encrypt에서 무료로 배포해 비용 문제가 해결되었다고한다.

 

 

출처 : 아래의 사이트들을 보면서 큰 공부 하였습니다

https://hyeran-story.tistory.com/159

https://blog.wishket.com/http-vs-https-차이-알면-사이트의-레벨이-보인다/

https://mangkyu.tistory.com/98

https://velog.io/@jehjong/개발자-인터뷰-HTTP-vs-HTTPS