대칭키와 공개키 암호화 (Symmetric Key and Public Key Cryptography)

한눈에 보기

대칭키는 같은 키로, 공개키는 키 쌍으로 암호화하는 방식이다. AES와 RSA, ECC의 원리, 키 배송 문제, 전자 서명, 그리고 TLS가 쓰는 하이브리드 구조와 순방향 비밀성까지 정리한다.

최종 업데이트 2026.09.17

대칭키 암호화(symmetric key cryptography)는 암호화와 복호화에 같은 키를 사용하는 방식이고, 공개키 암호화(public key cryptography)는 공개키와 개인키라는 수학적으로 연결된 키 쌍을 사용하는 방식이다. 대칭키는 빠르지만 키를 안전하게 전달해야 하는 문제가 있고, 공개키는 키 전달 문제를 해결하지만 연산이 훨씬 느리다. 그래서 실제 시스템은 공개키로 대칭키를 합의하고 본문은 대칭키로 암호화하는 하이브리드(hybrid) 구조를 사용한다.

대칭키 암호화의 원리

대칭키 방식에서는 송신자와 수신자가 동일한 비밀키를 공유한다. 송신자가 키로 평문을 암호문으로 바꾸면 수신자는 같은 키로 되돌린다. 자물쇠 하나에 똑같은 열쇠 두 개를 만들어 나눠 갖는 것에 비유할 수 있다. 현대의 표준은 AES(Advanced Encryption Standard)이며, 128비트 또는 256비트 키로 블록 단위 치환과 순열을 여러 라운드 반복한다. 실무에서는 암호화와 동시에 변조 여부를 검증하는 인증 태그를 만들어 내는 AEAD(Authenticated Encryption with Associated Data) 모드, 대표적으로 AES-GCM과 ChaCha20-Poly1305를 사용한다. 대칭키 암호는 하드웨어 가속까지 받아 기가바이트급 데이터도 실시간으로 처리할 만큼 빠르다.

약점은 키 배송 문제이다. 통신을 시작하기 전에 양쪽이 같은 키를 가져야 하는데, 그 키를 네트워크로 그냥 보내면 도청자도 얻게 된다. 또한 n명이 서로 통신하려면 쌍마다 키가 필요해 키가 n(n-1)/2개로 늘어나는 관리 부담도 있다. 예를 들어 사용자 1000명이 서로 안전하게 통신하려면 약 50만 개의 키를 만들어 배포하고 갱신해야 하는데, 이는 현실적으로 관리가 불가능한 규모다. 공개키 암호화는 바로 이 두 문제, 즉 키를 어떻게 안전하게 전달하고 키 개수를 어떻게 줄일 것인가에 대한 답으로 등장했다.

공개키 암호화의 원리

공개키 방식은 키를 공개키와 개인키의 쌍으로 나눈다. 공개키는 누구에게나 공개하고 개인키는 소유자만 보관한다. 두 키는 수학적으로 연결되어 있지만, 공개키로부터 개인키를 계산하는 것은 현재 계산 능력으로는 사실상 불가능하도록 설계된다. RSA는 큰 수의 소인수분해가 어렵다는 사실에, ECC(Elliptic Curve Cryptography, 타원곡선 암호)는 타원곡선 위의 이산로그 문제가 어렵다는 사실에 안전성을 둔다. ECC는 같은 보안 강도를 훨씬 짧은 키로 달성하므로(RSA 3072비트와 ECC 256비트가 비슷한 수준) 서명과 키 교환이 더 빠르고 전송량도 적어, 현대 프로토콜은 ECC 계열을 선호한다.

공개키 쌍은 방향에 따라 두 가지 용도로 쓰인다.

  • 암호화: 상대의 공개키로 암호화하면 그 상대의 개인키로만 복호화할 수 있다. 열린 자물쇠를 나눠 주고 잠긴 상자는 나만 여는 구조라서, 키를 미리 공유하지 않고도 비밀을 보낼 수 있다.
  • 전자 서명(digital signature): 자신의 개인키로 서명하면 누구나 공개키로 검증할 수 있다. 메시지가 개인키 소유자에게서 나왔고 변조되지 않았음을 증명한다.

다만 공개키가 정말 그 사람의 것인지 보증하는 문제가 남는다. 공격자가 자신의 공개키를 은행의 공개키라고 속여 배포하면, 사용자는 공격자에게 비밀을 암호화해 보내게 된다. 이를 해결하는 것이 인증 기관(CA, Certificate Authority)이 신원을 확인한 뒤 공개키에 서명해 주는 인증서와, 그 신뢰 사슬을 운영하는 체계인 PKI(Public Key Infrastructure)이다. 전자 서명 자체도 실제로는 메시지 전체가 아니라 메시지의 해시(hash)값에 서명하는 방식으로 구현되어, 큰 문서도 빠르게 서명하고 검증할 수 있다.

두 방식 비교

구분대칭키 암호화공개키 암호화
키 구성양쪽이 같은 비밀키 공유공개키와 개인키 쌍
속도매우 빠름(하드웨어 가속)수백에서 수천 배 느림
키 배송안전한 사전 공유 필요공개키는 공개 가능
n명 통신 시 키 수n(n-1)/2개1인당 키 쌍 1개
제공 기능기밀성, (AEAD 시) 무결성기밀성, 전자 서명, 키 교환
대표 알고리즘AES-GCM, ChaCha20-Poly1305RSA, ECDSA, ECDH, Ed25519

하이브리드 방식의 동작 과정

TLS를 비롯한 실제 프로토콜은 두 방식을 다음처럼 결합한다.

  1. 서버가 인증서로 자신의 공개키를 제시하고, 클라이언트는 CA 서명을 검증해 신원을 확인한다.
  2. 양쪽이 ECDHE(Elliptic Curve Diffie-Hellman Ephemeral) 같은 키 교환 알고리즘으로 일회용 값을 주고받아, 도청자는 계산할 수 없는 공유 비밀을 각자 유도한다.
  3. 공유 비밀에서 세션용 대칭키를 파생한다.
  4. 이후의 모든 데이터는 이 대칭키와 AEAD로 암호화해 빠르게 주고받는다.

이 구조에서 공개키 연산은 세션 시작 시 한 번만 수행되고, 이후의 대량 데이터는 모두 빠른 대칭키로 처리되므로 두 방식의 장점만 취하게 된다. 키 교환에 매번 새로운 일회용 키를 쓰면, 나중에 서버 개인키가 유출되어도 과거 트래픽은 복호화되지 않는 순방향 비밀성(forward secrecy)이 확보된다. 한편 양자 컴퓨터가 소인수분해와 이산로그를 무력화할 가능성에 대비해, ML-KEM 같은 양자내성암호(post-quantum cryptography)를 기존 ECC와 함께 쓰는 하이브리드 키 교환이 최신 TLS 배포에 적용되기 시작했다.

면접에서 이렇게 물어본다

  • 대칭키와 공개키 암호화의 차이와 각각의 장단점을 설명해 보라.
  • 속도가 느린 공개키 암호화를 실제 서비스에서는 어떤 식으로 활용하는가.
  • 전자 서명은 어떤 원리로 무결성과 부인 방지를 제공하는가.
  • 공개키가 진짜 상대방의 것인지는 어떻게 신뢰할 수 있는가.
  • 순방향 비밀성이란 무엇이고 어떤 키 교환 방식이 이를 보장하는가.
네트워크 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기