Статус документа
Статус документа

Р 1323565.1.020-2020 Информационная технология (ИТ). Криптографическая защита информации. Использование российских криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.2)

     5.2 Формирование записи


Каждая запись содержит следующие параметры: type, version, length, fragment. Первые три параметра type, version, length образуют заголовок записи, описанный в 5.2.2, и указывают на тип сообщения, версию протокола и длину передаваемых данных соответственно, а параметр fragment содержит фрагмент данных, передаваемых в открытом или защищенном виде. При этом с каждой записью неявно ассоциируется ее порядковый номер seqnum.

Часть данных, полученных от протоколов более высокого уровня и выделенных при фрагментации в соответствии с 5.2.1, переводится в структуру TLSPlaintext, которая задана следующим образом:

struct {

ContentType type;

ProtocolVersion version = {3, 3}; /*TLS v1.2 */

uint16 length;

opaque fragment[TLSPlaintext.length];

} TLSPlaintext;

enum {

change_cipher_spec (20), alert (21), handshake (22),

application_data (23), (255)

} ContentType;

struct {

uint8 major;

uint8 minor;

} ProtocolVersion;

Поле TLSPlaintext.fragment содержит фрагмент передаваемых данных в открытом виде.

При инициализации соединения до обмена сторонами сообщениями ChangeCipherSpec протокол Record оперирует незащищенными записями, которые формируются непосредственно в виде структур TLSPlaintext.

После обмена сообщениями ChangeCipherSpec все данные пересылаются в защищенном виде. При установлении сторонами защищенного режима пересылки данных протокол Record переводит данные структуры TLSPlaintext в защищенный вид, формируя из них структуру TLSCiphertext (формат структуры полностью совпадает с форматом структуры TLSPlaintext), которой затем оперирует при информационном обмене:

struct {

ContentType type;

ProtocolVersion version = {3, 3}; /*TLS v1.2 */

uint16 length;

opaque fragment [TLSCiphertext.length];

} TLSCiphertext;

Поле TLSCiphertext.fragment содержит фрагмент передаваемых данных в защищенном виде и формируется из поля TLSPlaintext.fragment в соответствии с согласованным криптонабором. Процесс формирования этого поля описан в 5.2.3.

Формирование защищенной записи из фрагмента данных, выделенного при фрагментации в соответствии с 5.2.1, выполняется в соответствии со следующими этапами, схематично отраженными на рисунке 2:

1 формирование незащищенной записи, имеющей структуру TLSPlaintext;