Hand shake and session

Ethan KIM·2022년 8월 21일
0


일단, 핸드쉐이크 과정에서, SSL의 공개키와 대칭키의 장점을 혼합한 방법을 사용해서 컴퓨터 자원을 최소한으로 사용하게끔 한다. 이말을 자세하게 설명하려면, 핸드쉐이크 과정을 서술 해야하므로, 핸드쉐이크 과정을 서술하겠다.


생활코딩 SSL 설명 참고.

핸드쉐이크 과정

1 : 클라이언트가 서버에 접속한다. Client Hello 단계. 이 단계에서 주고받는 정보는

  • 클라이언트 측에서 생성한 랜덤 데이터
  • 클라이언트가 지원하는 암호화 방식
  • : 클라이언트와 서버가 지원하는 암호화 방식이 다를 수 있으므로, 상호간에 어떤 암호화 방식을 사용할 것인지에 대한 협상이 이루어짐. 이걸 위해 클라이언트 측에선 자신이 사용할 수 있는 암호화 방식을 전송함.
  • 세션아이디
  • : 이미 SSL 핸드 쉐이킹을 했다면 비용과 시간을 절약하기 위해 기존의 세션을 재활용. 이때 연결에 대한 식별자를 서버 측으로 전송.

2 : 서버는 Client Hello 단계에서 받은 요청에 대한 응답을 하게됨. 이 단계에서 주고받는 정보

  • 서버 측에서 생성한 랜덤 데이터
  • 서버가 선택한 클라이언트의 암호화 방식
  • : 클라이언트가 전달한 암호화 방식 중에서도 서버 쪽에서도 사용할 수 있는 암호화 방식을 선택해서 클라이언트로 전달. 이로써 암호화 방식에 대한 협상 종료와 더불어, 이 암호화를 체택.
  • *인증서*

3 : 클라이언트는 서버의 "인증서"가 CA에 의해서 발급된 것인지를 확인하기 위해 클라이언트에 내장된 CA 리스트 확인. 이때, 위의 SSL 인증서 발급 과정에서 사진으로 첨부했던 내용이 진행됨. CA 리스트 확인 과정은 CA에서 발급해준 공개키로 SSL 인증서를 복호화하므로써, 인증된 CA인지 확인 할 수 있게됨. 만약 에러가 발생시 인증되지 않은 기관이므로, 경고메시지 출력.

클라이언트는 2번을 통해 받은 서버측의 랜덤데이터와 클라이언트가 생성한 랜덤데이터를 조합해서 pre master secret이라는 키를 생성한다. 이는 뒤에서 살펴볼 세션 단계에서 데이터를 주고 받을 때 암호화 하기 위해서 사용되는것. 이 때 사용하는 암호화 기법이 대칭키임. 그래서 이건 절대 노출 되선 안됨.

그래서 이 premaster secret키를 서버에 전달해 주어야하는데, 이때 사용하는 방법이 공개키 방식이다. 서버의 공개키로 pre master secret 키를 암호화해서 서버로 전송하면 서버는 자신의 비공개 키로 안전하게 복호화가 가능하다. 공개키는 이미 클라이언트가 서버에 접속한 순간 서버의 공개키를 받게 되므로 그것을 이용하면 된다.

4 : 서버는 클라이언트가 서버의 공개키로 암호화한 pre master secret 값을 자신의 비공개키로 복호화 한다. 이로서 서버와 클라리언트가 모두 pre master secret 값을 공유하게 되고, 일련의 과정을 거쳐 서버와 클라리언트 모두 pre master secret 의 값을 mater secret 값으로 만든다. master secret는 session key를 생성하는데 이 session key 값을 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화 한 후에 주고받는다. 이렇게 해서 세션키를 클라이언트와 서버가 모두 공유하게 된다.

5 : 클라이언트와 서버는 핸드쉐이크 단께의 종료를 서로에게 알림.

세션.

세션은 실제로 서버와 클라이언트가 데이터를 주고 받는 단계이다.
이 단계의 핵심은 상대방에게 전송하기 전에 session key 값을 이용해 대칭키 방식으로 암호화 한다는점. master secret을 이용해 session key를 만들었으니, 이를 대칭키 방식으로 암호화에 사용

이렇게 하는 이유는 공개키 방식이 많은 컴퓨팅 파워를 사용하기 때문임.
따라서, 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화 하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 빠르게, 가볍게 데이터를 주고받는다.

세션종료

데이터의 전송이 끝나면 SSL 통신이 끝났음을 서로에게 알려주고 통신에서 사용한 대칭키인 세션키를 폐기한다.

profile
좋아하는것만 함

0개의 댓글