IT

SSL/TLS(1) - 공개키(Public Key), 개인키(Private Key), 대칭키 (Symmetric Key)

엔지니어 문 2025. 6. 20. 14:08

대칭키(Symmetric Key)와 비대칭키(Asymmetric Key)는 암호화와 복호화에 사용되는 방식에 따라 나뉘며, 보안 시스템에서 매우 중요한 역할을 한다. SSL/TLS 통신 이해를 위해 처음단계로 암호화에 대한 이해를 해보려고 한다.

대칭키 (Symmetric Key)

  • 하나의 키로 암호화와 복호화를 모두 수행
  • 송신자와 수신자가 동일한 키를 공유해야 함

 

비대칭키 (Asymmetric Key)

  • 서로 다른 두 개의 키를 사용: 공개키(Public Key)와 개인키(Private Key)
  • 한쪽 키로 암호화하면, 다른 쪽 키로만 복호화 가능

 

🔓 공개키 / 🔐 개인키

🔐 “자물쇠와 열쇠”의 관계
  • 공개키는 누구든 사용할 수 있는 “자물쇠”: 데이터를 암호화만 가능 (잠금)
  • 개인키는 오직 소유자만 가진 “열쇠”: 자물쇠로 잠근 데이터 복호화 가능 (해독)
  • 예: 웹 브라우저는 서버의 공개키로 데이터를 암호화, 서버만 개인키로 해독
내용 공개키 (Public Key) 개인키 (Private Key) 대칭키 (Symmetric Key)
소속 공개됨 (누구에게나) 비밀 유지 양쪽 통신자가 같은 키 공유
사용 방식 암호화 또는 서명 검증 복호화 또는 서명 생성 암·복호화 모두 사용
속도 느림 (연산 복잡) 느림 빠름
보안 수준 높음 (특히 인증) 높음 (유출 시 치명) 보통 (키 유출에 취약)
대표 알고리즘 RSA, ECC (x25519 등) RSA, ECC AES, ChaCha20
TLS 사용 용도 키 교환, 인증 키 복호화, 인증 서명 본격적인 데이터 암호화

 

대칭키 vs 비대칭키

내용 대칭키 비대칭키
키 개수 1개 (같은 키 사용) 2개 (공개키, 개인키)
속도 빠름 (알고리즘이 단순하고 계산량이 적음) 느림 (계산량이 많고 처리 복잡도 큼)
키 공유 문제 안전한 키 전달 방법 필요 (네트워크 중간에 노출되면 위험) 공개키는 자유롭게 배포 가능, 개인키는 절대 노출 금지
대표 알고리즘 AES, DES, 3DES, RC4 등 RSA, DSA, ECC, ElGamal 등
보안 수준 키 노출 시 보안 취약 키 분리로 인해 높은 보안성
내용 대칭키 비대칭키
사용 예 VPN, 디스크 암호화, TLS 내부 세션 암호화 인증서 기반 인증, 디지털 서명, 키 교환
키 전달 방식 사전 공유 필요 공개키는 공개적으로 배포, 개인키는 본인 보관
주요 사용 위치 데이터 전송 중 내용 암호화 사용자 인증, 암호화된 키 전달
TLS/SSL에서 사용 세션 암호화 키 교환 및 인증서 기반 공개키 인증

 

SSL/TLS 핸드셰이크에서 대칭키와 비대칭키의 사용예

  1. 클라이언트가 서버의 인증서와 함께 공개키를 받음 (비대칭키)
  2. 클라이언트가 대칭키를 생성하고, 공개키로 암호화하여 전송(대칭키, 비대칭키)
  3. 서버는 개인키로 복호화하여 대칭키 획득 (비대칭키)
  4. 이후 데이터 통신은 대칭키로 암호화되어 빠르게 처리 (대칭키)

 

SSL/TLS 에서의 키의 역할

"클라이언트: 서버로부터 공개키를 받아 암호화된 대칭키 생성 → 서버: 자신의 개인키로 암호화된 키 복호화하여 대칭키 획득 → 서버, 클라이언트: 공유된 대칭키를 통해 암호 통신"
  • 비대칭키(공개키):
    • 누구나 볼 수 있지만, 암호화만 가능. 인증서에 포함됨
    • 클라이언트가 Pre-Master Secret을 암호화
  • 비대칭키(개인키):
    • 절대 외부에 공개하면 안 됨. 복호화/서명에 사용
    • 서버가 Pre-Master Secret 복호화, 서명
  • 대칭키:
    • 본격적인 데이터 송수신에 사용. 속도 빠름
    • Finished 이후 실제 데이터 송수신 시 사용