본문 바로가기
IT Series

IT 지식) HTTPS란 ? /키 페어/대칭키/비대칭키(=공개키)/CA

by 개발이 체질인 나그네 2022. 4. 13.
반응형

 

우리가 아는 주소의 형태는 흔히

"https://www.naver.com/

이렇게 생겼습니다.

 

맨 앞에 https:// 라고 붙어있는 문자의 의미는 뭘까요?

 

HTTPS란?

Hyper

Text

Transfer

Protocol

Secure

 

라는 뜻으로,

마지막 Secure(안심하는, 안전한) 단어가 들어가는걸로 보아, 서버의 안정성을 높이는 뜻을 갖고 있습니다.

 

 

 

 

위 사진처럼 클라이언트에서 서버로 데이터를 보낼 때, 

HTTP는 데이터 텍스트 형태 그대로를 보내지만,

HTTPS는 데이터를 암호화 해서 보내게 됩니다.

 

때문에, 중간에 제 3자가 그 데이터를 읽는다고 해도, 암호화 되어 있기 때문에, 사용할수가 없죠.

 

만약 회원가입 기능이 들어가 있는 웹,앱 서비스인 경우, 중간에 다른사람이 로그인 정보를 보게되면,

여러분들의 정보가 해킹된거나 다름이 없죠.

 

이런 상황을 방지하기 위해 HTTPS를 웹서버에 적용 시킵니다.

 

요약 :

(1) 내가 사이트에 보내는 정보들을 제 3자가 못보게 한다.

 

(2) 접속한 사이트가 믿을 만한 곳인지를 알려준다.

 

 

 

대칭키 란?

 

 

HTTPS는 클라이언트에서 서버로 데이터를 보낼 때, 데이터를 암호화해서 보낸다고 했습니다.

 

제 3자는 암호화된 내용을 봐도 뭔지를 모르는거 처럼, 복호화를 해주지 않으면 서버에서도 이 데이터를 확인 할 수 없습니다.

 

암호화된 값을 복호화 하기 위해 필요한게 대칭키 입니다.

 

클라이언트와 서버에서 모두 동일한 대칭키를 갖고 웹 서비스를 구축하게 됩니다.

이렇게 되면 클라이언트와 서버에서만 데이터를 볼 수 있고, 그 외 데이터를 조회할 수 있는 곳에서는 암호화된 정보만 볼 수 있습니다.

 

하지만 대칭키는 한가지 약점이 있습니다.

 

대칭키를 해킹당하는 순간, 클라이언트와 서버 외부에서도 데이터를 복호화 할 수 있게됩니다.

이 부분을 보완하기 위해 비대칭키 라는 개념이 탄생합니다.

 

비대칭 키(=공개키) 란?

대칭키에서는 같은 키로 복호화를 할 수 있었지만,

비대칭 키는

A키로 암호화를 하면, B키로만 복호화 할 수 있고,

B키로 암호화를 하면, A키로만 복호화 할 수 있습니다.

 

클라이언트에서는 A키로 암호화해서 서버로 보내고, 서버에서는 B키로 복호화를 합니다.

 

이때 A키를 비대칭키(공개키) 라고 하며, 클라이언트 어디든 공개를 합니다.

이렇게 되면, 서버로 암호화시켜서 데이터를 보낼 순 있지만,

 

복호화를 할 수 있는 키는 서버가 갖고 있는 B키 하나 밖에 없으니, 

 

중간에 데이터를 누가 가로채는 일은 없습니다.

 

 

CA(Certificate Authority) 란?

공개 키를 모든 클라이언트에 공개 했지만 , 이 공개키가 네이버인지 네이벍인지 확인 할 수 있는 방법은 없습니다.

 

때문에 공개키가 정품 인증이 된 키인지를 증명하는, 공인 인증 회사가 있습니다.

이런 역할을 하는걸 CA 라고 합니다.

 

이런 정품인증을 하는 역할은 주로 브라우저(크롬, 사파리, 파이어폭스 등..)에서 합니다.

 

크롬에는 CA List라고 사전에 정품인증을 통과한 공개키를 모아둔 리스트 입니다.

만약 어떤 서버에접근 할 때, 크롬의 CA List에 해당 서버에서 보내는 공개키가 없다면, 안전하지 않은 서버가 되며

키를 갖고 있어도 접근이 막히게 됩니다.

(접근금지를 무시하는 방법도 있습니다.)

 

클라이언트에서 서버로 데이터를 보낼 때, 클라이언트는 서버가 네이버인지 네이벍인지 신뢰할 수 가 없습니다.

 

이때 서로 탐색과정을 거치는데 이 과정을 HandShake 라고 합니다.

 

HandShake 란?

먼저 클라이언트에서 랜덤 데이터를 서버에 보냅니다.

이걸 받은 서버는 인증서(CA)를 받아 같이 보냅니다.

클라이언트에서는 CA가 정품인증이 됬는지, 브라우저에서 확인을 하게 되고, 정품인증이 된 CA라면 신뢰를 얻어,

대칭키를 통해 데이터를 주고 받게 됩니다.

 

만약 CA에 서버에서 보낸 CA가 없다면, 정품 인증이 된 CA가 아니기에, 신뢰를 받지 못하고, Not secure라는 메세지가 나오면 접근을 불허합니다.

 

 

 

 

위와 같은 과정을 통해 HTTPS를 적용시키고, 클라이언트와 서버는 데이터를 주고 받습니다.

 

CA 정품인증을 통해 클라이언트와 서버를 서로 신뢰하게 만들고, 키 페어를 통해 데이터를 암호화/복호화를 합니다.

 

 

 

 

 

 

 

반응형

댓글