ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Handshake Protocol 과정
    네트워크/보안 2021. 4. 14. 10:00

    TLS_RSA_WITH ...

    1) Client Hello

    client to server : 클라이언트가 통신하고자 하는 서버에게 연결 요청

    - version 정보

    - sessionID

    - Random Number : 클라이언트가 생성한 랜덤넘버

    - Cipher Suites : 보안채널을 맺을 수 있는 후보군, 이 중에서 서버가 하나 선택할 예정

     

    2) Server Hello

    server to client : 서버가 클라이언트에게 보내는 정보

    - version 정보

    - Random Number : 서버가 생성한 랜덤넘버

    - Cipher Suite : TLS_RSA_WITH... 서버가 선택한 보안채널(위 예시는 TLS_RSA_WITH..를 서버가 선택)

     

    3) Certificate Server Hello Done

    server to client : 서버가 본격적인 키교환을 위해 PK를 클라이언트에게 보냄

    서버는 본인만 SK를 보관하고 있고 PK를 이용해 암호화한 메세지는 SK를 가진 서버만 해독가능하다

     

    4) Client Key Exchange

    client to server : client는 본인만 알고 있는 랜덤 메세지를 PK를 이용해 암호화한 뒤 서버에게 전송

    본인만 아는 key : premaster secret key

     

    5) Change Cipher Spec

    큰 기능은 없다. 단지 이제 키교환과 맥교환을 했다는 의미.

    6) Encrypted Handshake Message

    server to clinet : MAC(key, 교환한 랜덤넘버) => tag 생성

    client는 key를 이용해 tag를 검증할 수 있고 tag를 검증하는 의미는 

    서버가 key를 가졌음과, 중간에 내용이 위조되지 않았음을 보장한다.

    => server 인증 완료! (client인증은 다른 의미임)

     

     

    TLS_ECDHE_RAS_WITH...

    DHE를 이용한 서버의 key exchange 과정

    message = (B = g^x)mod p

    SIGN(sk, message) = sigma

    전송값

    sigma, message, PK

    message, B, g, p 

     

    클라이언트는 verify(sigma, message, PK)를 이용해 출처를 보장받고, message의 무결성을 보장받는다.

    이제 message, B, g, p  이용해 편하게 key를 교환할 수 있다.

    sigma는 PK와 쌍인 SK를 아는 서버만이 message를 이용해 만들 수 있는 값이다.

     

    Session Resumption

    최초 handshake protocol을 이용해 세션을 맺은 뒤 창을 껐다 다시 창을 킨 경우 간소화된 형태로 세션을 맺는다.

    미리 교환한 key값은 서버의 sessionId에 key/value형태로 남아 있다.

    만료된 sessionId가 아닌 경우 이를 바로 활용하여 mac검증을 할 수 있다

     

    최초 인증 : 서로가 원하는 client/server인지 검증 + 키교환

    이후 인증 : 서로가 원하는 client/server인지 검증

     

     

    최초 certificate 과정

    1) 서버는 PK, SK 생성

    2) 공공인증기관인 CA에게 PK를 전달하면서 공공서명 요청 cert = sign(sk, PK)

    3) 서버는 클라이언트에게 cert를 전달

    4) 모든 클라이언트는 신뢰된 인증기관 PK목록을 가지고 있다.

    5) 클라이언트는 cert를 전달받고 CA의 PK를 이용해 cert를 확인TLS_RSA_WITH ...

    1) Client Hello

    client to server : 클라이언트가 통신하고자 하는 서버에게 연결 요청

     

    - version 정보

     

    - sessionID

     

    - Random Number : 클라이언트가 생성한 랜덤넘버

     

    - Cipher Suites : 보안채널을 맺을 수 있는 후보군, 이 중에서 서버가 하나 선택할 예정

     

     

     

    2) Server Hello

    server to client : 서버가 클라이언트에게 보내는 정보

     

    - version 정보

     

    - Random Number : 서버가 생성한 랜덤넘버

     

    - Cipher Suite : TLS_RSA_WITH... 서버가 선택한 보안채널(위 예시는 TLS_RSA_WITH..를 서버가 선택)

     

     

     

    3) Certificate Server Hello Done

    server to client : 서버가 본격적인 키교환을 위해 PK를 클라이언트에게 보냄

     

    서버는 본인만 SK를 보관하고 있고 PK를 이용해 암호화한 메세지는 SK를 가진 서버만 해독가능하다

     

     

     

    4) Client Key Exchange

    client to server : client는 본인만 알고 있는 랜덤 메세지를 PK를 이용해 암호화한 뒤 서버에게 전송

     

    본인만 아는 key : premaster secret key

     

     

     

    5) Change Cipher Spec

    큰 기능은 없다. 단지 이제 키교환과 맥교환을 했다는 의미.

     

    6) Encrypted Handshake Message

    server to clinet : MAC(key, 교환한 랜덤넘버) => tag 생성

     

    client는 key를 이용해 tag를 검증할 수 있고 tag를 검증하는 의미는 

     

    서버가 key를 가졌음과, 중간에 내용이 위조되지 않았음을 보장한다.

     

    => server 인증 완료! (client인증은 다른 의미임)

     

     

     

     

     

    TLS_ECDHE_RAS_WITH...

    DHE를 이용한 서버의 key exchange 과정

     

    message = (B = g^x)mod p

     

    SIGN(sk, message) = sigma

     

    전송값

     

    sigma, message, PK

     

    message, B, g, p 

     

     

     

    클라이언트는 verify(sigma, message, PK)를 이용해 출처를 보장받고, message의 무결성을 보장받는다.

     

    이제 message, B, g, p 이용해 편하게 key를 교환할 수 있다.

     

    sigma는 PK와 쌍인 SK를 아는 서버만이 message를 이용해 만들 수 있는 값이다.

     

     

     

    Session Resumption

    최초 handshake protocol을 이용해 세션을 맺은 뒤 창을 껐다 다시 창을 킨 경우 간소화된 형태로 세션을 맺는다.

     

    미리 교환한 key값은 서버의 sessionId에 key/value형태로 남아 있다.

     

    만료된 sessionId가 아닌 경우 이를 바로 활용하여 mac검증을 할 수 있다

     

     

     

    최초 인증 : 서로가 원하는 client/server인지 검증 + 키교환

     

    이후 인증 : 서로가 원하는 client/server인지 검증

     

     

     

     

     

    최초 certificate 과정

    1) 서버는 PK, SK 생성

     

    2) 공공인증기관인 CA에게 PK를 전달하면서 공공서명 요청 cert = sign(sk, PK)

     

    3) 서버는 클라이언트에게 cert를 전달

     

    4) 모든 클라이언트는 신뢰된 인증기관 PK목록을 가지고 있다.

     

    5) 클라이언트는 cert를 전달받고 CA의 PK를 이용해 cert를 확인

    '네트워크 > 보안' 카테고리의 다른 글

    암호화된 패킷 교환 방법  (0) 2021.03.04

    댓글

Designed by Tistory.