| 항목 | 대칭키 암호화 | 공개키 암호화 |
|---|
| 키 개수 | 1개 (공통 키) | 2개 (공개키 + 개인키) |
| 속도 | 빠름 | 느림 |
| 보안성 | 키 유출 시 위험 | 키 분리로 보안성 높음 |
| 키 배포 문제 | 있음 | 없음 |
| 사용 용도 | 데이터 암호화 | 인증, 키 교환, 전자서명 등 |
1. 대칭키 암호화 (Symmetric-key Encryption)
[개념]
- 하나의 키(비밀키, Secret Key)를 사용하여 데이터를 암호화(Encrypt)하고, 동일한 키로 복호화(Decrypt)함
[특징]
- 속도가 빠름: 알고리즘이 단순해서 처리 속도가 빠름 → 많은 양의 데이터 암호화에 적합
[c.f] 대표적 알고리즘: AES (Advanced Encryption Standard),DES (Data Encryption Standard)
- 키 관리가 어려움: 송신자와 수신자가 같은 키를 미리 안전하게 공유해야 함
- 키가 외부에 노출되면 보안에 큰 문제가 생김
[사용]
- SSL/TLS 세션 중 실제 데이터 암호화 (예: 웹페이지, 이미지, 텍스트)
- 파일을 암호화하여 저장할 때
- VPN 내부 통신 암호화
- 와이파이 암호화 (WPA2, WPA3 등)
2. 공개키 암호화 ((Asymmetric-key / Public-key Encryption)
[개념]
- 두 개의 키 사용: 공개키(Public Key)와 개인키(Private Key)
- 공개키로 암호화한 데이터는 개인키로만 복호화할 수 있고, 그 반대도 가능
[특징]
- 키를 사전에 공유할 필요 없음: 공개키는 누구에게나 공개 가능
- 속도가 느림: 계산이 복잡해서 대칭키보다 느림 (대량 데이터 암호화에는 부적합)
[c.f.] 대표적인 알고리즘: RSA, ECC
- 주로 데이터 전송의 보안성과 인증을 확보하는 데 사용
[사용]
- 서버 - 클라이언트 인증 : 세션키(대칭키) 전달 시 사용
e.g. HTTPS에서 클라이언트가 서버의 공개키로 대칭키를 암호화해 전달
- 디지털 서명, 인증서
- 이메일 암호화 (PGP, GPG)
- HTTPS 통신 (SSL/TLS)
HPPS의 암호화 방식
- HTTPS에서는 대칭키와 공개키 암호화를 모두 사용
- HTTPS는 기본적으로 TLS(Transport Layer Security) 프로토콜을 사용
- TLS 통신에서는 하이브리드 암호화(hybrid encryption) 방식을 사용
공개키 암호화 + 대칭키 암호화를 조합
[왜 둘 다 사용할까?]
공개키 암호화는 안전하지만 느림
대칭키 암호화는 빠르지만 키를 안전하게 공유하는 게 어려움
→ TLS는 공개키 암호화로 세션 키를 안전하게 교환한 뒤,
대칭키 암호화로 실제 데이터를 빠르게 주고 받음
[공개키 암호화] - 세션 키 교환
- 클라이언트(브라우저)가 서버의 공개키로 대칭키(세션 키)를 암호화해서 보냄
서버는 자신의 개인키로 복호화해서 대칭키를 얻음
[대칭키 암호화] - 데이터 암호화
- 세션 키(공유된 대칭키)를 이용해 이후의 모든 통신 데이터를 암호화하고 복호화함