From 427d6811b5eccfda5ed717e89f707495067769e3 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Wed, 23 Jul 2025 19:29:55 +0300 Subject: [PATCH 01/16] Clarify the use of cookie --- spec13/063Ext.tex | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index d424eaf..8528d40 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -325,8 +325,8 @@ \subsection{Расширение \token{cookie}}\label{HS.Ext.c} Куки (cookie)~--- это данные, которые сервер отправляет клиенту на хранение. % -В куки сервер передает клиенту состояние, избегая необходимости хранить -его самостоятельно. +В куки сервер передает клиенту состояние, избегая необходимости хранить его +самостоятельно. % Кроме этого, сервер может проверить достижимость сетевого адреса клиента (защита от атак <<отказ в обслуживании>>), предлагая тому возвратить присланные @@ -350,8 +350,8 @@ \subsection{Расширение \token{cookie}}\label{HS.Ext.c} клиент должен перенести расширение в повторное сообщение \token[HS.CH]{ClientHello}. % -Клиент не должен включать расширение в первое сообщение -\token[HS.CH]{ClientHello} в последующих соединениях с сервером. +Клиент не должен включать расширение в первое \token[HS.CH]{ClientHello} в +последующих соединениях с сервером. \begin{note} Отправка \token{cookie} в \token[HS.HRR]{HelloRetryRequest} является исключением @@ -360,23 +360,30 @@ \subsection{Расширение \token{cookie}}\label{HS.Ext.c} (см.~\ref{HS.Ext.List}). \end{note} -Сервер может указать в \token{cookie} хэш-значение первого сообщения -\token[HS.CH]{ClientHello}. Получив повторное \token[HS.CH]{ClientHello}, -сервер реконструирует первое, вычисляет его хэш-значение и сравнивает с -хэш-значением, указанным в \token{cookie}. При такой схеме взаимодействия -серверу не нужно поддерживать состояние соединения с клиентом и хранить в нем -первое \token[HS.CH]{ClientHello}. - -% info: https://mailarchive.ietf.org/arch/msg/tls/7rLQEHrqKaYo7u31iNBNsPI_OVg/ +Сервер может указать в \token{cookie} защищенное хэш-значение первого +сообщения \token[HS.CH]{ClientHello}. Получив повторное +\token[HS.CH]{ClientHello}, сервер снимает защиту, определяет хэш-значение и +использует его при обработке стенограммы Handshake (см.~\ref{CRYPTO.Transcr}). +% +При такой схеме взаимодействия серверу не нужно хранить первое +\token[HS.CH]{ClientHello}. \begin{note} -Если сервер не хранит состояние, то он не может отличить -первое сообщение \token[HS.CH]{ClientHello} от повторного. Между этими -сообщениями сервер может получить незащищенную запись типа -\code{change_cipher_spec}. Сервер без состояния должен игнорировать эту запись -(см.~\ref{RECORD.Rec}). +\doubt{При определенных условиях сервер может реконструировать первое +\token[HS.CH]{ClientHello} по повторному, а затем проверить, что +хэш-значение реконструированного сообщения совпадает с присланным +в~\token{cookie}.} \end{note} +% info: https://mailarchive.ietf.org/arch/msg/tls/7rLQEHrqKaYo7u31iNBNsPI_OVg/ +% info: https://mailarchive.ietf.org/arch/msg/tls/uOQBbe28_cIhQTmLgyPyPqtUvqk/ +% info: https://mailarchive.ietf.org/arch/msg/tls/dPKZI5RXdAAb6mH8PhuOWnw1-1o/ + +Если сервер работает без состояния, то он не может отличить первое сообщение +\token[HS.CH]{ClientHello} от повторного. Между этими сообщениями сервер может +получить незащищенную запись типа \code{change_cipher_spec}. Сервер без +состояния должен игнорировать эту запись (см.~\ref{RECORD.Rec}). + \subsection{Расширения \token{signature_algorithms} и \token{signature_algorithms_cert}}\label{HS.Ext.sa} From 6e5a4018ecfaf084901354fb8430b523885d8dd6 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Wed, 23 Jul 2025 19:30:52 +0300 Subject: [PATCH 02/16] Fix ServerHello.version --- spec13/063Ext.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index 8528d40..4e6468f 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -300,8 +300,8 @@ \subsection{Расширение \token{supported_versions}}\label{HS.Ext.sv} расширении~\token{supported_versions} которого отсутствует версия \code{0x0304}. Если сервер выбрал версию 1.2, то он должен указать эту версию в поле -\code{ServerHello.version} и не должен включать в \token[HS.SH]{ServerHello} -расширение \token{supported_versions}. +\code{ServerHello.legacy_version} и не должен включать в +\token[HS.SH]{ServerHello} расширение \token{supported_versions}. % Если сервер выбрал версию 1.3, то расширение должно быть включено и в нем должна быть указана выбранная версию (\code{0x0304}). Кроме этого, сервер From 09c896c120a01cee3f422d5490e874d857c07e2f Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Wed, 23 Jul 2025 20:41:08 +0300 Subject: [PATCH 03/16] Clarify TLS 1.2 renegotiation --- spec13/062KeyExch.tex | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/spec13/062KeyExch.tex b/spec13/062KeyExch.tex index 83f1c38..9451a95 100644 --- a/spec13/062KeyExch.tex +++ b/spec13/062KeyExch.tex @@ -252,11 +252,9 @@ \subsection{Сообщение \token{ClientHello}}\label{HS.CH} то он должен прервать Handshake с оповещением \token[ALERT.Err.um]{unexpected_message}. -Если сервер установил соединение TLS версии 1.2 и в рамках \doubt{переустановки} +Если сервер установил соединение TLS версии 1.2 и в рамках переустановки связи получает \token{ClientHello} версии 1.3, то сервер должен сохранить -версию 1.2 соединения и \doubt{не переходить на версию 1.3}. - -% todo: разобраться с "and receives a TLS 1.3 ServerHello" и renegotiation. +версию 1.2 соединения и не переходить на версию 1.3. Если клиент запрашивает с помощью какого-либо расширения дополнительные функциональные возможности, а сервер эти возможности не предоставляет, то @@ -390,11 +388,9 @@ \subsection{Сообщение \token{ServerHello}}\label{HS.SH} % skip: This is a change from [RFC 5246], so in practice many TLS 1.2 clients % and servers will not behave as specified above. -Клиент TLS, который \doubt{переустанавливает} связь в соответствии с TLS версии -1.2 и при этом получает \token{ServerHello} \doubt{версии 1.3}, должен прервать -Handshake с оповещением \token[ALERT.Err.pv]{protocol_version}. - -% todo: разобраться с "which receives a TLS 1.3 ServerHello" и renegotiation. +Клиент TLS, который переустанавливает связь в соответствии с TLS версии~1.2 и +при этом получает \token{ServerHello} версии~1.3, должен прервать Handshake с +оповещением \token[ALERT.Err.pv]{protocol_version}. \subsection{Сообщение \token{HelloRetryRequest}}\label{HS.HRR} From 006c854e1e7932e6de3dadcd7e49bd44086f8657 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Thu, 24 Jul 2025 10:27:58 +0300 Subject: [PATCH 04/16] Fix comment regarding FFDH vs ECDH --- spec13/03Terms.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec13/03Terms.tex b/spec13/03Terms.tex index aeae78a..39873d7 100644 --- a/spec13/03Terms.tex +++ b/spec13/03Terms.tex @@ -78,7 +78,7 @@ \chapter{Термины и определения}\label{TERMS} группы конечного поля, либо группа точек эллиптической кривой. % Редакции протокола, в которых используются группы первого типа, принято снабжать -аббревиатурой EC (elliptic curve), второго~--- аббревиатурой FF (finite field). +аббревиатурой FF (finite field), второго~--- аббревиатурой EC (elliptic curve). % В настоящем стандарте группы различных типов не дифференцируются и аббревиатуры не используются. From 5f296edc71eb4e1c70375999c3cd7fed69d2de20 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Thu, 24 Jul 2025 11:48:53 +0300 Subject: [PATCH 05/16] Fix typos --- spec13/063Ext.tex | 18 ++++++++++-------- spec13/067Post.tex | 2 +- spec13/092Transcr.tex | 2 +- spec13/097Auth.tex | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index 4e6468f..5b7ebaf 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -1065,9 +1065,9 @@ \subsection{Расширение \token{early_data}}\label{HS.Ext.ed} таблицу~\ref{Table.HS.Exts}), если таковой имеется. \end{itemize} % -Если какая-либо из проверок завершена с ошибкой, то сервер должен пропустить ранние -прикладные данные клиента по правилам, заданным выше, переходя таким образом -к 1-RTT или 2-RTT. +Если какая-либо из проверок завершена с ошибкой, то сервер должен пропустить +ранние прикладные данные клиента по правилам, заданным выше, переходя таким +образом к 1-RTT или 2-RTT. % use: https://www.rfc-editor.org/errata/eid6138 @@ -1099,11 +1099,13 @@ \subsection{Расширение \token{early_data}}\label{HS.Ext.ed} При использовании механизма 0-RTT клиенту разрешается передавать ранние прикладные данные вплоть до сообщения \token[HS.F]{Finished} от сервера (см.~\ref{HS.EOED}). После получения \token[HS.F]{Finished} клиент отправляет -сообщение \token[HS.EOED]{EndOfEarlyData} и стороны переходят к завершению Handshake. -Чтобы избежать взаимной блокировки, сервер после приема \token[HS.CH]{ClientHello} должен -сразу же отправлять свою очередь сообщений, включая \token[HS.SH]{ServerHello} -с расширением \token{early_data}, не дожидаясь сообщения -\token[HS.EOED]{EndOfEarlyData} от клиента. +сообщение \token[HS.EOED]{EndOfEarlyData} и стороны переходят к завершению +Handshake. Чтобы избежать взаимной блокировки, сервер после приема +\token[HS.CH]{ClientHello} должен сразу же отправлять свою очередь сообщений, +включая \token[HS.SH]{ServerHello} с расширением \token{early_data}, не +дожидаясь сообщения \token[HS.EOED]{EndOfEarlyData} от клиента. + +% info: 4.2.11.3 Если сервер отклоняет \token{early_data}, то клиент может повторить отправку ранних прикладных данных, только теперь на обычной стадии~--- по завершении diff --git a/spec13/067Post.tex b/spec13/067Post.tex index 004b897..29b133d 100644 --- a/spec13/067Post.tex +++ b/spec13/067Post.tex @@ -198,7 +198,7 @@ \subsection{Отложенная аутентификация}\label{HS.Post.Aut сообщениями других типов. Сообщение \token[HS.CR]{CertificateRequest} и ответные сообщения клиента -защищаются на ключах, построенных \code{server_application_traffic_secret} +защищаются на ключах, построенных по \code{server_application_traffic_secret} и \code{client_application_traffic_secret} соответственно (см.~\ref{CRYPTO.Schedule}). diff --git a/spec13/092Transcr.tex b/spec13/092Transcr.tex index 7f41462..18f6845 100644 --- a/spec13/092Transcr.tex +++ b/spec13/092Transcr.tex @@ -10,7 +10,7 @@ \section{Стенограммы}\label{CRYPTO.Transcr} &\code{ClientHello}, \code{HelloRetryRequest}, \code{ClientHello}_2, \code{ServerHello},\code{EncryptedExtensions},\\ % -&\hspace{12pt}\code{CertificateRequest}_S, \code{Certificate}_S, +&\hspace{12pt}\code{CertificateRequest}, \code{Certificate}_S, \code{CertificateVerify}_S, \code{Finished}_S,\\ % &\hspace{12pt}\code{EndOfEarlyData}, \code{Certificate}_C, diff --git a/spec13/097Auth.tex b/spec13/097Auth.tex index 3f5923f..51118bd 100644 --- a/spec13/097Auth.tex +++ b/spec13/097Auth.tex @@ -72,7 +72,7 @@ \section{Аутентификаторы}\label{CRYPTO.Auth} \hline Сервер & $\code|EncryptedExtensions|$ & \code|server_handshake_traffic_secret|\\ - & $\code|CertificateRequest|_S$ & \\ + & $\code|CertificateRequest|$ & \\ \hline Клиент & $\code|Finished|_S$ & \code|client_handshake_traffic_secret|\\ From 27dc71ca58528b32c9465dc3ac344cb8fce112cc Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Mon, 1 Sep 2025 16:05:44 +0300 Subject: [PATCH 06/16] Fix typos in btls13 --- spec13/03Terms.tex | 2 +- spec13/053Phases.tex | 5 ++--- spec13/067Post.tex | 9 +++++---- spec13/081Alerts.tex | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/spec13/03Terms.tex b/spec13/03Terms.tex index 39873d7..d063208 100644 --- a/spec13/03Terms.tex +++ b/spec13/03Terms.tex @@ -74,7 +74,7 @@ \chapter{Термины и определения}\label{TERMS} \begin{note} В протоколе Диффи~--- Хеллмана используется конечная циклическая группа большого -(как правило простого) порядка. Обычно это либо подгруппа мультипликативной +(как правило, простого) порядка. Обычно это либо подгруппа мультипликативной группы конечного поля, либо группа точек эллиптической кривой. % Редакции протокола, в которых используются группы первого типа, принято снабжать diff --git a/spec13/053Phases.tex b/spec13/053Phases.tex index e38705e..1bcdff5 100644 --- a/spec13/053Phases.tex +++ b/spec13/053Phases.tex @@ -107,9 +107,8 @@ \section{Этапы Handshake}\label{COMMON.Phases} взаимодействует с еще неаутентифицированным клиентом. Еще одним способом ускорения TLS является отправка клиентом прикладных данных до -завершения Handshake, т.~е. до отправки собственного сообщения -сообщения~\token[HS.F]{Finished}. Этот способ описан в -п.~\ref{COMMON.ZeroRTT}. +завершения Handshake, т.~е. до отправки собственного +сообщения~\token[HS.F]{Finished}. Этот способ описан в п.~\ref{COMMON.ZeroRTT}. В TLS предусмотрена возможность отправки некоторых сообщений после Handshake. С их помощью выпускаются билеты, выполняется отложенная аутентификация, diff --git a/spec13/067Post.tex b/spec13/067Post.tex index 29b133d..9f79c5a 100644 --- a/spec13/067Post.tex +++ b/spec13/067Post.tex @@ -112,6 +112,7 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} \code{ticket_nonce}~--- синхропосылка. Синхропосылки текущего соединения не должны повторяться; +\item \code{ticket}~--- билет. Выступает в роли идентификатор ассоциированного PSK. Билетом может быть ключ базы данных или (аутентифицированный) шифртекст, который проверяется при получении; @@ -119,6 +120,7 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} % info: https://mailarchive.ietf.org/arch/msg/tls/2TGQGMbdjArgmG41gnb9LJ3W_TU/ % info: https://datatracker.ietf.org/doc/html/rfc5077#section-4 +\item \code{extensions}~--- перечень расширений. Клиент должен игнорировать нераспознанные расширения. \end{itemize} @@ -163,10 +165,9 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} % todo: security? \begin{note} -Сформировав один раз общие общие ключи, сервер может продлевать -время их жизни, последовательно выпуская новые и новые билеты. -Рекомендуется контролировать и ограничивать время жизни такого ключевого -материала. +Сформировав один раз общие ключи, сервер может продлевать время их жизни, +последовательно выпуская новые и новые билеты. Рекомендуется контролировать и +ограничивать время жизни такого ключевого материала. % В частности, если первоначальные ключи построены с использованием сертификатов, то при контроле следует учитывать срок действия сертификатов, diff --git a/spec13/081Alerts.tex b/spec13/081Alerts.tex index a7b9340..ce2b50e 100644 --- a/spec13/081Alerts.tex +++ b/spec13/081Alerts.tex @@ -1,4 +1,4 @@ -\subsection{Оповещения}\label{ALERT.Alerts} +\section{Оповещения}\label{ALERT.Alerts} Протокол Alert предназначен для информирования о закрытии соединения и об ошибках. Сообщения Alert, называемые оповещениями, защищаются, как и другие From 27cabca71d3f4bdcfaa007bec031fbff20e3e7fc Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Wed, 3 Sep 2025 10:56:31 +0300 Subject: [PATCH 07/16] Improve formatting in btls13/syntax --- spec13/91Syntax.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec13/91Syntax.tex b/spec13/91Syntax.tex index 43fcb69..1463989 100644 --- a/spec13/91Syntax.tex +++ b/spec13/91Syntax.tex @@ -125,7 +125,7 @@ \code{v1}, \code{v2}, \ldots, \code{vn} с именами \code{e1}, \code{e2}, \ldots, \code{en}: \begin{codeblock} -enum {e1(v1), e2(v2), ..., en(vn) [[, (m)]]} Te; +enum { e1(v1), e2(v2), ..., en(vn) [[, (m)]] } Te; \end{codeblock} Перечень допустимых значений и соответствующих имен перечислительного типа @@ -149,7 +149,7 @@ перечисления занимают один байт: % \begin{codeblock} -enum {red(3), blue(5), white(7)} Color; +enum { red(3), blue(5), white(7) } Color; \end{codeblock} Максимальное допустимое значение может быть указано в определении типа без @@ -160,7 +160,7 @@ хотя могут принимать только значения~1, 2 или~4: % \begin{codeblock} -enum {sweet(1), sour(2), bitter(4), (32000)} Taste; +enum { sweet(1), sour(2), bitter(4), (32000) } Taste; \end{codeblock} Областью видимости имен элементов перечисления является сам From d1e7635436bbefacd2555b5c3f35d89e63fef852 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Wed, 10 Sep 2025 14:22:22 +0300 Subject: [PATCH 08/16] Fix typos --- spec13/00Title.tex | 9 +++------ spec13/03Terms.tex | 4 ++-- spec13/097Auth.tex | 2 +- spec13/93BSuites.tex | 6 +++--- spec13/_body.tex | 2 +- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/spec13/00Title.tex b/spec13/00Title.tex index b56068b..4ff638b 100644 --- a/spec13/00Title.tex +++ b/spec13/00Title.tex @@ -1,12 +1,9 @@ \thispagestyle{empty} \noindent -\begin{tabular}{lcr} -{\bf ГОСУДАРСТВЕННЫЙ СТАНДАРТ} & \hspace{3.6cm} & -{\bf \draftlogo}\\ -{\bf РЕСПУБЛИКИ~БЕЛАРУСЬ} & \\ -\end{tabular} - +{\bf ГОСУДАРСТВЕННЫЙ СТАНДАРТ} \hfill {\bf\draftlogo}\\ +\noindent +{\bf РЕСПУБЛИКИ~БЕЛАРУСЬ}\\[-9pt] \hrule height 1pt \vskip0.4mm \hrule height 2pt diff --git a/spec13/03Terms.tex b/spec13/03Terms.tex index d063208..50ad880 100644 --- a/spec13/03Terms.tex +++ b/spec13/03Terms.tex @@ -42,7 +42,7 @@ \chapter{Термины и определения}\label{TERMS} алгоритмов электронной цифровой подписи и предварительно согласованных секретов, режим формирования общих ключей. -{\bf \thedefctr~предварительно согласованый секрет; PSK (pre-shared secret)}: +{\bf \thedefctr~предварительно согласованный секрет; PSK (pre-shared secret)}: Секрет, согласованный сторонами до установки соединения: за пределами TLS или в предыдущем соединении. @@ -100,7 +100,7 @@ \chapter{Термины и определения}\label{TERMS} часть протокола TLS. {\bf \thedefctr~расширение (extension)}: -Стуктура данных, которая входит в сообщение Handshake и служит для +Структура данных, которая входит в сообщение Handshake и служит для согласования параметров, обмена ключевым материалом, аутентификации. {\bf \thedefctr~сервер (server)}: diff --git a/spec13/097Auth.tex b/spec13/097Auth.tex index 51118bd..d8171a9 100644 --- a/spec13/097Auth.tex +++ b/spec13/097Auth.tex @@ -34,7 +34,7 @@ \section{Аутентификаторы}\label{CRYPTO.Auth} \begin{note*} Выбранный формат подписываемых данных защищает от угроз для сервера, который -поддерживает соединения TLS 1.2, используя тот же сертификат и соотвественно +поддерживает соединения TLS 1.2, используя тот же сертификат и соответственно личный ключ. При выборе в TLS 1.2 режима DHE сервер подписывает и отправляет в сообщении \code{ServerKeyExhchange} данные, начальные 32 байта которых контролирует клиент. diff --git a/spec13/93BSuites.tex b/spec13/93BSuites.tex index a250ed6..e8e3a80 100644 --- a/spec13/93BSuites.tex +++ b/spec13/93BSuites.tex @@ -60,7 +60,7 @@ % % В алгоритмах \code{bash-prg-ae2561} параметр $d$ (емкость) равняется 1. -При аутентифицированном шифровании в протоколе Record ассоциированые +При аутентифицированном шифровании в протоколе Record ассоциированные данные составляются из полей \code{opaque_type}, \code{legacy_record_version} и \code{length} структуры \token[RECORD.Enc]{TLSCiphertext}. Размер ассоциированных данных~--- 5 байтов. @@ -105,7 +105,7 @@ % При таком~$D$ квота ключа составляет $2^{42.33}$ блоков. % -Аутентифицированный шифрекст в \code{TLSCiphertext.encrypted_record} +Аутентифицированный шифртекст в \code{TLSCiphertext.encrypted_record} состоит из не более чем $1025+1=1026$ блоков: не более $\lceil(2^{14}+1)/16\rceil=1025$ блоков шифртекста и один неполный блок с имитовставкой. @@ -157,7 +157,7 @@ \hiddensection{Группы точек эллиптической кривой}\label{BSUITES.Groups} В протоколе Диффи~--- Хеллмана должны использоваться следующие группы точек -эллпитической кривой, которые удовлетворяют соглашениям СТБ 34.101.45 и +эллиптической кривой, которые удовлетворяют соглашениям СТБ 34.101.45 и определяются стандартными параметрами, установленными в приложении Б этого стандарта: \begin{itemize} diff --git a/spec13/_body.tex b/spec13/_body.tex index 3496b94..5a793c6 100644 --- a/spec13/_body.tex +++ b/spec13/_body.tex @@ -1,4 +1,4 @@ -\def\draftlogo{\scshape\small СТБ 34.101.btls13} +\def\draftlogo{\scshape\small СТБ 34.101.90} \pagestyle{myheadings} \input{00Title} From 16e79e76c736f24e57520a49eda975dd31b9dd95 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Fri, 12 Sep 2025 11:18:23 +0300 Subject: [PATCH 09/16] Fix Section 2 to meet editorial requirements --- spec13/02Refs.tex | 4 ---- spec13/063Ext.tex | 2 +- spec13/btls.tex | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/spec13/02Refs.tex b/spec13/02Refs.tex index a492980..49de332 100644 --- a/spec13/02Refs.tex +++ b/spec13/02Refs.tex @@ -1,9 +1,5 @@ \chapter{Нормативные ссылки}\label{REFS} -В настоящем стандарте использованы ссылки на следующие технические -нормативные правовые акты в области технического нормирования и -стандартизации (далее~--- ТНПА): - СТБ~34.101.19-2012 Информационная технологии и безопасность. Форматы сертификатов и списков отозванных сертификатов инфраструктуры открытых ключей diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index 5b7ebaf..dd44b6f 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -136,7 +136,7 @@ \subsection{Назначение и перечень}\label{HS.Ext.List} помогает избежать ошибок при выполнении TLS с такими реализациями. \end{enumerate} -\begin{table}[hbt] +\begin{table}[htb] \caption{Расширения}\label{Table.HS.Exts} \begin{tabular}{|l|c|l|} \hline diff --git a/spec13/btls.tex b/spec13/btls.tex index 9646f42..48e38d6 100644 --- a/spec13/btls.tex +++ b/spec13/btls.tex @@ -53,7 +53,7 @@ \addtolength{\topmargin}{-\headsep} \parindent = 0.8cm -\renewcommand{\baselinestretch}{1.05} +\renewcommand{\baselinestretch}{1.03} \begin{document} \begin{sloppypar} From fbef03a1df3334dabd6fac33fafa30a27af13526 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Fri, 12 Sep 2025 13:53:42 +0300 Subject: [PATCH 10/16] Process comments from TLS WG --- spec13/03Terms.tex | 2 +- spec13/063Ext.tex | 28 +++++++++++++++------------- spec13/067Post.tex | 10 +++++----- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/spec13/03Terms.tex b/spec13/03Terms.tex index 50ad880..6fc12aa 100644 --- a/spec13/03Terms.tex +++ b/spec13/03Terms.tex @@ -59,7 +59,7 @@ \chapter{Термины и определения}\label{TERMS} подлинности данных, передаваемых между сторонами на транспортном коммуникационном уровне. -\doubt{\bf \thedefctr~протокол Диффи~--- Хеллмана}: +{\bf \thedefctr~протокол Диффи~--- Хеллмана}: Криптографический протокол, с помощью которого две стороны формируют общий секретный ключ, используя циклическую группу, обмениваясь открытыми ключами, элементами этой группы, и держа в секрете соответствующие личные diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index dd44b6f..dda0fda 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -292,7 +292,9 @@ \subsection{Расширение \token{supported_versions}}\label{HS.Ext.sv} \code{ClientHello.legacy_version} и при выборе версии использовать исключительно расширение. Сервер должен выбирать из версий, перечисленных в расширении, и при этом игнорировать версии, которые ему неизвестны, -\doubt{а также версии ниже 1.2}. +а также версии ниже 1.2. +% +% diff: в оригинале без "а также версии ниже 1.2". % Допускается, что будет выбрана версия 1.2. % @@ -300,8 +302,11 @@ \subsection{Расширение \token{supported_versions}}\label{HS.Ext.sv} расширении~\token{supported_versions} которого отсутствует версия \code{0x0304}. Если сервер выбрал версию 1.2, то он должен указать эту версию в поле -\code{ServerHello.legacy_version} и не должен включать в -\token[HS.SH]{ServerHello} расширение \token{supported_versions}. +\doubt{\code{ServerHello.legacy_version} (ранее \code{ServerHello.version})} и +не должен включать в \token[HS.SH]{ServerHello} расширение +\token{supported_versions}. +% +% use: https://mailarchive.ietf.org/arch/msg/tls/O0C2VvZwPfpFlFwGANJAfjS6EFk/ % Если сервер выбрал версию 1.3, то расширение должно быть включено и в нем должна быть указана выбранная версию (\code{0x0304}). Кроме этого, сервер @@ -319,8 +324,6 @@ \subsection{Расширение \token{supported_versions}}\label{HS.Ext.sv} сообщении \token[HS.HRR]{HelloRetryRequest} точно так же, как он это делает в \token[HS.SH]{ServerHello}. -% todo: перечитать - \subsection{Расширение \token{cookie}}\label{HS.Ext.c} Куки (cookie)~--- это данные, которые сервер отправляет клиенту на хранение. @@ -369,15 +372,15 @@ \subsection{Расширение \token{cookie}}\label{HS.Ext.c} \token[HS.CH]{ClientHello}. \begin{note} -\doubt{При определенных условиях сервер может реконструировать первое -\token[HS.CH]{ClientHello} по повторному, а затем проверить, что -хэш-значение реконструированного сообщения совпадает с присланным -в~\token{cookie}.} +При определенных условиях сервер может реконструировать первое +\token[HS.CH]{ClientHello} по повторному, а затем проверить, что хэш-значение +реконструированного сообщения совпадает с присланным в~\token{cookie}. \end{note} % info: https://mailarchive.ietf.org/arch/msg/tls/7rLQEHrqKaYo7u31iNBNsPI_OVg/ % info: https://mailarchive.ietf.org/arch/msg/tls/uOQBbe28_cIhQTmLgyPyPqtUvqk/ % info: https://mailarchive.ietf.org/arch/msg/tls/dPKZI5RXdAAb6mH8PhuOWnw1-1o/ +% use: https://mailarchive.ietf.org/arch/msg/tls/5hBdR59T3U9qSFJlCANqFObFPQs/ Если сервер работает без состояния, то он не может отличить первое сообщение \token[HS.CH]{ClientHello} от повторного. Между этими сообщениями сервер может @@ -857,10 +860,9 @@ \subsection{Расширение \token{key_share}}\label{HS.Ext.ks} Открытый ключ сервера должен принадлежать одной из групп, для которых клиент представил открытый ключ в своем расширении \token{key_share}. % -\doubt{Сервер не должен отправлять открытый ключ для групп, не включенных -клиентом в расширение \token[HS.Ext.sg]{supported_groups}.} -% -% todo: но ведь это следствие требования в предыдущем абзаце +% skip: Сервер не должен отправлять открытый ключ для групп, не включенных +% клиентом в расширение \token[HS.Ext.sg]{supported_groups}. +% info: https://mailarchive.ietf.org/arch/msg/tls/O0C2VvZwPfpFlFwGANJAfjS6EFk/ % Сервер не должен отправлять открытый ключ, если клиент включил в \token[HS.CH]{ClientHello} расширение diff --git a/spec13/067Post.tex b/spec13/067Post.tex index 9f79c5a..8978960 100644 --- a/spec13/067Post.tex +++ b/spec13/067Post.tex @@ -89,6 +89,8 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} Срок действия не должен быть больше 604800 секунд (7 суток). Нулевое значение \code{ticket_lifetime} означает, что билет следует уничтожить немедленно \doubt{после использования}. +% +% use: https://mailarchive.ietf.org/arch/msg/tls/5hBdR59T3U9qSFJlCANqFObFPQs/ % Клиент не должен использовать билет по прошествии 7 суток после его выпуска, независимо от значения, установленного в \code{ticket_lifetime}. @@ -196,7 +198,9 @@ \subsection{Отложенная аутентификация}\label{HS.Post.Aut а после него сообщение~\token[HS.F]{Finished}. % Сообщения должны идти в оговоренном порядке и не должны перемежаться -сообщениями других типов. +сообщениями других типов \addendum{или от других запросов}. + +% use: https://mailarchive.ietf.org/arch/msg/tls/5hBdR59T3U9qSFJlCANqFObFPQs/ Сообщение \token[HS.CR]{CertificateRequest} и ответные сообщения клиента защищаются на ключах, построенных по \code{server_application_traffic_secret} @@ -220,10 +224,6 @@ \subsection{Отложенная аутентификация}\label{HS.Post.Aut сообщениях~\token[HS.CR]{CertificateRequest} и \token[HS.CR]{Certificate} помогает серверу связать запросы с ответами. -% todo: Сообщения ответов (CT, CV, F) могут перемежаться друг с другом? -% Если так, то как связать Finished и CerificateVerify, в которых нет -% certificate_request_context, с запросами? - \subsection{Сообщение \token{KeyUpdate}}\label{HS.KU} Сообщение \token{KeyUpdate} информирует об обновлении ключа защиты From 0f34abf6b786854a3f6108df77f866bb4ee54684 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Mon, 15 Sep 2025 16:01:58 +0300 Subject: [PATCH 11/16] Fix typos --- spec13/00Title.tex | 2 +- spec13/02Refs.tex | 4 ++-- spec13/03Terms.tex | 12 ++++++------ spec13/04Defs.tex | 5 +++-- spec13/054Retry.tex | 2 +- spec13/067Post.tex | 2 +- spec13/073Enc.tex | 2 +- spec13/075Pad.tex | 4 ++-- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/spec13/00Title.tex b/spec13/00Title.tex index 4ff638b..091e2c1 100644 --- a/spec13/00Title.tex +++ b/spec13/00Title.tex @@ -54,7 +54,7 @@ Цели, основные принципы, положения по государственному регулированию и управлению в области технического нормирования и стандартизации установлены Законом Республики Беларусь <<О техническом нормировании и -стандартизации>>. +стандартизации>>. \vskip0.2cm diff --git a/spec13/02Refs.tex b/spec13/02Refs.tex index 49de332..4c87112 100644 --- a/spec13/02Refs.tex +++ b/spec13/02Refs.tex @@ -2,7 +2,7 @@ \chapter{Нормативные ссылки}\label{REFS} СТБ~34.101.19-2012 Информационная технологии и безопасность. Форматы сертификатов и списков отозванных сертификатов инфраструктуры открытых -ключей +ключей СТБ~34.101.26-2012 Информационная технологии и безопасность. Онлайновый протокол проверки статуса сертификата (OCSP) @@ -12,7 +12,7 @@ \chapter{Нормативные ссылки}\label{REFS} СТБ~34.101.45-2013 Информационные технологии и безопасность. Алгоритмы электронной цифровой подписи и транспорта ключа на основе эллиптических -кривых +кривых СТБ~34.101.47-2017 Информационные технологии и безопасность. Алгоритмы генерации псевдослучайных чисел diff --git a/spec13/03Terms.tex b/spec13/03Terms.tex index 6fc12aa..feeff84 100644 --- a/spec13/03Terms.tex +++ b/spec13/03Terms.tex @@ -12,7 +12,7 @@ \chapter{Термины и определения}\label{TERMS} {\bf \thedefctr~возобновление связи (resumption)}: Ускоренный вариант Handshake, в котором стороны используют секрет, -согласованный в предыдущем соединении. +согласованный в предыдущем соединении. {\bf \thedefctr~запись (record)}: Единица данных в протоколе Record. @@ -29,7 +29,7 @@ \chapter{Термины и определения}\label{TERMS} {\bf \thedefctr~одноразовый ключ (ephemeral key)}: Ключ, который создается, используется и уничтожается в течение одного сеанса -протокола. +протокола. % СТБ 34.101.66 @@ -63,7 +63,7 @@ \chapter{Термины и определения}\label{TERMS} Криптографический протокол, с помощью которого две стороны формируют общий секретный ключ, используя циклическую группу, обмениваясь открытыми ключами, элементами этой группы, и держа в секрете соответствующие личные -ключи. +ключи. \begin{note} Имеется несколько вариантов протокола в зависимости от того, какие ключи @@ -90,14 +90,14 @@ \chapter{Термины и определения}\label{TERMS} {\bf \thedefctr~протокол Handshake}: Протокол согласования параметров, формирования общих ключей и аутентификации; -часть протокола TLS. +часть протокола TLS. % RFC8446: An initial negotiation between client and server that establishes % the parameters of their subsequent interactions within TLS. {\bf \thedefctr~протокол Record}: Протокол передачи данных, в том числе в защищенном виде; -часть протокола TLS. +часть протокола TLS. {\bf \thedefctr~расширение (extension)}: Структура данных, которая входит в сообщение Handshake и служит для @@ -109,7 +109,7 @@ \chapter{Термины и определения}\label{TERMS} % RFC8446: The endpoint that did not initiate the TLS connection. {\bf \thedefctr~соединение (connection)}: -Cвязь между сторонами на транспортном коммуникационном уровне. +Cвязь между сторонами на транспортном коммуникационном уровне. % RFC8446: A transport-layer connection between two endpoints. diff --git a/spec13/04Defs.tex b/spec13/04Defs.tex index 46c9dcb..de4c31b 100644 --- a/spec13/04Defs.tex +++ b/spec13/04Defs.tex @@ -25,11 +25,12 @@ \chapter{Сокращения, соглашения и обозначения}\l заданных в~\cite{RFC4506}. Для описания преобразований двоичных слов используются обозначения, введенные в -СТБ 34.101.31. +СТБ 34.101.31. % Октеты двоичного слова могут кодироваться графическими символами базовой таблицы КОИ-7 (ASCII), определенной в ГОСТ~27463 и представленной в СТБ 34.101.47. -Полученная в результате кодирования строка символов окаймляется двойными кавычками. +Полученная в результате кодирования строка символов окаймляется двойными +кавычками. % Например, строка \str{tls13 } является кодовым представлением двоичного слова $\hex{746C73313320}$. diff --git a/spec13/054Retry.tex b/spec13/054Retry.tex index b5eefee..8bdbe1c 100644 --- a/spec13/054Retry.tex +++ b/spec13/054Retry.tex @@ -24,7 +24,7 @@ \section{Перезапуск Handshake}\label{COMMON.Retry} \token[HS.HRR]{HelloRetryRequest} и клиент использует ее в повторном~\token[HS.CH]{ClientHello}. -При перезапуске Handshake может выполняться другие корректировки +При перезапуске Handshake могут выполняться другие корректировки \token[HS.CH]{ClientHello} (см.~\ref{HS.CH}). При перезапуске первое сообщение~\token[HS.CH]{ClientHello} и diff --git a/spec13/067Post.tex b/spec13/067Post.tex index 8978960..6266616 100644 --- a/spec13/067Post.tex +++ b/spec13/067Post.tex @@ -44,7 +44,7 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} При использовании расширения \token[HS.Ext.sn]{server_name} клиенту не следует возобновлять связь, если билет был согласован в соединении с именем -сервера, которое отличается от текущего имена. +сервера, которое отличается от текущего имени. % % skip: The latter is a performance optimization: normally, there is no reason % to expect that different servers covered by a single certificate would be diff --git a/spec13/073Enc.tex b/spec13/073Enc.tex index c20a9a9..0649639 100644 --- a/spec13/073Enc.tex +++ b/spec13/073Enc.tex @@ -104,7 +104,7 @@ \section{Защита записей}\label{RECORD.Enc} Используется ключ \code{client_write_key} или \code{server_write_key}, который определяется по правилам, заданным в~\ref{CRYPTO.TKeys}. Если отправителем записи является клиент, то используется ключ -\code{client_write_key}, если сервер~--- ключ \code{server_write_iv}. +\code{client_write_key}, если сервер~--- ключ \code{server_write_key}. % Синхропосылка строится по правилам, заданным в~\ref{RECORD.Nonce}. diff --git a/spec13/075Pad.tex b/spec13/075Pad.tex index 7883092..f17be1a 100644 --- a/spec13/075Pad.tex +++ b/spec13/075Pad.tex @@ -9,7 +9,7 @@ \section{Дополнение записей}\label{RECORD.Pad} условия установки дополнения и число дополнительных нулей. Дополнение не является обязательным механизмом. -Дополнительные байты записывается в поле \code{zeros} структуры +Дополнительные байты записываются в поле \code{zeros} структуры \code{TLSInnerPlaintext}. Дополнительные байты должны быть нулевыми. Дополнение снимается после снятия защиты с \code{TLSInnerPlaintext}. @@ -26,6 +26,6 @@ \section{Дополнение записей}\label{RECORD.Pad} Если максимальный размер \code{TLSInnerPlaintext} уменьшается, например, через расширение \token[HS.Ext.mfl]{max_fragment_length} (см. таблицу~\ref{Table.HS.Exts}), то ограничение на размер должно продолжать -учитывать дополнение. +учитывать дополнение. % diff: в [RFC8446] речь идет о расширении `record_size_limit` из [RFC8449] From 921d542d906447c1ddf0233a7ff40ba993f420d5 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Thu, 18 Sep 2025 12:07:21 +0300 Subject: [PATCH 12/16] Fix the message preceding EncryptedExtensions --- spec13/064Params.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec13/064Params.tex b/spec13/064Params.tex index 2d9ce1b..3539ae4 100644 --- a/spec13/064Params.tex +++ b/spec13/064Params.tex @@ -16,7 +16,7 @@ \subsection{Сообщение \token{EncryptedExtensions}}\label{HS.EE} перечислены в таблице~\ref{Table.HS.Exts}. Сервер должен выслать \token{EncryptedExtensions} сразу после своего сообщения -\token[HS.F]{Finished}. +\token[HS.SH]{Finished}. Сообщение \token{EncryptedExtensions} защищается на ключе, построенном по \code{server_handshake_traffic_secret} (см.~\ref{CRYPTO.Schedule}). Это первое From 8412b5c3799a4bbd121754090c5ae15148bc5c6f Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Thu, 18 Sep 2025 13:30:42 +0300 Subject: [PATCH 13/16] Fix ref to the server_name extension --- spec13/063Ext.tex | 2 +- spec13/065Auth.tex | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index dda0fda..69e6b10 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -1,6 +1,6 @@ \section{Расширения}\label{HS.Ext} -\subsection{Назначение и перечень}\label{HS.Ext.List} +\subsection{Назначение и перечень}\label{HS.Ext.List} С помощью расширений клиент и сервер согласовывают параметры, обмениваются ключевым материалом. diff --git a/spec13/065Auth.tex b/spec13/065Auth.tex index 54a01b6..e6031e1 100644 --- a/spec13/065Auth.tex +++ b/spec13/065Auth.tex @@ -169,8 +169,8 @@ \subsection{Выбор и проверка сертификатов}\label{HS.Au \item если сервер может использовать расширение \token{server_name} -(см.~\ref{HS.Ext.sn}) при выборе своего сертификата, то клиенту следует -высылать это расширение. +(см. таблицу~\ref{Table.HS.Exts}) при выборе своего сертификата, то клиенту +следует высылать это расширение. \end{itemize} % use: https://www.rfc-editor.org/errata/eid6139 From be941109cdc574322dcfa1d5a9e65f16f0644ff5 Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Thu, 18 Sep 2025 13:44:33 +0300 Subject: [PATCH 14/16] Clarify the simultaneous use of TLS 1.2 and 1.3 --- spec13/051Purpose.tex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec13/051Purpose.tex b/spec13/051Purpose.tex index 27d5657..fb6e348 100644 --- a/spec13/051Purpose.tex +++ b/spec13/051Purpose.tex @@ -32,7 +32,8 @@ \section{Назначение}\label{COMMON.Purpose} Протокол TLS предыдущей версии 1.2 установлен в СТБ 34.101.65. % Настоящий стандарт не отменяет СТБ~34.101.65~--- оба стандарта, как и -соответствующие версии TLS, могут применяться одновременно. +соответствующие версии TLS, могут применяться одновременно независимо друг от +друга. % skip: \begin{note*} % Настоящий стандарт выполнен в виде отдельного от СТБ~34.101.65 нормативного From 89e04b8fdfb428561760fc4b548615b470b373da Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Mon, 22 Sep 2025 16:07:20 +0300 Subject: [PATCH 15/16] Fix the message preceding EncryptedExtensions --- spec13/064Params.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec13/064Params.tex b/spec13/064Params.tex index 3539ae4..ea0e365 100644 --- a/spec13/064Params.tex +++ b/spec13/064Params.tex @@ -16,7 +16,7 @@ \subsection{Сообщение \token{EncryptedExtensions}}\label{HS.EE} перечислены в таблице~\ref{Table.HS.Exts}. Сервер должен выслать \token{EncryptedExtensions} сразу после своего сообщения -\token[HS.SH]{Finished}. +\token[HS.SH]{ServerHello}. Сообщение \token{EncryptedExtensions} защищается на ключе, построенном по \code{server_handshake_traffic_secret} (см.~\ref{CRYPTO.Schedule}). Это первое From bc79d33bcdcaea2984b80ac700f37278fbd27e4a Mon Sep 17 00:00:00 2001 From: Sergey Agievich Date: Tue, 23 Sep 2025 12:28:51 +0300 Subject: [PATCH 16/16] Use feedback from TLS WG --- spec13/063Ext.tex | 4 ++-- spec13/067Post.tex | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/spec13/063Ext.tex b/spec13/063Ext.tex index 69e6b10..8f6562e 100644 --- a/spec13/063Ext.tex +++ b/spec13/063Ext.tex @@ -302,8 +302,8 @@ \subsection{Расширение \token{supported_versions}}\label{HS.Ext.sv} расширении~\token{supported_versions} которого отсутствует версия \code{0x0304}. Если сервер выбрал версию 1.2, то он должен указать эту версию в поле -\doubt{\code{ServerHello.legacy_version} (ранее \code{ServerHello.version})} и -не должен включать в \token[HS.SH]{ServerHello} расширение +\code{ServerHello.legacy_version} (\code{ServerHello.version} в TLS 1.2) +и не должен включать в \token[HS.SH]{ServerHello} расширение \token{supported_versions}. % % use: https://mailarchive.ietf.org/arch/msg/tls/O0C2VvZwPfpFlFwGANJAfjS6EFk/ diff --git a/spec13/067Post.tex b/spec13/067Post.tex index 6266616..5818b2d 100644 --- a/spec13/067Post.tex +++ b/spec13/067Post.tex @@ -87,10 +87,9 @@ \subsection{Сообщение \token{NewSessionTicket}}\label{HS.NST} % первыми (сетевой порядок байтов, big-endian). % Срок действия не должен быть больше 604800 секунд (7 суток). Нулевое значение -\code{ticket_lifetime} означает, что билет следует уничтожить немедленно -\doubt{после использования}. +\code{ticket_lifetime} означает, что билет следует уничтожить немедленно. % -% use: https://mailarchive.ietf.org/arch/msg/tls/5hBdR59T3U9qSFJlCANqFObFPQs/ +% use: https://github.com/tlswg/tls13-spec/pull/1396#issuecomment-3285930579 % Клиент не должен использовать билет по прошествии 7 суток после его выпуска, независимо от значения, установленного в \code{ticket_lifetime}. @@ -198,7 +197,7 @@ \subsection{Отложенная аутентификация}\label{HS.Post.Aut а после него сообщение~\token[HS.F]{Finished}. % Сообщения должны идти в оговоренном порядке и не должны перемежаться -сообщениями других типов \addendum{или от других запросов}. +сообщениями других типов или от других запросов. % use: https://mailarchive.ietf.org/arch/msg/tls/5hBdR59T3U9qSFJlCANqFObFPQs/