TLS Record Protocol


IP 나 TCP 계층들 과는 달리 모든 데이터 교환은 형태가 정해진 TLS Session 내에서 이뤄진다. TLS Record Protocol은 다른 유형의 메시지들을 구분해야할 뿐만 아니라 각각의 메시지에 보안과 무결성또한 보장해야 한다.

보통의 데이터 전달 과정의 흐름은 아래와 같다.

  • Record Protocol이 응용프로그램의 데이터를 수신한다.
  • 수신된 데이터는 최대 2^14 byte의 block, 레코드당 16KB로 나눠진다.
  • MAC(Message authentication code) 또는 HMAC이 각각의 레코드에 추가된다.
  • 각 레코드의 데이터는 협상된 암호화 알고리즘에 의해 암호화된다.

이과정이 한번 완료되면 암호화된 데이터는 TCP 계층을 통해 전송된다. 수신하는 수신처에서는 동일한 흐름을 역순으로 진행한다.

Record Protocol 몇가지 알아야 하는 명시적인 사항들을 도입하였다.

  • 최대 TLS 레코드 사이즈 는 16KB이다.
  • 각각의 레코드는 5byte 헤더, MAC (최대 20byte, 최대 32byte-TLS1.2)의 크기를 가진다. 만약 block cipher가 사용된다면 padding도 포함된다.
  • 레코드를 복호화하여 검증하기 위해서는 전체 레코드가 사용되어야만 한다.

사용하는 응용프로그램을 위해 정확한 레코드 사이즈를 정하는 것은 중요한 최적화가 될 수 있다. 작은 사이즈의 레코드는 레코드 프래밍과 MAC 검증 때문에 CPU와 byte 오버헤드를 발생시킨다. 이와 비교해서 큰사이즈의 레코드는 TLS 계층으로 전송되기 전에 TCP 계층에서 분할되었다가 결합되어야 한다.

results matching ""

    No results matching ""