Network
대칭키 & 공개키(비대칭키) 암호화 차이
---
대칭키(Symmetric Key)
> 암복호화에 사용하는 키가 동일한 암호화 방식 >
대표적인 알고리즘 : DES, 3DES, AES, SEED, ARIA 등
동일한 키를 주고 받기 때문에, 수행시간이 빠르다는 장점이 있음
하지만, 대칭키 교환과정에서 해킹 위험에 노출되기 때문에 안전한 키교환 방식이 요구되고 사람이 증가할수록 키관리가 어려워진다는 단점이 있다.
공개키(Public Key) / 비대칭키(Asymmetric Key)
> 암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 >
대칭키의 키 교환 문제를 해결하기 위해 고안됨
키가 공개되어있기 때문에 키를 교환할 필요가 없어지며 공개키는 모든 사람이 접근 가능한 키이고 개인키는 각 사용자만이 가지고 있는 키이다.
예를 들어, A가 B에게 데이터를 보낸다고 할 때, A는 B의 공개키로 암호화한 데이터를 보내고 B는 본인의 개인키로 해당 암호화된 데이터를 복호화해서 보기 때문에 암호화된 데이터는 B의 공개키에 대응되는 개인키를 갖고 있는 B만이 볼 수 있게 되는 것이다.
공개키 암호화 방식 진행 과정
1. B 공개키 / 개인키 쌍 생성 2. 공개키 공개(등록), 개인키는 본인이 소유 3. A가 B의 공개키를 받아옴 4. A가 B의 공개키를 사용해 데이터를 암호화 5. 암호화된 데이터를 B에게 전송 6. B는 암호화된 데이터를 B의 개인키로 복호화 (개인키는 B만 가지고 있기 때문에 B만 볼 수 있음)

따라서 공개키는 키가 공개되어 있기 때문에 따로 키 교환이나 분배를 할 필요가 없어진다. 중간 공격자가 B의 공개키를 얻는다고 해도 B의 개인키로만 복호화가 가능하기 때문에 기밀성을 제공하며, 개인키를 가지고 있는 수신자만이 암호화된 데이터를 복호화할 수 있으므로 일종의 인증기능도 제공한다는 장점이 있다. 그에 반해 단점은 속도가 느리다는 것이다.
대칭키와 공개키 암호화 방식을 적절히 혼합해보면? (하이브리드 방식)
> SSL 탄생의 시초가 됨 >
markdown
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신
참고사이트