Skip to content

대칭키 & 공개키


대칭키(Symmetric Key)

암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘

같은 비밀키를 양쪽이 공유해야 하므로 속도가 빠르고 대량 데이터 처리에 적합하다.

  • 장점: 빠르다
  • 단점: 안전하게 키를 공유하는 과정이 어렵다

대표 예시: AES, ChaCha20


공개키(Public Key)/비대칭키(Asymmetric Key)

암호화와 복호화에 사용하는 암호키를 분리한 알고리즘

대칭키의 키 분배 문제를 해결하기 위해 고안되었다.

  • 공개키는 공개해도 된다.
  • 개인키는 소유자만 비밀로 보관한다.

비대칭키는 용도에 따라 쓰임이 다르다.

  • 암호화/복호화: 공개키로 암호화하고 개인키로 복호화
  • 전자서명/검증: 개인키로 서명하고 공개키로 검증

공개키 암호화 방식 진행 과정
  1. A가 웹 상에 공개된 B의 공개키로 메시지를 암호화해 B에게 보낸다.
  2. B는 자신의 개인키로 복호화한다.

응답을 보낼 때는 다시 A의 공개키가 필요하다. 즉, 공개키 암호화는 상대방의 공개키로 보내고, 자신의 개인키로 받는다.

하지만 공개키 암호화만으로는 항상 무결성과 인증이 자동으로 해결되는 것은 아니다.

  • MAC(Message Authentication Code): 대칭키 기반 무결성 검증
  • Digital Signature(전자서명): 개인키로 서명하고 공개키로 검증하여 무결성과 인증 제공

비대칭키 연산은 대칭키보다 무겁기 때문에 큰 데이터를 통째로 암호화하는 데는 비효율적이다.



대칭키와 공개키 암호화 방식을 적절히 혼합해보면? (하이브리드 방식)

현대 TLS/HTTPS의 핵심 아이디어

1. 비대칭키 기반으로 상대를 인증하거나 키 교환을 수행한다
2. 그 결과로 양쪽만 아는 공유 비밀 또는 대칭키를 만든다
3. 실제 애플리케이션 데이터는 빠른 대칭키로 암호화한다

즉, 비대칭키는 인증/키 교환, 대칭키는 실제 데이터 보호에 쓰는 구조다.

현대 TLS 1.3에서는 보통 공개키 자체로 대칭키를 직접 암호화해서 보내기보다, (EC)DHE 같은 키 교환으로 공유 비밀을 만든 뒤 그로부터 트래픽 키를 파생한다.