본문 바로가기
코딩이야기/웹알아보기

[HTTPS] 1. HTTPS에 이해하기

by GiraffeB 2019. 5. 17.

0. 웹 개발자로서 만난, 반드시 만나게될 HTTPS

https는 당연해지고 있습니다. 우리가 사용하는 대부분의 사이트는 https로 주고 받는 것을 볼 수 있습니다. 게다가 크롬 브라우저(2018 6월 - Chrome 68 버전)는 HTTP로 주고받는 주소는 Not Secure 경고출력을 기본으로 설정합니다. 하지 않으면 안되는 분위기로 웹은 변해가고 있습니다.

개인적으로 웹 백엔드 개발자를 지향하는 중이고, 몇가지 웹서버 설정을 하면서 HTTPS를 접하게 되었습니다. 처음으로 웹서버에서 HTTPS를 설정하면서 만나게 되는 라이브러리, 용어들이 많기도 하고 낯설기도 합니다. 초보 개발자분들이 많이들 공감하시겠지만, 작동은 하지만 내부 원리를 대략적이라도 이해하지 못 할때, 라이브러리의 변경이나 작은 에러에도 대응하지 못하는 경우가 많으실 겁니다.

저는 어떤 원리로 HTTPS가 서버를 증명하고 서로 암호화된 데이터를 주고 받는지 궁금하기도 했습니다.
다른 사람에게 전달하는 형태로 작성하는 것이 가장 잘 이해하는 것이라고 생각되어 전달 형식으로 하고자 합니다.


1. HTTPS의 목적

  1. 현재 접속한 서버가 내가 요구한 서버인지 확인합니다.
  2. 웹사이트와 사용자간 데이터의 변조를 방지합니다.
  3. 웹사이트와 사용자간 데이터의 도청을 방지합니다.

HTTPS는 SSL/TLS 계층 위에서 HTTP프로토콜로 주고받는 것이기 때문에, 보안의 주요한 내용은 SSL/TLS 입니다.


2. 예제 시나리오

2.1 도청 시나리오

전제조건: 저는 오늘 예상치 못한 수익으로 150만원을 얻었습니다.
친구A가 이야기를 주고 받습니다.

(1) 친구A 에게 오늘 가 쏜다고 말합니다.
(2) 이 사이에 또다른 절친 친구B,C,D,E가 이 내용을 들었습니다.
(3) 오늘 예상치 못한 수익은 없던 것이 되었습니다.

사용자와 서버 간의 메시지 교환을 누군가 도청할 수 있다면, 내가 하는 행동을 모두 수집할 수 있고, 또한 이 과정에서 주고 받는 노출되는 개인 또는 중요 정보들은 악용될 수 있어 매우 위험합니다.


2.2 위변조 시나리오

전제조건:저와 친구A가 롤을 하며 채팅을 주고 받습니다.
저는 서폿 친구는 정글로 게임에서 큰 차이로 지고있습니다.

(1) 제가 친구A에게 응원의 메시지를 보냈습니다.
(2) 누군가 이 메시지를 위조해서 "정글차이"라고 보냈습니다.
(3) 분개한 친구A는 멘탈이 흔들리며 게임에서 졌습니다.
(4) 헬게이트가 열렸습니다.

사용자와 서버간의 메시지 교환을 누군가 변조할 수 있다면, 서로 주고 받는 메시지 또는 서비스 자체를 신뢰할 수 없고 사용할 수가 없게됩니다.


3. 앞으로의 글

간략하게 예를 들어서 HTTPS의 목적, 필요한 이유에 대해서 알아보았습니다.
앞으로의 글은

HTTPS를 이해하면서 만나게될

  • 다양한 용어들과 배경지식들
  • HTTPS의 작동과정
  • 서버를 인증하고, 도청, 위변조를 방지할 수 있는 이유

에 대해서 작성해 보겠습니다.