암호화와 복호화에 같은 암호키(대칭키)
를 사용하는 알고리즘 (암호화 키 = 복호화 키)
동일한 키
를 주고받기 때문에, 매우 빠르다
는 장점이 있음
but, 암호화 키와 복호화 키가 같기 때문에 공개되면 안되므로 비밀
이어야 함!!
또한, 대칭키 전달과정에서 해킹 위험
에 노출
암호키를 분리
한 알고리즘 (암호화 키 != 복호화 키)
고유한 암호키(비밀키)로만 복호화
할 수 있는 암호키(공개키)를 대중에 공개
함공개되도 됨!
(암호화 키 = 복호화 키)
1. A가 웹 상에 공개된 `'B의 공개키'`를 이용해 `평문을 암호화`하여 `B에게 보냄`
2. B는 `자신의 비밀키로 복호화한 평문을 확인`, `A의 공개키`로 `응답을 암호화`하여 `A에개 보냄`
3. A는 `자신의 비밀키로 암호화된 응답문`을 `복호화`함
-> 대칭키의 단점을 완벽하게 해결했지만, 암호화 복호화가 매우 복잡함
(암호화하는 키가 복호화하는 키가 서로 다르기 때문)
SSL 탄생의 시초
가 됨
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄
2. B는 암호문을 받고, 자신의 비밀키로 복호화함
3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄
4. A는 자신의 대칭키로 암호문을 복호화함
5. 앞으로 이 대칭키로 암호화를 통신함
-> 즉, 대칭키를 주고받을 때만 공개키(비대칭키) 암호화 방식
을 사용하고 이후에는 계속 대칭키(비밀키) 암호화 방식
으로 통신하는 것!
[출처]