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 |