제가 생각하기엔 ssl인증은 아래의 #첨부#와 같은 절차에 따라
클라이언트와 서버간에 암호화 종류를 선택하고 session을 맺고,
그 이후부터 주고 받는 자료는 암호화 된다라고 생각하고 있었는데...
잘못 생각하고 있는 것인가요?
며칠전 결제대행업체와 계약을 맺었는데...
결제하는 과정이 일반 http 페이지에서 신용카드정보를 입력하고
submit하면 ssl 페이지로 넘어가게 되어있더군요...
업체에 문의하니 session을 맺지않고도 인증이 안된 페이지에서 ssl인증
페이지로 정보를 보내게 되면 자동으로 암호화가 이루어진다고 하더군요..
저의 의문은 그러면 클라이언트에서 어떤 알고리즘으로 암호화가 되어
서버로 보내지고, 또 서버가 어떻게 그 알고리즘을 알고 그것을 복호화
시킨다는 건지 의아해 지더군요.. 혹시 default값이라도 있나요?
### 첨 부 ###
step 1 ] Client 가 자신이 통신 하기를 원하는 서버에 접속 신호를 알리고,
앞으로 통신중에 사용하기 위해 자신이 소유고 있는 암호화에 대한
자료를 서버에 보내준다.
step 2 ] 서버는 클라이언트로부터 받은 자료를 확인하여 클라이언트에게
Connection-ID를 발급하고 , 자신이 소유하는 암호화 자료와
자신의 증명서를 보내준다.
step 3 ] 클라이언트는 서버가 소유하고 있는 것과 자신이 소유한 것
중에서 공통된 암호 종류를 선택, 클라이언트의 Master Key를
생성하여 이를 서버의 공개키로 암호화 하여 서버에 송신한다.
step 4 ] 클라이언트는 서버로 부터 부여 받은 Connection ID 를 서버의
공개키로 암호화 하여 서버에 전송한다 .
step 5 ] 서버는 클라이언트로부터 받은 Challenge data를 클라이언트의
공개키로 암호화 하여 클라이언트에거 전송한다.
step 6 ] Session ID도 클라이언트의 공개키로 암호화 하여 클라이언트에게
전송한다.
위와 같은 과정을 마치면 서버와 클라이언트는 안전한 통신을 위한 준비를
완료 하게 된다 .--암호화