Appearance
대칭키 & 공개키
대칭키(Symmetric Key)
암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘
같은 비밀키를 양쪽이 공유해야 하므로 속도가 빠르고 대량 데이터 처리에 적합하다.
- 장점: 빠르다
- 단점: 안전하게 키를 공유하는 과정이 어렵다
대표 예시: AES, ChaCha20
공개키(Public Key)/비대칭키(Asymmetric Key)
암호화와 복호화에 사용하는 암호키를 분리한 알고리즘
대칭키의 키 분배 문제를 해결하기 위해 고안되었다.
- 공개키는 공개해도 된다.
- 개인키는 소유자만 비밀로 보관한다.
비대칭키는 용도에 따라 쓰임이 다르다.
- 암호화/복호화: 공개키로 암호화하고 개인키로 복호화
- 전자서명/검증: 개인키로 서명하고 공개키로 검증
공개키 암호화 방식 진행 과정
- A가 웹 상에 공개된
B의 공개키로 메시지를 암호화해 B에게 보낸다. - B는 자신의
개인키로 복호화한다.
응답을 보낼 때는 다시 A의 공개키가 필요하다. 즉, 공개키 암호화는 상대방의 공개키로 보내고, 자신의 개인키로 받는다.
하지만 공개키 암호화만으로는 항상 무결성과 인증이 자동으로 해결되는 것은 아니다.
- MAC(Message Authentication Code): 대칭키 기반 무결성 검증
- Digital Signature(전자서명): 개인키로 서명하고 공개키로 검증하여 무결성과 인증 제공
비대칭키 연산은 대칭키보다 무겁기 때문에 큰 데이터를 통째로 암호화하는 데는 비효율적이다.
대칭키와 공개키 암호화 방식을 적절히 혼합해보면? (하이브리드 방식)
현대 TLS/HTTPS의 핵심 아이디어
1. 비대칭키 기반으로 상대를 인증하거나 키 교환을 수행한다
2. 그 결과로 양쪽만 아는 공유 비밀 또는 대칭키를 만든다
3. 실제 애플리케이션 데이터는 빠른 대칭키로 암호화한다즉, 비대칭키는 인증/키 교환, 대칭키는 실제 데이터 보호에 쓰는 구조다.
현대 TLS 1.3에서는 보통 공개키 자체로 대칭키를 직접 암호화해서 보내기보다, (EC)DHE 같은 키 교환으로 공유 비밀을 만든 뒤 그로부터 트래픽 키를 파생한다.