티스토리 뷰

양방향 SSL은 서버와 클라이언트가 서로의 공개키를 사용하여 핸드 쉐이킹을 하는 SSL 프로토콜이다.

일반적인 (대부분의) HTTPS 통신은 단방향 SSL 프로토콜로, 서버의 공개키를 사용하여 핸드쉐이킹을 하는데, 

이러한 통신에서 클라이언트는 서버를 검증하지만(서버의 공개키를 사용하여 검증) 서버는 클라이언트가 누군지 모르는 문제가 있다.

이 때문에, 클라이언트(사용자) 인증을 위해 아이디, 비밀번호를 서버로 보내 서버가 클라이언트를 인지하도록 한다.


클라이언트에서 서버로 아이디, 비밀번호를 보낼때 (쉽지는 않지만) 비밀번호 탈취의 위험이 있다.


단방향과 마찬가지로 클라이언트가 서버에게 요청을 보낼 시, 서버가 자신의 공개키를 클라이언트에 보내고,

클라이언트는 서버의 공개키를 CA를 통해 검증을 한다. 여기까지는 단방향 SSL과 같다.


양방향 SSL에서는

서버의 공개키 검증이 완료되면, 클라이언트의 공개키를 서버로 보낸다. 서버에서는 클라이언트로 받은 공개키를

서버내부에 있는 CA를 통해 클라이언트를 검증한다. 검증이 완료되면 핸드쉐이킹이 완료되어 SSL 통신을 시작한다.


예시

1. 클라이언트(브라우저)에서 서버로 통신 요청을 보낸다.

2. 서버는 클라이언트(브라우저)의 요청에 따라 자신의 공개키를 보낸다.

3. 클라이언트(브라우저)는 서버로 부터 받은 공개키를 CA를 통하여 검증한다.

4. 검증을 마친 클라이언트(브라우저)는 서버에게 사용자 공개키 ( 여기서 사용자는 브라우저를 이용하는 개인을 의미)를 보낸다.

5. 서버는 클라이언트(브라우저)에게 받은 공개키를 CA를 통하여 검증한다.

6. 검증이 완료되면, 클라이언트로 부터 받은 공개키를 사용하여 통신구간에 사용될 암호화 알고리즘(AES, SEED 등)의 대칭키를 만들어 RSA 암호화 하여 보낸다.

7. 클라이언트는 서버로 부터 받은 대칭키 암호문을 클라이언트의 개인키(사용자의 개인키)를 사용하여 복호화 하여 대칭키를 획득한다.

8. 클라이언트를 획득한 대칭키를 사용하여, 통신 데이터를 대칭키 알고리즘을 사용하여 암호화된 통신을 진행한다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함