RFC: 2246
Оригинал: The TLS Protocol Version 1.0
Другие версии: RFC 4346
Категория: Предложенный стандарт
Дата публикации:
Авторы: ,
Перевод: Семенов Юрий Алексеевич

RFC 2246, Страница 12 из 49

6.2.2. Сжатие и восстановление записи

Все записи сжаты с использованием алгоритма сжатия, определенным состоянием текущей сессии. Всегда имеется активный алгоритм сжатия; однако в исходный момент он определен как CompressionMethod.null. Алгоритм сжатия преобразует структуру TLSPlaintext в структуру TLSCompressed. Функции сжатия инициализируются информацией по умолчанию при переходе соединения в активное состояние.

Должно использоваться сжатие без потерь, а длина содержимого не может стать больше чем 1024 байт. Если функция восстановления встречает фрагмент TLSCompressed.fragment, длина которого окажется больше 2^14 байт, она должна выдать уведомление о фатальной ошибке преобразования.

struct {
    ContentType type;       /* same as TLSPlaintext.type */
    ProtocolVersion version;/* same as TLSPlaintext.version */
    uint16 length;
    opaque fragment[TLSCompressed.length];
} TLSCompressed;
  • length
  • Длина (в байтах) следующего TLSCompressed.fragment. Длина не должна превосходить 2^14 + 1024.
  • Fragment
  • Сжатая форма TLSPlaintext.fragment.

Операция CompressionMethod.null является идентификационной; ни одно из полей не изменено.

Функции декомпрессии (восстановления) отвечают за то, что внутренний буфер не будет переполнен при обработке сообщения.

6.2.3. Защита поля данных записи

Функции шифрования и MAC преобразуют структуру TLSCompressed в TLSCiphertext. Функции дешифрования выполняют обратную процедуру. MAC записи включает также номер по порядку, чтобы было можно детектировать лишние или повторные сообщения.

struct {
    ContentType type;
    ProtocolVersion version;
    uint16 length;
    select (CipherSpec.cipher_type) {
        case stream: GenericStreamCipher;
        case block: GenericBlockCipher;
    } fragment;
} TLSCiphertext;
  • type
  • Поле тип идентично TLSCompressed.type.
  • Version
  • Поле версия идентично TLSCompressed.version.
  • length
  • Длина (в байтах) последующего TLSCiphertext.fragment. Длина не может превосходить 2^14 + 2048.
  • Fragment
  • Зашифрованная форма TLSCompressed.fragment, с MAC.

Страница 12 из 49

2007 - 2022 © Русские переводы RFC, IETF, ISOC.