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 핸드셰이크에서 대칭키와 비대칭키의 사용예
- 클라이언트가 서버의 인증서와 함께 공개키를 받음 (비대칭키)
- 클라이언트가 대칭키를 생성하고, 공개키로 암호화하여 전송(대칭키, 비대칭키)
- 서버는 개인키로 복호화하여 대칭키 획득 (비대칭키)
- 이후 데이터 통신은 대칭키로 암호화되어 빠르게 처리 (대칭키)
SSL/TLS 에서의 키의 역할
"클라이언트: 서버로부터 공개키를 받아 암호화된 대칭키 생성 → 서버: 자신의 개인키로 암호화된 키 복호화하여 대칭키 획득 → 서버, 클라이언트: 공유된 대칭키를 통해 암호 통신"
- 비대칭키(공개키):
- 누구나 볼 수 있지만, 암호화만 가능. 인증서에 포함됨
- 클라이언트가 Pre-Master Secret을 암호화
- 비대칭키(개인키):
- 절대 외부에 공개하면 안 됨. 복호화/서명에 사용
- 서버가 Pre-Master Secret 복호화, 서명
- 대칭키:
- 본격적인 데이터 송수신에 사용. 속도 빠름
- Finished 이후 실제 데이터 송수신 시 사용