암호화와 복호화에 같은 암호키(대칭키)를 사용하는 알고리즘
하나의 키를 양쪽(client & server)가 같이 사용한다.
이게 왜 단점?
암호화와 복호화에 사용하는 암호키를 분리한 알고리즘
공개키와 비밀키 두 개가 존재한다.
공개키(Public Key)만 대중에게 공개하고, 암호화 된 데이터는 고유한 비밀키(Private Key)로만 복호화할 수 있다. 이 비밀키를 가진 사용자만이 내용을 열어볼 수 있다.
- A는 사전에 공유된
대칭키
로 데이터를 암호화하여 B에게 전송한다.- B는 같은
대칭키
로 데이터를 복호화한다.
- A가 웹 상에 공개된
B의 공개키
를 이용하여 평문을 암호화 한다.- 이 암호문(CiperText)는 B가 개인적으로 가지고 있는
B의 비밀키
로만 복호화가 가능하다. B는 자신의 비밀키로 복호화한 평문을 확인하고,A의 공개키
로 응답을 암호화하여 A에게 보낸다.- A는
A의 비밀키
로 암호화된 응답문을 복호화한다.
대칭키를 주고 받을 때만 공개키 암호화 방식을 사용하고, 이후에는 계속 대칭키 암호화 방식으로 통신하는 것 !
- A가
B의 공개키로
암호화 통신에 사용할 대칭키를 암호화하여 B에게 보낸다.- B는 암호문을 받아,
자신(B)의 비밀키
로 복호화한다.- B는 A로 부터 얻은
대칭키
로 A에게 보낼 평문을 암호화하여 A에게 보낸다.- A는 자신의
대칭키
로 암호문을 복호화한다.- 계속 대칭키로 암호화 통신을 한다.
=> 이 방식이 바로 SSL(Secure Socket Layer)
의 시초가 되었다.