HTTPS 란?

박병관·2022년 1월 31일
0

우아한Tech

목록 보기
2/17
post-thumbnail

순서
1. HTTP 와 HTTPS의 차이점
2. SSL/TLS
3. SSL통신 과정

유튜브 [10분 테코톡] 🍭 다니의 HTTPS 의 내용

HTTP 와 HTTPS의 차이점

HTTP

HyperText Transfer Protocol 의 줄임말로 서로 다른 시스템들 사이에서 통신을 주고받게 하는 가장 기본적인 프로토콜 이다

  • 서버에서 브라우저로 데이터를 전송하는 용도로 가장 많이 사용됨
  • 서버에서 브라우저로 보내는 정보가 암호화되지 않아서 데이터가 쉽게 도난당할 수 있다는 문제점을 가지고 있음

HTTPS

HyperText Transfer Protocol over Secure Socket Layer 의 줄임말로 HTTP의 문제를 SSL(보안 소켓 계층)을 활용해 해결 했다

HTTPS는 HTTP자체를 암호화하는 것이 아닌 HTTP를 사용해 운반하는 내용, HTTP Message Body를 암호화 한다

왜 HTTPS를 사용해야 할까?

1. 보안성

HTTP로 데이터를 전송하면 네트워크로 전달되는 데이터는 원본 그 자체이다, 즉 헤커가 중간에서 가로채면 어떤 내용인지 바로 알 수 있다

HTTPS로 데이터를 전송할 땐 데이터를 암호화 해서 전송한다, 즉 헤커가 중간에서 가로채면 어떤 내용인지 알기 어렵다

http와 https의 차이-보안성

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

검색엔진하면 대표적으로 구글이 있다, 구글은 HTTPS를 사용하는 웹 사이트에 가산점을 부여한다

3. AMP를 만들 땐 HTTPS를 사용해야만 한다

AMP(Accelerated Mobile Pages)는 구글에서 만든 모바일 전용 빠른 웹페이지를 의미하는데, 이렇게 모바일 친화적 웹사이트를 만들기 위해 HTTPS를 사용해야 한다

SSL/TLS

SSL의 업그레이드 버전이 TLS이지만, 일반적으로 두 단어를 동일한 의미로 사용한다

SSL

SSL이란 Secure Sockets Layer, 웹 서버와 웹 브라우저간의 보안을 위해 만든 프로토콜이고 Netscape사에서 만들어 졌다

공개키 대칭키 기반으로 사용한다

대칭키

동일한 키로 암호화와 복호화를 수행하는 방법

누구든 암호화에 이용된 키를 가지고 있다면, 해당 데이터를 쉽게 복호화 할 수 있다

대칭키

암호화할 때 사용하는 키를 원본 그대로 전달하고 있고 해커가 중간에 키를 가로챈다면 암호화된 데이터를 쉽게 해독할 수 있다

공개키

서로 다른 키로 암호화와 복호화를 수행하는 방법, 비대칭키 방식으로도 불린다

암호화 시에는 공개키를 사용, 복호화 시에는 개인키를 사용한다

공개키

공개키로 암호화한 데이터는 오직 개인키로만 복호화할 수 있기 때문에 누구든지 공개키를 가져도 상관없다

하지만 대칭키 방식보다 암호화 연산 시간이 더 소용되어 비용이 크다

즉 대칭키와 공개키는 서로의 장점이 서로의 단점이 된다
그래서 SSL에서는 두 방식을 적절히 섞어 사용한다

SSL 통신 과정

SSL은 공개키, 대칭키를 적절히 섞어 사용한다 했는데 더 구체적으로 말하면, SSL은 공개키 방식으로 대칭키를 전달한다

SSL 통신 과정

두 컴퓨터 A B 가 있다고 할 때 A B 의 SSL 통신 과정을 살펴보면,

  1. A에서 B로 접속 요청을 보낸다
  2. B는 A에게 자신의 공개키를 전송해준다
  3. A는 자신의 대칭키를 B에서 전달받은 B의 공개키로 암호화 한다
  4. 암호화한 대칭키를 B에게 전달해준다
  5. B는 A의 대칭키를 자신의 개인키로 복호화 한다
  6. 복호화 결과로 B는 A의 대칭키를 얻을 수 있다

이렇게 얻은 대칭키를 통해 A와 B는 안전하게 통신한다

이를 활용해 사용자가 접속한 사이트가 유요한 사이트인지 확인하는 방법은

제 3의 인증 기관을 포함해 할 수 있다
인증기관-사이트-사용자

사용자가 사이트에 접속하기 전

  1. 사이트는 사이트 인증서(인증기관에서 발급하는 문서)가 필요
  2. 사이트는 인증기관에서 사이트 정보와 사이트 공개키를 전달
  3. 사이트로부터 전달받은 데이터를 검증
  4. 성공적으로 검증하면 사이트로부터 전달받은 데이터를 자신의 개인키로 서명
  5. 서명이 되면 사이트 인증서가 생성, 사이트에 전달
  6. 인증기관은 사용자에게 자신의 공개키를 전달
    (사용자 브라우저에 공개키가 자동으로 저장)

사용자가 접속을 요청했을 때

  1. 사용자가 사이트에 접속 요청
  2. 사이트는 사용자에게 인증서를 전달
  3. 사용자에게 저장된 공개키로 전달받은 인증서를 복호화, 검증
  4. 인증서를 해독하면 사이트정보, 사이트 공개키를 얻을 수 있다
  5. 해독해 얻은 사이트 공개키로 사용자는 자신의 대칭키를 암호화 한다
  6. 암호화한 대칭키를 사이트에 전달
  7. 사이트는 자신의 개인키로 사용자에게 전달된 대칭키를 해독, 사용자의 대칭키를 얻는다

이렇게 얻은 대칭키로 사용자와 사이트는 암호문을 주고받을 수 있다(SSL통신을 하게된다)

SSL은 사이트 외 인증기관과 사용자도 협력하기 때문에 안전한 접속 방법이 된다

정리하며 더 궁금한 점, 느낀점 🙃

  • 키들(공개키, 대칭키 등)로 암호화, 복호화를 하는 과정에서 키가 어떻게 작용하는지 궁금해졌다

  • HTTPS가 좋은건 알겠는데😊 어떻게 사용해야할지 알아보고싶다

  • HTTP와 HTTPS의 개념에 대해 더 확실히 할 수 있었고, SSL을 통해 보안성을 높인 HTTPS와 SSL의 원리, 통신과정에 대한 내용이였고, 웹 개발에 기본적인 개념이라 할 수 있는 개념을 알아보아서 더 좋았다

profile
괴물신인

0개의 댓글