Computer Science/Network

암호화 통신 HTTPS란? (개념/ 동작 방식/ 대칭키/ 비대칭키/ SSL/TLS)

JeongKyun 2022. 6. 13.
반응형

HTTP란?


HTTPS를 알아보기전 HTTP에 대해 알아보자.

HTTP는 서버와 클라이언트 간에 데이터를 주고받는 프로토콜을 말한다.

HTTP는 텍스트, 이미지, 영상 등 웹상에서 주고 받을 수 있는 모든 형태의 데이터를 전송할 수 있다는 특징을 갖고있다.

HTTP의 보안은 ?

HTTP 통신은 클라이언트와 서버간의 통신에 있어 특별한 보안 처리 없이 통신을 하기 때문에 만약 누군가 네트워크 통신 패킷을 가로챈다면 해당 데이터에 담긴 정보를 탈취 당할 수 있다.

탈취당한 그 정보가 본인의 계좌정보, 주민번호, 패스워드 등 중요한 개인 신상정보가 담겨져 있다면 보안적으로 큰 문제가 발생할 수 있다.

이러한 HTTP의 보안적인 문제를 해결하기 위해 등장한 것이 HTTPS이다. 이제 HTTPS에 대해 하나씩 알아보자.


HTTPS란?


요즘 어느 웹사이트들을 들어가도 위와 같이 자물쇠 모양을 확인할 수 있다. 이 자물쇠로 해당 사이트가 현재 HTTPS가 적용 되어있는지 안되어있는지를 나타내준다.

이 HTTPS는 14년 구글에서 모든 HTTP 사이트들을 보안 문제로 HTTPS로 변경하라고 권고를 하기 시작했다. HTTPS로 바꾸는 말 잘듣는 사이트들에게는 구글 검색 엔진인 SEO에 있어서 가산점을 주겠다고 발표했다.

구글의 검색 엔진 가산점 효과 하나로 세상은 빠르게 HTTPS 세대로 변하기 시작한다.

이제 이 HTTPS는 어떤 보안 체계를 갖고 보안성을 올릴 수 있는지에 대해 알아보자.

HTTPS 보안 동작 방식

HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식 두개 모두 사용하는 암호화 프로토콜이다. 해당 암호화에 대한 개념은 다음과 같다.

해당 이미지는 이전 AES / SHA 암호화에 대해 알아볼 때 작성했던 내용인데 이해를 위해 다시 가져와봤다. HTTPS는 양방향 암호화에 속하며 해당 암호화 종류들은 다음 이미지와 같다.

이제 대칭키와 비대칭키의 특징에 대해 알아보자.

대칭키 암호화

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


비대칭키 암호화

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

이렇게 해당 암호화에 대한 뜻을 알아보고 이제 HTTPS의 동작 방식에 대해 알아보자.

위의 이미지는 HTTPS의 동작 방식을 나타내는 다이어그램인데 설명을 하자면 다음과 같다.

HTTPS도 연결 과정에 있어 handshake 과정을 거치는데, 먼저 서버와 클라이언트 간에 세션키를 교환한다. 여기서 교환한 세션키는 주고 받는 데이터를 암호화 하기위해 사용되는 대칭키이며, 데이터 간의 교환에는 빠른 연산 속도가 필요하므로 세션키는 대칭키로 만들어진다.

여기서 발생하는 문제가 하나 있는데 이 세션키를 클라이언트와 서버가 어떻게 교환할 것이냐 인데, 이 과정에서 비대칭키가 사용된다.

즉, 다시 말해 처음 연결을 성립하여 안전하게 세션키를 공유하는 과정에서 비대칭키 암호화가 사용되는 것이며, 이 후 데이터를 교환하는 과정에서는 빠른 연산 속도를 위해 대칭키가 사용되는 것이다.

HTTPS 통신 방식 정리 [6 Step]

[step1]

클라이언트(브라우저)가 서버로 최초 연결 시도를 한다.(handshake)

[step2]

서버는 공개키(인증서)를 클라이언트(브라우저)에게 넘겨준다.

[step3]

클라이언트(브라우저)는 SSL인증서의 유효성을 검사 한 후 세션키를 발급한다.

[step4]

클라이언트는 세션키를 보관하며 서버의 공개키로 세션키를 암호화하여 서버로 전송한다.

[step5]

서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻는다.

[step6]

클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 같은 세션키로 암/복호화를 진행하여 통신한다.


마무리 정리


우선 통신 방식에 대해 말해보라하면, 세션키를 대칭키로 사용하여 빠르게 암복호화를 하며 통신을 진행하는데, 이 세션키를 키로 사용하기 위한 교환 방식은 비대칭키 암호화를 거쳐 주고 받는 과정들에 대해 말하면 된다.

그리고 HTTPS하면 SSL/TLS라는 단어를 많이 볼 수 있는데, 이것은 다음과 같다. (보통 SSL, TLS를 같은 의미로 부른다.)

TLS(전송 계층 보안)란 데이터 무결성을 제공하기 때문에 데이터가 전송중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웹 사이트와 통신하고 있음을 입증하는 인증 기능을 제공해준다.

댓글

💲 많이 본 글