본문 바로가기

CS/보안

공개키와 비공개키

반응형

이전 글에서는 HTTPS와 HTTP의 차이, 대칭키는 무엇인지에 대해 정리했었습니다. 관련 내용은 아래의 링크를 통해 확인해주세요!

 

2022.02.22 - [분류 전체보기] - HTTPS와 HTTP의 차이 / SSL 디지털 인증서란?

 

HTTPS와 HTTP의 차이 / SSL 디지털 인증서란?

웹 서핑을 하다보면 어떤 사이트는 http:// 로 시작하고 어떤 사이트는 https:// 로 url이 시작하는 걸 자주 확인 할 수 있었다. http와 https는 구체적으로 뭐가 다른지에 대해 정리 해보려고 합니다. 본

jminc00.tistory.com

 

이번 글에서는 이전 글에서 다룬 대칭키의 한계와 그 한계를 어떻게 극복했는지 정리해 보겠습니다. 

 

이번 글도 '생활 코딩'의 내용과 제 생각을 같이 정리했으니 잘못된 부분이 있으면 댓글로 달아 주세요!!

 

먼저 대칭키에 대해 간단히 정리 하자면 보내는 사람이 암호화한 내용을 받는 사람이 복호화는 과정에서 하나의 키를 공유하는 방법입니다. 

 

대칭키의 이러한 특징 때문에 대칭키는 그 한계가 명확한데 하나의 키를 공유하는 과정에서 제삼자에게 그 키가 노출될 수 있다는 점입니다. 

 

대칭키의 한계를 보완하기 위해 등장한 개념이 바로 '공개키 / 비밀키(비공개키)' 방법입니다. 

 

이후의 내용을 정리 하기 전에 한 가지 전제를 설정하겠습니다. 

 

"A키로 암호화를 한다면 B키로 복호화가 가능하고, B키로 암호화를 한다면 A키로 복호화가 가능한 것이다. "

 

즉, 공개키로 암호화를 했다면 비공개키로 복호화가 가능하고 비공개키로 암호화를 했다면 공개키로만 가능하다는 것입니다. 

 

지금부터 두 가지 예를 들겠습니다. 

 

  1.  공개키를 암호화 하는 경우. 
  2.  비공개키를 암호화하는 경우

 

  • 공개키를 암호화 하는 경우 

먼저 공개키를 암호화 하는 경우를 예를 들어 설명해 보겠습니다. 

 

클라이언트가 웹서버에 접속해 로그인을 하려고 한다고 가정해 봅시다. SSL 프로토콜을 사용하는 웹서버의 경우 클라이언트를 포함한 모두에게 공개키를 볼 수 있도록 제공합니다. 

 

클라이언트는 이 공개키로 자신의 아이디, 비밀번호를 암호화해 웹 서버로 전송합니다. 이 과정에서 제삼자가 그 암호화된 정보를 본다고 하더라도 웹서버만 비밀키를 가지고 있기 때문에 그 정보가 어떤 정보인지 알 수 없습니다. 

 

웹서버는 클라이언트가 보낸 암호화된 정보를 비밀키를 통해 복호화하고 아이디, 비밀번호가 DB에 저장된 정보와 일치하는지 판단하고 일치하다면 로그인이 완료 됐다는 응답을 전송합니다. 

 

정리하자면, 공개키를 암호화 하는 경우는 데이터 보안에 중점을 둔다.

 

위의 예시를 통해 공개키 방법론에 대한 이해가 어느 정도 된 것 같습니다. 하지만 공개키 방법론에 위대함은 여기서 끝나지 않았습니다. 

 

  • 비 공개키를 암호화하는 경우

공개키로 암호화를 하는 경우에는 "데이터 보안"에 중점을 둔다고 했습니다. 그럼 반대로 비 공개키를 암호화하는 이유는 뭘까요? 

 

이번에도 하나의 예를 들어 보겠습니다. 클라이언트가 한 웹 서버에 접속해 로그인을 하려고 합니다. 

 

근데 그 웹서버가 클라이언트가 접속하려는 웹 서버인지 아닌지에 대한 정보는 알 수 없습니다. 즉, SSL 프로토콜을 사용하지 않는 다면 클라이언트가 접속하려는 웹서버인지 "인증" 할 수 없다는 겁니다. 

 

이 문제를 해결하기 위해 비공개키를 공개하게 됩니다. 

 

비밀키를 소유한 웹 서버 운영자는 비밀키로 데이터를 암호화하고 공개키와 함께 전달합니다. 이 과정에서 공개키를 획득한 사람은 공개키를 이용하여 데이터 복호화가 가능하게 됩니다. 

 

즉, 비밀키를 같이 전달 함으로써 현재 접속하고 있는 웹서버가 클라이언트가 접속하려는 웹서버임을 '인증' 하게 되는 역할을 하는 겁니다. 

 

정리하자면, 비밀키를 암호화 하는 경우는 인증에 중점을 둡니다. 

 

반응형

'CS > 보안' 카테고리의 다른 글

XSS (Cross-Site-Scripting)  (0) 2022.03.24
HTTPS와 HTTP의 차이와 SSL 디지털 인증서  (0) 2022.02.22