- 웹 브라우저 가 서버에 접속 시 서버는 인증서를 제공한다.
- 브라우저는 받은 인증서가 브라우저에 탑재 되어 있는 CA 목록에 있는지 확인한다.
- CA 리스트에 인증서가 있다면 CA 공개키를 이용해서 인증서를 복호화 한다.
- 즉, 복호화 성공은 공인된 기관에게 인증된 서버에서의 데이터를 받아왔다는 것을 보증하는 것이다 ( 개인 키 )
SSL 동작 방법
이상적 방법은 공캐키 방식이다. 하지만, SSL 은 공개키와 대칭키를 혼합해서 사용한다. ( 공개키 방식은 많은 컴퓨팅 파워를 요구 )
- 실제 데이터 : 대칭키 ( 암호, 아이디 등)
- 대칭키의 키 : 공개키
과정
악수 -> 전송 (데이터 전송) -> 세션 종료 로 나뉜다.
악수
- 서버와 브라우저가 서로를 탐색하는 과정이다.
- 즉, 서버의 인증서를 클라이언트에게 전송하는 것.
- 클라이언트의 암호화 기법과 서버의 암호화 기법을 공유하는 것.
- 웹 브라우저 가 서버에 접속( Client Hello ) 시 클라이언트에서 생성한 랜덤데이터를 서버에 전송
- 클라이언트가 가진 암호화 방식들을 서버에 전송
- Client Hello 응답으로 서버는 Server Hello 를 한다.
- 서버 측에서 생성한 랜덤 데이터를 클라이언트에게 전송
- 서버는 클라이언트가 Client Hello 단계에서 보낸 암호화 방식들 중 적절한 것을 선택하고 인증서를 보낸다.
- 클라이언트는 서버가 보낸 인증서가 브라우저에 탑재 된 CA 리스트에 존재하는지 확인하기 위해 내장된 CA 공개키 를 이용해서 인증서를 복호화한다.
- 복호화에 성공했다면, 해당 서버는 CA 에 의해 인증된 서버임이 보장된다.
- 서버에서 보낸 인증서에는 서버의 공개키가 들어 있으므로 클라이언트는 서버 공개키를 획득하게 된다.
Client 가 보낸 랜덤데이터 와 Server 가 보낸 랜덤데이터를 합쳐 Client(웹 브라우저) 는 pre master secret 이라는 KEY 를 생성한다.
pre master secret 키는 세션( 데이터전송 단계 ) 에서 사용되는 대칭키 정보 이다.
Client 는 pre master secret 키를 서버가 보낸 인증서에 들어있는 서버의 공개키로 암호화하고 전송한다.
서버는 고유한 개인 키로 pre master secret 키를 복호화하여 Client가 보낸 대칭키 정보를 획득한다.
즉, 악수를 거친 클라이언트와 Server 외에는 누구도 pre master secret(대칭키 정보)를 알 수 없다.
이후 서버와 클라이언트 는 각자의 과정을 거쳐 pre master secret 을 master secret 으로 만든다. master secret 은 Session KEY 를 생성하는데 Session KEY 가 서버와 클라이언트가 사용하는 대칭키가 된다.
세션 ( 데이터 전송 )
- 서버와 클라이언트 데이터 전송시 Session KEY 로 데이터를 암호화 하거나 복호화 한다.
공개키 방식은 많은 컴퓨팅 파워를 요구하므로 다수의 요청을 받는 서버에 과부화를 일으킬 수 있기 때문에 공개키와 대칭키 방식을 혼합해서 쓰는 것이다.
세션 종료
데이터 전송이 끝나면 SSL 통신이 끝났음을 서로에게 알리고 통신에서 사용한 Session KEY는 즉시 폐기된다.
'HTTP' 카테고리의 다른 글
SSL 인증서 용어 정리 (0) | 2020.10.31 |
---|---|
공개키. (0) | 2020.10.31 |
SSL 인증서, 대칭키 방식. (0) | 2020.10.30 |
HTTPS, SSL 개요 (0) | 2020.10.30 |
1. form 과 HTTP Request-GET Request , POST Request (0) | 2020.07.05 |