대칭키와 비대칭키

데이터를 암호화하는 방식에는 암호화와 복호화에 동일한 키를 사용하는 대칭키 방식과 다른 키를 사용하는 공개키(비대칭키) 암호 방식으로 나눌 수 있습니다. 이번 포스팅에서는 두 방식을 비교하고 각각의 장단점을 정리해보려고 합니다.

대칭키 암호 방식

대칭키 암호화 방식은 암호화와 복호화에 동일한 키를 사용하는 암호 방식입니다. A가 B에게 데이터를 주려고 할 때 도청의 위험이 있기 때문에 암호화하여 전달하려고 합니다. 이때, 대칭키 암호 방식을 사용하여 데이터를 주고 받는 과정 및 장단점은 다음과 같습니다.

사용 과정

  1. A는 키를 이용해 데이터를 암호화하여 암호문을 B에게 전달
  2. B는 전달받은 암호문을 동일한 키를 이용하여 복호화하여 데이터를 사용

장단점

  • 장점
    • 암호화 방식의 속도가 빠름
  • 단점
    • 키 배송 문제(보안)
    • 사용자가 많아지면 그 때마다 새로운 키를 추가 (관리 어려움)

대칭키 암호 방식의 보안성은 얼마나 안전하게 키를 전달하는지에 달려 있습니다. 믿을만한 채널을 통해 키가 전달되었다면 괜찮지만, 키가 노출된 상황이라면 암호문을 도청한 후 키로 복호화할 수 있는 위험이 있기 때문입니다. 이러한 키 배송 문제에 대한 해결 방법으로는 키 교환 프로토콜이나 공개키 암호 방식을 사용하는 방법이 있습니다.

[ 대표 알고리즘 ]
SEED, DES, 3DES, AES, ARIA, ChaCha20 등


공개키 암호 방식

공개키 암호화 방식은 암호화와 복호화에 서로 다른 키를 사용하는 비대칭키 암호입니다. 이때 암호화에 사용되는 키를 공개키, 복호화에 사용되는 키를 비밀키라고 합니다.

공개키 암호 방식을 구현한 구체적인 알고리즘을 찾는 것은 쉽지 않습니다. 어떤 숫자(키)를 사용해 데이터를 암호화할 때 다른 숫자를 사용해 원래 데이터로 돌릴 수 있어야 하고, 한쪽의 키로 다른 키를 추측할 수 없는 연산이 필요합니다. 따라서 RSA 암호같은 구체적인 공개키 암호 방식을 구현한 알고리즘은 현대의 인터넷 보안에 굉장히 큰 의미가 있습니다.

공개키 암호화 방식을 사용하는 방식 및 장단점은 다음과 같습니다.

사용과정

  1. 데이터를 받는 B가 공개키와 비밀키를 생성합니다.
  2. 이 중 공개키를 A에게 전달합니다.
  3. A는 전달할 데이터를 공개키로 암호화한 이후에 B에게 암호문을 전달합니다.
  4. B는 비밀키로 암호문을 복호화하여 데이터를 사용합니다.
  5. 공개키와 암호문을 제 3자인 X가 도청할 수 있지만 비밀키가 없어서 복호화할 수 없습니다.

장단점

  • 장점
    • 키 배송 문제 해결 (공개키는 노출되어도 무관)
    • 사용자가 증가해도 키를 추가할 필요 없이 기존 키를 활용 가능 (관리 용이함)
  • 단점
    • 암호화 방식의 속도가 느림
    • 공개키를 바꿔치기하는 중간자 공격 문제

공개키 암호화와 비교했을 때 비공개키 암호화는 키를 관리하기에 용이하고 배송하는 키가 노출되어도 암호문을 복호화할 수 없기 때문에 안전한 방법처럼 느껴질 수 있습니다. 하지만 중간자 공격에 대한 문제는 여전히 남아있습니다.

중간자 공격

B가 만든 공개키/비밀키를 BP/BS라 부르고, X가 만든 공개키/비밀키를 XP/XS라고 하겠습니다. B가 A에게 BP를 전달할 때, 제 3자 X가 중간에 공개키를 도청만 하는 것이 아니라 위장, 변조까지 한다면 어떨까요? X가 BP를 탈취하고 XP를 A에게 준 상황을 생각해봅시다.
A가 XP로 암호화한 암호문을 B에게 전달하는 과정에서 X가 암호문을 탈취하여 XS로 원본 데이터를 확인할 수 있습니다. 다시 원본 데이터를 BP로 암호화하여 A에게 전달하면 A는 BS로 데이터를 복호화할 수 있습니다. A와 B는 서로 정상적으로 데이터를 주고 받는 것처럼 느껴지지만 중간에서 X가 원본 데이터를 모두 탈취하고 있는 상황입니다.

결국 공개키에도, 전달받은 공개키의 작성자가 누구인지에 대한 신뢰성 문제가 존재합니다. 이 문제를 해결하기 위해서 디지털 서명을 사용합니다. 공개키 암호 방식의 또 다른 문제로는 암/복호화에 시간이 오래 걸린다는 점입니다. 빠르게 데이터를 주고 받는 상황에서는 공개키 암호화 방식이 적합하지 않습니다. 이 문제를 해결하기 위해 하이브리드 암호 방식을 사용합니다.

[ 대표 알고리즘 ]
RSA, ECC(타원 곡선 암호)


하이브리드 암호 방식

대칭키 암호 방식에서는 키 배송 문제가 있었습니다. 공개키 암호 방식에는 암/복호화 처리 속도가 느린 문제가 있었습니다. 하이브리드 암호 방식은 위의 두 방식을 조합하여 단점을 보완합니다. 암호화를 처리할 때에는 속도가 빠른 대칭키를 사용하고, 대칭키를 교환할 때에는 키 배송이 필요하지 않은 공개키 암호 방식을 사용하여 주고 받습니다. 공개키 암호화 방식을 사용하는 방식은 다음과 같습니다.

사용 과정

  1. A가 B에게 대칭키 암호 방식으로 암호문을 보내는 상황에서 대칭키를 함께 전달해야 함
  2. B가 공개키, 비밀키를 생성해서 공개키를 A에게 보냄
  3. A는 공개키로 대칭키를 암호화시켜서 B에게 전달
  4. B는 암호화된 대칭키를 비밀키로 복호화해서 사용
  5. 제 3자는 암호화된 키를 복호화할 방법이 없음
  6. A가 대칭키로 암호화된 암호문을 B에게 전달
  7. B는 암호문을 대칭키로 복호화하여 원본 데이터 획득

이처럼 하이브리드 암호 방식은 안전성과 빠른 처리 속도를 모두 만족시킵니다. 정보를 안전하게 주고 받기 위한 SSL/TLS 프로토콜이 하이브리드 암호 방식을 사용합니다.

댓글남기기