[암호화] 대칭키(비공개키)와 비대칭키(공개키) 란 ?

저번 포스팅에서 "암호화"에 대해 알아보았습니다.

암호화에는 단방향 암호화, 양방향 암호화 두 종류가 있었는데요.

이번 포스팅에선  양방향 암호화인 대칭키(비공개키)와 비대칭키(공개키)에 대해 설명해 보도록하겠습니다.

 

암호화, 복호화란 무엇인지에 대해 궁금하신 분들은 아래 포스팅을 참고하시면 됩니다.

 

암호화, 복호화란 ? 쉽게 알아보자.

암호란 ? 평문을 암호문으로 변환하거나 암호문을 평문으로 변환하는 기술을 의미합니다. 평문 해독 가능한 형태의 텍스트 ( 보고 알아볼 수 있다. ) "12345" , "안녕하세요", "반갑습니다" 암호문

hstory0208.tistory.com

 


대칭키(비공개키)

암복호화에 사용하는 키가 동일한 암호화 방식으로 공통키라고도 합니다.

송수신자는 서로 공유된 대칭키를 가지고 통신하게 됩니다.

예를 들어
내 컴퓨터와 다른 서버에 동일한 키가 있다면
서버에 로그인할 때 실어보내는 비밀번호를 동일한 키로 암호화하고
서버에서는 동일한 키로 복호화해 인식합니다.

 

대칭키의 특징

암복호화서로 동일한 키가 사용되는 암호화 방식. 그래서 키를 비공개합니다.

    • 대표 알고리즘  : DES, 3DES, AES, SEED, ARIA 등

 

장점

비대칭키(공개키) 암호화 방식에 비해 속도가 빠릅니다.

 

단점

키를 교환해야한다는 문제 (키 배송 문제)가 존재해 송신 측에서 수신측에 암호 키를 전달하는 과정에서 노출우려와 키가 탈취될 수 있는 문제가 있습니다.

또한, 사람이 증가할수록 전부 따로따로 키교환을 해야하기 때문에 관리해야 할 키가 방대하게 많아집니다.

 

이러한 키 배송 문제를 해결하기 위한 방법으로 다음과 같은 방법들이 있습니다.

  • 키의 사전 공유에 의한 해결
  • 키 배포센터에 의한 해결
  • Diffie-Hellman 키 교환에 의한 해결
  • 공개키 암호에 의한 해결

비대칭키(공개키)

암복호화에 사용하는 키가 서로 다른 암호화 방식

따라서 비대칭키 암호화 에서는 송수신자 모두 한쌍의 키(개인키, 공개키)를 갖고있게 됩니다.

 

  • 공개키 = 모든 사람이 접근 가능한 키
  • 개인키(비밀키) = 각 사용자만이 가지고 있는 키
비대칭키의 암호화 방식
공개키를 통해서 암호화를 하고 비밀키를 통해서 복호화를 합니다.
공개키는 공개해도 상관없으니 키 관리에 어려움이 없으나, 속도가 느리다.

 

 

예를 들어, A가 B에게 데이터를 보낸다고 할 때,

A는 B의 공개키로 암호화한 데이터를 보내고 B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에

암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼 수 있게 되는 것 입니다.

  1. B 공개키/개인키 쌍 생성
  2. 공개키 공개(등록), 개인키는 본인이 소유
  3. A가 B의 공개키를 받아옴
  4. A가 B의 공개키를 사용해 데이터를 암호화
  5. 암호화된 데이터를 B에게 전송
  6. B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)

따라서, 공개키는 키가 공개되어있기 때문에 따로 키교환이나 분배를 할 필요가 없습니다.

만약 해커가 B의 공개키를 탈취한다 해도, B의 개인키로만 복호화가 가능하기 때문에 안전하지만, 이러한 과정으로 속도가 느리다는 단점이 있습니다.

 

장점

키를 분배할 필요가 없다.

개인키로만 복호화가 가능하기 때문에, 대칭키의 키 배송 문제를 차단하기 때문에 안전성이 높다.

 

단점

대칭키에 비해 속도가 느리다.

 


참고자료
https://www.uname.in/129