대칭키 (Symmetric Key)
암호화와 복호화에 같은 대칭키(암호키)를 사용하는 알고리즘
- 장점 : 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르다. 비교적 간편하다.
- 단점 : 암호화 통신을 하는 사용자끼리 같은 대칭키를 공유해야만 한다.
- 물리적으로 직접 만나서 전달하지 않는 한, 대칭키를 전달하는 과정에서 해킹의 위험에 노출될 수 있다.
- 관리해야 할 키의 개수가 방대해진다.
- 대표 알고리즘 : DES, 3DES, AES, SEED, ARIA 등
대칭키 암호화 시나리오
- A는 사전에 공유된 대칭키로 데이터를 암호화하여 B에게 전송한다.
- B는 같은 대칭키로 데이터를 복호화 한다.
공개키 (Public Key)
암호화와 복호화에 사용하는 암호키를 분리한 알고리즘 (공개키 + 비밀키)
공개키(Public Key)만 대중에게 공개하고, 암호화된 데이터는 고유한 비밀키(Private Key)로만 복호화 할 수 있다. 이 비밀키를 가진 사용자만이 내용을 열어볼 수 있다.
- 장점 : 수신자의 개인키로만 해독할 수 있으므로 안전하다.
- 단점 : 대칭키(Symmetric Key) 알고리즘에 비하여 속도가 느리다. (약 1000배)
- 대표 알고리즘 : RSA 등
공개키 암호화 시나리오
- A가 웹상에 공개된 B의 공개키를 이용하여 평문을 암호화한다.
- 이 암호문(CiperText)는 B가 개인적으로 가지고 있는 B의 비밀키로만 복호화가 가능하다. B는 자신의 비밀키로 복호화 한 평문을 확인하고, A의 공개키로 응답을 암호화하여 A에게 보낸다.
- A는 A의 비밀키로 암호화된 응답문을 복호화 한다.
이론적으로 완벽한 암호화 시나리오 (대칭키+공개키)
대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고, 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
- A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하여 B에게 보낸다.
- B는 암호문을 받아, 자신의 비밀키로 복호화 한다.
- B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보낸다.
- A는 자신의 대칭키로 암호문을 복호화 한다.
- 계속 대칭키로 암호화 통신을 한다.
=> 이 방식이 바로 SSL(Secure Socket Layer)의 시초가 되었다.
참고 링크
https://preamtree.tistory.com/38