대칭키와 공개키

Bigmountain·2021년 4월 15일
0

이해하기

목록 보기
1/1

참조

대칭키

  • 동일한 key로 암호화, 복호화 하는 것.
    • 원래 정보를 알아보기 어렵게 key를 이용해 내용을 바꿔준다. 암호화 한다.
    • key를 아는 사람만 복호화할 수 있다.
    • 대칭키는 누군가 key를 알면 쉽게 복호화할 수 있다. (암,복호화 key가 동일하기 때문에)
  • 이러한 문제를 극복하기위해 나온게 공개키 방식이다.

공개키

  • 비공개키는 자신만이 가지고 있고, 공개키를 타인에게 제공한다.
  • 공개키를 제공 받은 타인은 공개키를 이용해서 정보를 암호화한다.
  • 암호화한 정보를 비공개키를 가지고 있는 사람에게 전송한다.
  • 비공개키의 소유자는 이 키를 이용해서 암호화된 정보를 복호화 한다.
  • 이 과정에서 공개키가 유출된다고해도 비공개키를 모르면 정보를 복호화 할 수 없기 때문에 안전하다.
  • 공개키로는 암호화는 할 수 있지만 복호화는 할 수 없기 때문이다.
  • 데이터랑 같이 전달하는 KEY를 공개키라고 한다.
  • 공개 KEY에 매핑되어 내가 가지고 있는 KEY가 개인키(Private Key)이다.

공개키 의문점

  • 위의 설명을 이해해 본다면 공개키 방식을 이용하기 위해서는, 개인키와 매핑되는 공개키를 생성해야 한다.
  • 그런 다음, 공개 키를 뿌린다.
  • 그러면 공개키를 받은 Client들은 정보를 공개키로 막 암호화 시킬 수 있다.

그렇다면 공개키를 알고 있는 Client는, 공개키로 암호화 된 데이터를 통신할일이 절대로 없을까 ?????

  • server <-> client관계에서 공개키 방식을 사용한다면, client는 공개키로 암호화 된 정보를 받게될 수도 있지 않나?

이에 대한 해답 !

  • 참조1, 참조2

  • 위키피디아에서 아래와 같이 공개키를 설명하고 있다.

    • 공개 키 암호 방식은 암호 방식의 한 종류로 사전에 비밀 키를 나눠가지지 않은 사용자들이 안전하게 통신할 수 있도록 한다.
    • 공개 키 암호 방식에서는 공개 키와 비밀 키가 존재하며, 공개 키는 누구나 알 수 있지만 그에 대응하는 비밀 키는 키의 소유자만이 알 수 있어야 한다
  • 공개키 암호 방식은 크게 두 가지 종류로 나뉜다 !

  1. 공개 키 암호 — 특정한 비밀 키를 가지고 있는 사용자만 내용을 열어볼 수 있음.
  2. 공개 키 서명 — 특정한 비밀 키로 만들었다는 것을 누구나 확인할 수 있음.
  • 이 두가지 종류로 분류한다는 정의가, 나에겐 해답이 되었다.
  • 개인키로 잠군다 -> 서명과 같은 인증을 위해 사용 (공개키로 풀 수 있다.)
  • 공개키로 잠군다 -> 암호화 (개인키로만 풀 수 있으니깐)

즉, 공개키로 Sever - Client가 서로 데이터를 주고받는다고 가정을 한다면..

  • 두 서버 모두 각자의 개인키에 대한 공개키가 존재해야 한다.
  • 따라서 데이터를 받을 때는, 자신의 비밀키와 대칭대는 공개키로 암호화 된 데이터를 전달받아야 한다.
구분개인키공개키
servers1s_public
clientc1c_public

server -> client 데이터를 보낼 때, c_public으로 암호화 해서 보내야 함.
client -> server 보낼 때, s_public으로 암호화 해서 보내야 함.
그래야, 각 서버에서 데이터를 복호화 할 수 있다.

공개키를 활용한 전자서명

  • 만약 공개키를 전송할 때 개인키로 암호화를 한다면 ??
  • 데이터를 전송하는 과정에서 공개키가 노출되었다면, 공개키로 데이터를 복호화할 수 있다.
    • 개인키로 암호화 된 데이터는, 매핑 된 공개키로 복호화할 수 있다. (A <-> B 관계니깐)
  • 이 경우가 왜 쓰일까 ??
    • 만약 데이터는 누가봐도 상관이 없는데 .. 이 데이터를 보낸사람이 나쁜놈이 아닌지 알고싶다면??
      (즉, 내가 허락한 놈인걸 알 수 있다면 ??)
    • 클라이언트에서는 전달받은 데이터를 공개키로 복호화 한다.
    • 그렇다면, 이 데이터를 전송한 client는 이 공개키에 대한 private key를 가지고 있는 대상이구나를 판별할 수 있다.

0개의 댓글