대칭키 vs 비대칭키 암호화

정처기 2026-07-23 09:21:11 정처기정보보안암호화대칭키비대칭키

글 목록 →

암호화는 결국 “누가 자물쇠와 열쇠를 쥐느냐”의 문제다. 이 열쇠(키)를 다루는 방식에 따라 암호화는 크게 두 갈래로 나뉜다. 대칭키비대칭키다.

정처기에서는 “다음 중 공개키 암호 방식은?”, “세션키 교환에 쓰이는 방식은?” 처럼 알고리즘 이름과 방식을 묶어 묻는다. 두 방식의 원리와 대표 알고리즘을 짝지어 기억하는 게 핵심이다.

대칭키 — 하나의 키로 잠그고 연다

암호화와 복호화에 같은 키를 쓴다. 그래서 대칭(symmetric)이다. 비밀키(secret key) 방식이라고도 부른다.

원리는 단순하다. 보내는 쪽과 받는 쪽이 같은 키를 미리 나눠 가진다. A가 그 키로 잠그면, 같은 키를 가진 B만 열 수 있다.

  • 장점: 연산이 가볍고 빠르다. 대용량 데이터를 암호화하기에 좋다.
  • 단점: 키를 어떻게 안전하게 나눠 갖느냐가 문제다(키 분배 문제). 그리고 통신 상대가 늘수록 키가 폭증한다. n명이 서로 비밀 통신을 하려면 n(n-1)/2개의 키가 필요하다.

대표 알고리즘: DES(구식, 56비트라 취약), AES(현재 표준), SEED·ARIA(국산), RC4.

비대칭키 — 잠그는 열쇠와 여는 열쇠가 다르다

암호화와 복호화에 서로 다른 키를 쓴다. 한 쌍의 키가 있는데, 하나는 누구에게나 공개하는 공개키(public key), 다른 하나는 본인만 갖는 개인키(private key)다. 그래서 공개키 암호 방식이라고도 한다.

핵심은 한쪽 키로 잠그면 반드시 다른 쪽 키로만 열린다는 점이다. 이 성질이 두 가지 쓰임을 만든다.

  • 기밀성(암호화): 받는 사람의 공개키로 잠근다 → 받는 사람의 개인키로만 열린다. 남이 봐도 못 연다.
  • 인증(전자서명): 보내는 사람의 개인키로 잠근다 → 누구나 그의 공개키로 열어 확인한다. 그 사람이 보냈음이 증명된다.

이 두 방향을 헷갈리지 않는 게 시험의 함정이다. “비밀로 보내려면 상대의 공개키, 내가 보냈음을 증명하려면 내 개인키”로 외우면 된다.

  • 장점: 키를 미리 나눠 가질 필요가 없다. 공개키는 공개해도 되니 키 분배 문제가 사라진다. 전자서명·부인 방지도 가능하다.
  • 단점: 연산이 무겁고 느리다. 대용량 데이터에는 부적합하다.

대표 알고리즘: RSA(소인수분해의 어려움 기반), ECC(타원곡선), Diffie-Hellman(키 교환), DSA(서명).

둘을 함께 쓴다 — 하이브리드

실제 통신(HTTPS 등)은 둘 중 하나만 쓰지 않는다. 서로의 약점을 메우려고 함께 쓴다.

  1. 실제 데이터는 빠른 대칭키로 암호화한다.
  2. 그 대칭키(세션키)만 상대의 공개키로 암호화해 안전하게 전달한다.

무거운 비대칭키로는 작은 세션키 하나만 옮기고, 대량의 본문은 가벼운 대칭키가 처리한다. 대칭키의 속도와 비대칭키의 안전한 키 분배를 모두 취하는 방식이다. TLS 핸드셰이크가 정확히 이 구조다.

시험 포인트 정리

구분대칭키비대칭키
암·복호화 동일공개키·개인키 쌍
속도빠름느림
키 개수(n명)n(n-1)/22n
키 분배어려움쉬움
대표AES, DES, SEED, ARIARSA, ECC, DH, DSA
  • 키 개수 계산은 단골이다. 대칭은 쌍마다 하나라 n(n-1)/2, 비대칭은 각자 한 쌍씩이라 2n.
  • 알고리즘이 어느 쪽인지 묻는 문제가 잦다. RSA·ECC·Diffie-Hellman·DSA는 비대칭, 나머지 블록/스트림 암호는 대칭으로 몰아 기억한다.
  • 전자서명은 정보보안 3요소부인 방지와 이어진다. 개인키는 본인만 가지므로, 그 키로 서명하면 “내가 안 했다”고 부정할 수 없다.

댓글

이 글에 대한 의견은 아래 댓글로 남겨주세요 (GitHub 계정 필요). 로그인 없이 남기고 싶다면