개발_기타/미분류

대칭키, 공개키(비대칭키) 암호화 통신

zuyo 2021. 8. 1. 13:16
반응형

키를 이용한 암호화 통신은 크게 대칭키 암호화 방식과 공개키 암호화 방식으로 나뉜다.

1. 대칭키 암호화 방식 (symmetric-key algorithm)

대칭키 방식은 통신하는 주체들이 동일한 비밀키를 갖고, 그 키를 이용해 암복호화하며 통신하는 방식이다.

하나의 키로 암호화, 복호화가 가능하다.

그러나 대칭키 방식의 문제점이 있다..

  • 키 교환 (처음에 대칭키를 어떻게 전달할거냐?) → 키 교환엔 비대칭키 방식을 사용하면 해결 가능
  • 키 관리 (통신할 주체가 늘어나면 그 수만큼 대칭키가 늘어나게 됨)
  • 키를 도난당한 경우 복호화 될 수 있음

※ 대표적인 대칭키 알고리즘으로는 DES, triple-DES, RC4, IDEA, AES 등의 외산 알고리즘과 SEED, ARIA 등의 국산 알고리즘이 있다. 우리나라 공인인증체계에서는 SEED를 주로 사용하며 제한적인 부분에서 DES, triple-DES, RC4를 사용하고 있다.


2. 공개키 암호화 방식 (Public Key Cryptography) = 비대칭키 암호화 방식

대칭키 암호화 방식의 문제점을 해결할 수 있는게 바로 비대칭키(공개키) 암호화 방식이다.

비대칭키는 {공개키, 개인키} 한 쌍의 키를 말하며, 각각 암호화, 복호화에 사용한다.

  • 공개키로 암호화 하는 경우 : 개인키로 밖에 복호화 할 수 없으므로 '암호'의 성질을 지닌다.
  • 개인키로 암호화 하는 경우 : 암호화는 개인키를 가진 본인만 가능하지만, 복호화는 공개키를 가지고 있다면 누구나 가능하므로 '서명'의 성질을 지닌다.

보통 대칭키 방식과 조합해서 사용한다.

간단히 설명하자면

A와 B가 있다고 치자

  1. B가 A에게 자신의 공개키(B)를 넘긴다.
  2. A는 B의 공개키(B)를 사용하여 대칭키를 암호화시킨 뒤 B에게 전달한다.
  3. B는 자신의 개인키(B)를 사용하여 A가 보내준 대칭키를 복호화한다.
  4. 이후 대칭키로 암복호화하며 통신한다. (비대칭키 방식은 오버헤드가 크기 때문에 통신 시에는 대칭키를 사용)

※ 대칭키는 데이터 한 번 보내고 버리기도 하고, 정책에 따라 더 쓸 수도 있기도 함 (10번, 하루 등)

이렇게 대칭키 방식의 문제점(대칭키를 어떻게 전달하는가)을 해결할 수 있다.

  • 키 교환 → 상대에게 받은 공개키로 암호화하여 대칭키를 전달하므로 안전하게 키 교환이 가능해진다.
  • 키 관리 → 통신 시마다 대칭키를 새로 생성해 쓰면 되므로, 통신주체마다 대칭키를 관리할 필요가 없다.

※ 키 교환 알고리즘으로는 우리나라 공인인증체계에서는 RSA 알고리즘을 주로 사용하며, 제한적인 환경에서 ECDSA와 KCDSA를 사용한다.

※ 이걸 표준화 한 게 TLS, SSL라고 하며, 이를 적용하여 웹브라우저와 웹서버간에 키 교환을 한 뒤 메시지를 암호화하여 통신하는 것을 HTTPS라 한다.

 

반응형