실제 내용은 contents에 있다. 이 안에는 handshake 프로토콜에서 전달하는 메시지가 될 수도 있겠고( handshake 프로토콜 과정이라는 가정에) 모든게 다 끝났을 경우에는 application data를 쪼개서 [TLS record 생성]에서 봤듯이 그 쪼갠 것들을 안에 넣어서 전달할 수 있다. 그 외에도 alert, changecipherspec도 있다. contens와 MAC 부분이 세션 키로 암호화 되어서 전달된다.
그리고 TLS의 경우에는 record를 보낼 때마다 카운터를 동작한다. 그래서 record를 보낼 때 마다 0부터 시작해서 하나씩 증가시킨다. 실제적으로 TLS는 일련번호(sequence number)가 있다. 그런데 헤더에는 sequence number field가 없다. 그렇지만 내부적으로 동작 할 때는 갖는다. MAC을 계산 할 때는 data, MAC key를 가지고 계산을 하는데 이 때 sequence number를 같이 넣어서 MAC을 넣는다. 그래서 내부적으로는 어떤 record에 해당되는 sequence number가 있는 것이다. 받는 쪽에서도 sequence number를 넣어서 MAC을 계산한다. 만약에 서버와 클라이언트의 sequence number가 일치하지 않으면 중간에 빠졌거나 변경된 걸로 간주할 수 있다. 그러면 올바른 값의 MAC이 안나온다. (이 부분은 몰론 TCP가 segment 단위에서 하지만 TCP segment check만 가지고는 불충분하기 때문에 TLS 에서 record sequence number를 내부적으로 운영하고 있고 이것으로 MAC을 계산한다)
'서버 > 암호' 카테고리의 다른 글
익스플로잇 (exploit) (0) | 2021.07.27 |
---|---|
멀웨어(malware) (0) | 2021.07.27 |
TLS record 생성 (0) | 2021.03.24 |
TLS Layer (0) | 2021.03.23 |
키(🔑 "key") 계산 (0) | 2021.03.22 |