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

[HTTPS] 0. HTTPS 개념적으로 이해하기

by GiraffeB 2019. 5. 20.

0. 들어가기

우리는 인터넷을 통해 많은 메시지를 주고 받습니다. 이 메시지라는 것은 유튜브로 보는 영상이기도 하고, 네이버 기사를 통한 글과 사진이기도 합니다. 또 인터넷 뱅킹을 통해서 주고받는 거래이기도 합니다. 글, 사진, 영상, 거래는 모두 메시지입니다. 우리가 인터넷을 통해 주고 받는 모든 것은 메시지라고 추상화해 볼 수 있습니다.

 

메시지를 정상적으로 주고 받을 수 있어야 웹 서비스를 사용하는데 불편함이 없을 것입니다. 정상적으로 주고 받는 과정에 하드웨어나 네트워크의 상태와 같은 요소가 존재하겠지만 이 글에서는 단순히 HTTPS가 주는 장점과 관련해서 알아보겠습니다. 

 

기술을 정리하기 위한 목적의 글을 작성하려고 합니다. 다만 요소만 나열하면 머리속으로 연결하기가 어려워 글로서 예시나 이유를 연결해보려고 합니다. 사실과 다르거나 잘못된 이해를 하고 있다면 알려주세요. 감사합니다.

1. HTTPS가 필요한 이유와 하는일

"우리는 정상적인 웹 서비스를 이용하고 싶습니다."

 

우리는 인터넷(웹) 서비스를 이용할 때, http 프로토콜을 이용해서 메시지를 주고 받습니다. 위에서 말한대로 다양한 형태의 미디어들을 주고 받을 수 있게 해줍니다. 다만, 주고받는 메시지들은 암호화되지 않았습니다. 이것은 몇가지 문제점들이 발생할 수 있습니다. 

 

  1. 누군가 메시지를 엿볼 수 있습니다.
  2. 누군가 메시지를 가로채서 변경할 수 있습니다.

사실 저도 이런 부분을 생각하지 않았습니다. 이런 생각도 있었죠. "어떤 할일 없는 사람이 이런거 열어보고 있겠어?", "아니 누가봐도 떳떳한 내용들 밖에 없는데 무슨상관이야?" 하지만 세상을 넓고, 다양한 사람들이 있습니다. 그리고 가장 중요한 것은 이렇게 되면 우리는 정상적인 서비스를 이용할 수가 없습니다. 

 

정상적이지 않은 서비스들에 대해서 아래와 같이 예를 들어보겠습니다. 물론 정확한 내용은 아니고 개념적인 이해를 위해서 작성해보았습니다.

1-1. 누군가 메시지를 엿볼 수 있습니다.

친구와 채팅 및 사진을 주고 받는 웹서비스가 있습니다.

친구들과 사적인 대화나 사진들을 주고 받으며 즐길 수 있습니다. 이 과정을 누군가 엿본다면 어떨까요? 어제 친구와 주고 받은 내용을 누군가 알고 맘대로 게시될 수 있다는 것. 악의적 의도를 가지고 엿보는 사람이 있다는 것은 정말 불쾌한 일입니다. 사용자는 더이상 서비스를 사용하지 않을 것이고 서비스는 종료될지도 모르는 일입니다. 내가 공개를 원치 않는 정보는 누구도 알 수 없어야합니다. 

1-2. 누군가 메시지를 가로채서 변경할 수 있습니다.

메시지를 전달하는 웹서비스가 있습니다.

이 서비스를 통해서 친구들에게 모임날짜와 시간을 전달합니다. 이 때 누군가 가로채서 날짜와 시간을 변경합니다. 그리고 자신에게는  올바르게 작동한 것처럼 속입니다.

본인에게는 올바른 것 처럼 표시되었으니 인지하지 못할 것이고, 다른 사람들은 혼란에 빠지게 될 겁니다. 사실 웹 서비스의 신뢰도 자체가 없게 됩니다. 정상적으로 작동하지 않는 서비스를 이용할 이유는 없습니다.

 

 

사실 위의 상황이 동시에 일어나게 될 겁니다. 이것 외에도 HTTPS에서는 우리가 접속한 서버가 올바른 서버인지 확인해주는 기능도 제공합니다. 올바르지 않은 서버에 접속되었다면 메시지가 도청되지 않고 변조되지 않는 것에 의미가 없을 테니 말입니다.

 

정리하면,

  1. 우리가 요청을 원했던 서버에 올바르게 접속이 되었는지 확인합니다.
  2. 메시지를 도청으로 부터 보호합니다.
  3. 메시지를 변조로 부터 보호합니다.

위의 3가지 요소를 보장하기 위해서 사용된다는 것으로 이해하면 무리가 없을 것 같습니다.

그리고 위의 기능들은 사실 SSL/TLS가 보장해 주는 것들입니다. SSL/TLS라는 소켓 보안 레이어 위에서 HTTP프로토콜을 주고 받는 것이  HTTPS이기 때문에 이 글에서는 기능적은 점들만 정리해보겠습니다.

 

2. 현재 HTTPS가 보장하지 못하는 일들, 그리고 잃는 것

위의 문제점들을 HTTPS가 보장을 해준다면, 우리는 누군의 도청이나 간섭으로 부터 완전하게 자유롭게 웹 서비스를 이용할 수 있을까요? 

 

아닙니다. 서버에 접속을 요청하는 ip나 도메인 네임은 암호화 되기 전에 주고 받기 때문에 누군가 볼 수 있습니다. 특정 서버로의 차단은 이부분을 미리 확인해서 처리합니다. 앞으로의 버전에서는 이 부분까지 암호화하는 것을 목표로 하고 있습니다. 

 

몇몇의 사이트를 제외하고는 우리는 안전하게 메시지를 주고 받습니다. 하지만 암호화 과정이 추가되기 때문에 성능에 있어서 손해를 보게 됩니다. 그래서 트래픽이 아주 많은 사이트들은 HTTPS도입시에 성능 고려를 해야하는 것으로 알고 있습니다.

 

3. 마치며

HTTPS가 필요한 이유에 대해서 개념적인 부분을 정리해 보았습니다. 다음 글은 기술적인 부분을 정리해 보려고합니다. 제 기억속에 더 명확히 남기를 기대하면서 마치겠습니다.

 

4. 사족

다른 내용들을 마크다운을 통해서 작성했는데, 아직 결과물에 대해서 기대한대로 작동하지 않아서 기본기능으로 작성해보려고 합니다. 기본 에디터도 충분히 훌륭해진 것 같습니다. :)