본문 바로가기

OSI 7계층/[기타] 보안

HTTPS[HyperText Transfer Protocol over Secure Socket Layer] 통신



여러분 우리는 약 20년 전만 해도 인터넷은 일상속에서 흔히 볼 수 없는 세상에서 살고 있었습니다.

이렇게 블로그를 작성하는 것도 쉽지 않은 세상이였죠

하지만 지금은 개인마다 PC를 보유하고 있으며, 각 기업들 또한 Web Service를 제공하기 위해 전산망 구축이 필수적인 시대가 되었습니다.

그렇다면 개인과 기업간 서로 정보를 주고 받기 위한 가장 쉬운 방식이 HTTP, HTTPS를 이용한 통신,

즉 우리가 흔히 인터넷으로 접할 수 있는 것 들이라고 할 수 있습니다.

오늘은 이 HTTP, HTTPS에 대해서 간략히 알아보도록 하겠습니다.

 

1. HTTP, HTTPS란?

 

백과사전에서 HTTP는

 

인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약이다. 하이퍼텍스트는 문서 중간중간에 특정 키워드를 두고 문자나 그림을 상호 유기적으로 결합하여 연결시킴으로써, 서로 다른 문서라 할지라도 하나의 문서인 것처럼 보이면서 참조하기 쉽도록 하는 방식을 의미한다.

[네이버 지식백과] HTTP [hypertext transfer protocol] (두산백과)

 

이처럼 Server에 저장되어 있는 데이터를 사용자가 요청하면 그때마다 데이터를 보여주기 위해 사용 되는 Protocol이 HTTP라고 할 수 있습니다.

HTTPS는

HTTPS(HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS,[1][2] HTTP over SSL,[3] HTTP Secure[4][5])는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다.

 

HTTP는 인터넷 상에서 평문통신이라 하여 외부의 어떠한 공격자가 있다면 패킷을 탈취하여 어떠한 데이터들이 왔다갔다하는지 볼 수가 있습니다.

하지만 HTTPS를 이용한다면 서버와 사용자간의 통신을 암호화 하여 왔다갔다하는 데이터를 서버와 사용자 이외에 아무도 볼 수 없게 암호화 합니다.

그림처럼 데이터가 있다면 그 위해 암호화를 통해 갑옷으로 감싸서 내부 내용을 볼 수 없게 하는 것과 같은 의미입니다.

아이언맨 갑옷처럼 아무리 외부에서 공격이 들어와도 내부의 몸을 보호할 수 있겠죠?

이러한 암호화 방식은 여러 종류가 있지만 이는 다음에 알아보도록 하며, 오늘은 HTTPS 통신의 입문과정으로 어떻게 처음에 HTTPS 통신을 시작하는지 알아보도록 하겠습니다.

 

2. HTTPS 통신의 기초

 

TCP 통신을 위해서 3-way-handshaking 과정을 거치고 난 뒤 암호화 통신, SSL 통신을 위해서 SSL-handshaking 과정을 거치게 됩니다.

이 과정은 암호화 통신을 하기 위해 어떠한 암호화 방식을 이용할 것인지를 정하는 과정입니다.

 

1. 최초의 TCP 통신을 위해 3-way-handshaking 통신 진행

2. 이후 SSL 통신을 위해 Client에서 Client Hello 패킷을 전송

Client Hello 패킷이란?

Client의 HTTPS 통신을 하기 위한 환경을 알려주는 것으로, SSL Version은 무엇이 사용 가능한지, Cipher suite는 어떠한 알고리즘이 사용 가능한지 Server에게 전달하는 패킷

3. Client Hello 패킷을 전달 받은 Server는 Server Hello 패킷을 전달한다

Server Hellow 패킷이란?

Client로 부터 전달 받은 Client Hello 패킷을 확인 후 Client가 제공한 환경 중에 선택하여 어떠한 SSL Version, Cipher suite 알고리즘을 이용하여 암호화 할 것인지 선택한다

4. 최종 SSL 협상이 끝나면 Server가 가지고 있는 인증서과 키를 교환한 뒤, 암호화된 Application Data를 전송

 

3. HTTPS 통신 실제 사례[Wireshark]

 

위 그림은 HTTPS 통신을 하기위한 전체 통신 과정을 나타 냅니다.

 

TCP 3-way-handshaking 과정이 끝난 뒤 Client Hello 패킷을 전달하는 그림입니다.

내용은 Client에서 사용할 수 있는 Cipher suite 알고리즘 리스트를 전달 하는 것을 확인 할 수 있습니다.

 

Client Hello 패킷을 전달 받은 Server는 Server Hello 패킷을 전달하는 그림입니다.

내용에 보시면 Cipher suite는 어떠한 알고리즘을 사용할 것인지 정해서 Client에게 알려주는 내용이 포함되어 있습니다.

 

마지막으로 협상과정이 끝나면 인증서와 키를 교환하여 암호화 통신을 시작합니다.