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

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

     6.3 Сообщения приветствия

6.3.1 Сообщение запроса приветствия HelloRequest

Данное сообщение может быть послано сервером в любой момент и используется для оповещения клиента о том, что тот должен начать процесс согласования параметров сессии заново. В ответ на данный запрос клиент должен послать сообщение приветствия ClientHello.

Данное сообщение должно быть проигнорировано клиентом, если в этот момент он уже участвует в процессе согласования параметров сессии. Если клиент отказывается пересогласовать параметры сессии, то он может проигнорировать это сообщение либо послать в ответ оповещение no_renegotiation (см. раздел 8).

Если сервер послал сообщение запроса приветствия HelloRequest, но не дождался сообщения ClientHello в качестве ответа со стороны клиента, он может закрыть соединение, передав оповещение об ошибке с уровнем fatal (см. раздел 8).

После отправки сообщения запроса приветствия HelloRequest сервер не должен повторно отправлять данное сообщение до тех пор, пока последующий процесс согласования параметров сессии на этапе выполнения протокола Handshake не будет завершен.

6.3.2 Сообщение приветствия клиента ClientHello

Клиент посылает сообщение приветствия ClientHello в одном из следующих случаев:

- клиент впервые подключается к серверу;

- как ответ на сообщение запроса приветствия HelloRequest;

- с целью пересогласования параметров сессии.

Сообщение ClientHello содержит следующие параметры:

версия протокола
(client_version)

-

максимальная версия протокола из тех, которые готов поддерживать клиент [настоящие рекомендации описывают криптонаборы для протокола TLS 1.2, для которого значение версии равняется (3, 3)];

строка со случайными
данными
(random)

-

строка данных длины 32 байта, выработанная клиентом, в которой первые 4 байта занимает значение текущего времени в 32-битном формате UNIX [количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года], а остальные 28 байтов занимает строка, выработанная случайным образом;

идентификатор сессии
(session_id)

-

идентификатор сессии, выбранный клиентом. Если данное поле пусто, значит, клиент хочет согласовать параметры новой сессии;

список криптонаборов
(cipher_suites)

-

список криптонаборов, которые поддерживает клиент. Порядок криптонаборов в списке отражает их степень предпочтения (предпочтительные идут первыми). Если поле ClientHello.session_id не пустое, поле ClientHello.cipher_suites должно содержать идентификатор криптонабора, согласованного во время установления параметров сессии, имеющей идентификатор ClientHello.session_id;

список методов сжатия (compression_methods)

-

данная версия протокола не поддерживает методы сжатия, и поле должно содержать 1 байт со значением 0, соответствующим методу с идентификатором null;

расширения (extensions)

-

криптонаборы, описанные в настоящих рекомендациях, предполагают наличие трех обязательных расширений со стороны клиента: signature_algorithms, extended_master_secret и renegotiation_info.


Сообщение ClientHello имеет следующую структуру:

struct {

ProtocolVersion client_version;

Random random;

SessionID session_id;

CipherSuite cipher_suites<2..2^16-2>;

CompressionMethod compression_methods<1..2^8-1>;

Extension extensions<0..2^16-1>;

} ClientHello;

После отправки сообщения ClientHello клиент ожидает от сервера сообщения ServerHello. В ответ на любое другое сообщение протокола Handshake (за исключением сообщения запроса приветствия HelloRequest) клиент должен ответить оповещением об ошибке с уровнем fatal (см. раздел 8).

6.3.3 Сообщение приветствия сервера ServerHello

Данное сообщение отправляется сервером после получения им сообщения ClientHello при условии, что среди параметров, переданных клиентом в сообщении приветствия, присутствует поддерживаемый сервером набор параметров установления соединения.

Сообщение приветствия содержит следующие параметры: