728x90

클라이언트와 서버는 둘만이 아는 PMS값을 갖는다고 했다. 키를 계산하는 과정은 다음과 같다.

  • Master secret( MS ) , pre-master secret (PS), Client random (CR), Server random (SR)

MS = MD5( PS || SHA-1(‘A’ || PS || CR || SR)) ||  

 

(PS, CR, SR) 순으로 MS 값을 계산한다. 복잡해 보이지만 쭉 연결 시켜서 SHA-1으로 해쉬 시키는 방식으로 한 것이다. 

결국에는, MS에서 키를 만들어 내는데 키는 하나가 아니라 여러개의 키를 만들어 낸다. 세션키, MAC키, 초기값을 만든다.

 

Client nonce, server nonce, master secret으로 부터 다음의 키를 계산한다.

  • Server MAC key  => (HMAC 해쉬하기 위함, 암호화를 하기 위한것 x)
  • Client MAC key  => (HMAC 해쉬하기 위함, 암호화를 하기 위한것 x)
  • Client encryption key  => 세션키(암호화 키)
  • Server encryption key => 세션키(암호화 키)
  • Server initialization vector (IV)  => 대칭키 암호화 알고리즘에 사용하는 초기값
  • Client initialization vector (IV)  => 대칭키 암호화 알고리즘에 사용하는 초기값

 

위에 키들이 비슷한 것들이 두 개인 이유가 서로 클라이언트와 서버 양 방향에서 사용하기 때문이다.

 

 

정리하자면 PS에서 MS를 계산하는데 이 때 계산하기 위해서 같이 사용 하는 것이 CR, SR이다. 즉 MS를 PS, CR, SR로 계산한다. 그리고 MS로 부터 6개의 키 값들을 계산한다.

MS = MD5( PS || SHA-1(‘A’ || PS || CR || SR)) ||  

 

‘A’ 와 같은 캐릭터 스트링에 다가 PS, CR, SR을 쭉 연결해서 해쉬 해서 MS를 만들고 MS를 가지고

MD5( MS || SHA-1(‘A’ || MS || SR || CR)) ||

 

MS를 SR, CR을 쭉 연결 시켜서 고정된 캐릭터 스트링에 다가 해쉬해서 나오는 결과값을 일정 한 길이로 잘라서 각각을 키로 사용 한다. (밑에 그림 참조)

 

'서버 > 암호' 카테고리의 다른 글

TLS record 생성  (0) 2021.03.24
TLS Layer  (0) 2021.03.23
키 교환 방법  (0) 2021.03.21
암호 방식 리스트 or 암호 알고리즘 리스트(Cipher Suite)  (0) 2021.03.21
TLS Handshake 프로토콜 (4 단계)  (0) 2021.03.21

+ Recent posts