Главная // Актуальные документы // Приказ
СПРАВКА
Источник публикации
М.: ФГБУ "Институт стандартизации", 2022
Примечание к документу
Документ введен в действие с 01.01.2023.
Название документа
"Р 1323565.1.044-2022. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Использование российских криптографических алгоритмов в протоколе штампов времени (TSP)"
(утв. и введены в действие Приказом Росстандарта от 29.11.2022 N 1379-ст)

"Р 1323565.1.044-2022. Рекомендации по стандартизации. Информационная технология. Криптографическая защита информации. Использование российских криптографических алгоритмов в протоколе штампов времени (TSP)"
(утв. и введены в действие Приказом Росстандарта от 29.11.2022 N 1379-ст)


Содержание


Утверждены и введены в действие
Приказом Федерального агентства
по техническому регулированию
и метрологии
от 29 ноября 2022 г. N 1379-ст
РЕКОМЕНДАЦИИ ПО СТАНДАРТИЗАЦИИ
ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
ИСПОЛЬЗОВАНИЕ РОССИЙСКИХ КРИПТОГРАФИЧЕСКИХ АЛГОРИТМОВ
В ПРОТОКОЛЕ ШТАМПОВ ВРЕМЕНИ (TSP)
Information technology. Cryptographic data security. The use
of the Russian cryptographic algorithms
in the Time-Stamp Protocol (TSP)
Р 1323565.1.044-2022
ОКС 35.030
Дата введения
1 января 2023 года
Предисловие
1 РАЗРАБОТАНЫ Обществом с ограниченной ответственностью "КРИПТО-ПРО" (ООО "КРИПТО-ПРО")
2 ВНЕСЕНЫ Техническим комитетом по стандартизации ТК 026 "Криптографическая защита информации"
3 УТВЕРЖДЕНЫ И ВВЕДЕНЫ В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 29 ноября 2022 г. N 1379-ст
4 ВВЕДЕНЫ ВПЕРВЫЕ
Правила применения настоящих рекомендаций установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящим рекомендациям публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящих рекомендаций соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.rst.gov.ru)
Введение
В случае если необходимо подтвердить существование каких-либо данных до определенного момента времени, используется служба штампов времени. Служба штампов времени удостоверяет существование элемента данных при помощи предоставления соответствующих доказательств, называемых штампом времени.
Настоящие рекомендации описывают формат штампа времени и устанавливают правила использования в нем российских криптографических алгоритмов подписи и хэширования. Получение штампа в процессе взаимодействия со службой штампов времени проводится с использованием протокола TSP.
Настоящие рекомендации не устанавливают полный набор требований безопасности к службе штампов времени. При этом необходимо считать, что службы штампов времени доводят до своих потенциальных клиентов (запрашивающих сторон) информацию о том, что применяемые ими регламенты обеспечивают точное создание штампов, а клиенты будут прибегать к услугам служб, только если посчитают, что регламенты службы штампов времени полностью отвечают требованиям клиентов.
Примечание - Основная часть настоящих рекомендаций дополнена приложениями А - Г.
1 Область применения
Служба штампов времени ставит штампы времени на данные для гарантии того, что эти данные существовали до определенного момента времени. Это требуется, например, чтобы проверить, что электронная подпись (подпись) сообщения была создана до того момента, когда соответствующий сертификат был аннулирован, что позволяет использовать аннулированный сертификат ключа проверки подписи для проверки подписей, созданных до момента аннулирования.
Служба штампов времени также может обозначать время подачи документа, когда крайний срок является критичным, или использоваться для обозначения времени транзакции для записей в журнале. Возможны и другие способы применения службы штампов времени, удовлетворяющие аналогичные потребности.
Штамп времени может являться или входить в состав метки доверенного времени, определенной в [1].
2 Нормативные ссылки
В настоящих рекомендациях использованы нормативные ссылки на следующие документы:
ГОСТ Р ИСО/МЭК 8824 Информационная технология. Взаимосвязь открытых систем. Спецификация абстрактно-синтаксической нотации версии один (АСН.1)
ГОСТ Р 34.10-2012 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
ГОСТ Р 34.11-2012 Информационная технология. Криптографическая защита информации. Функция хэширования
Р 1323565.1.020 Информационная технология. Криптографическая защита информации. Использование криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.2)
Р 1323565.1.023-2018 Информационная технология. Криптографическая защита информации. Использование алгоритмов ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012 в сертификате, списке аннулированных сертификатов (CRL) и запросе на сертификат PKCS #10 инфраструктуры открытых ключей X.509
Р 1323565.1.025-2019 Информационная технология. Криптографическая защита информации. Форматы сообщений, защищенных криптографическими методами
Р 1323565.1.030 Информационная технология. Криптографическая защита информации. Использование криптографических алгоритмов в протоколе безопасности транспортного уровня (TLS 1.3)
Примечание - При пользовании настоящими рекомендациями целесообразно проверить действие ссылочных документов в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный документ, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого документа с учетом всех внесенных в данную версию изменений. Если заменен ссылочный документ, на который дана датированная ссылка, то рекомендуется использовать версию этого документа с указанным выше годом утверждения (принятия). Если после утверждения настоящих рекомендаций в ссылочный документ, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный документ отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
3 Термины, определения и сокращения
3.1 Термины и определения
В настоящих рекомендациях применены следующие термины с соответствующими определениями.
3.1.1 доверенная третья сторона: Организация или служба, предоставляющая одну или более услуг безопасности и которой доверяют все участники в процессе некоторого взаимодействия, требующего защиты.
3.1.2 служба штампов времени (Time Stamping Authority, TSA): Доверенная третья сторона, подтверждающая факт формирования некоторого элемента данных до определенного момента времени.
3.1.3 штамп времени: Элемент данных, служащий для доказательства того, что другой элемент данных существовал до определенного момента времени.
3.1.4 запрашивающая сторона: Организация, служба или субъект (пользователь), которым требуется подтверждение факта формирования некоторого элемента данных до определенного момента времени.
3.1.5
электронная цифровая подпись (signature): Строка бит, полученная в результате процесса формирования подписи.
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности по отношению к действующим отечественным нормативным документам и опубликованным научно-техническим изданиям установлено, что термины "электронная подпись", "цифровая подпись" и "электронная цифровая подпись" являются синонимами.
[ГОСТ Р 34.10-2012, статья 3.1.15]
3.1.6
ключ подписи (signature key): Элемент секретных данных, специфичный для субъекта и используемый только данным субъектом в процессе формирования цифровой подписи.
[ГОСТ Р 34.10-2012, статья 3.1.2]
3.1.7
ключ проверки подписи (verification key): Элемент данных, математически связанный с ключом подписи и используемый проверяющей стороной в процессе проверки цифровой подписи.
[ГОСТ Р 34.10-2012, статья 3.1.3]
3.1.8
хэш-функция (collision-resistant hash-function): Функция, отображающая строки бит в строки бит фиксированной длины и удовлетворяющая следующим свойствам:
1) по данному значению функции сложно вычислить исходные данные, отображаемые в это значение;
2) для заданных исходных данных сложно вычислить другие исходные данные, отображаемые в то же значение функции;
3) сложно вычислить какую-либо пару исходных данных, отображаемых в одно и то же значение.
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности с действующими отечественными нормативными документами и опубликованными научно-техническими изданиями установлено, что термины "хэш-функция", "криптографическая хэш-функция", "функция хэширования" и "криптографическая функция хэширования" являются синонимами.
[ГОСТ Р 34.11-2012, статья 3.1.6]
3.1.9
хэш-код (hash-code): Строка бит, являющаяся выходным результатом хэш-функции.
Примечание - В настоящих рекомендациях в целях сохранения терминологической преемственности с действующими отечественными нормативными документами и опубликованными научно-техническими изданиями установлено, что термины "хэш-код", и "хэш-значение" являются синонимами.
[ГОСТ Р 34.11-2012, статья 3.1.5]
3.1.10 Всемирное координированное время; UTC: Временная шкала, основанная на секундах, определенная и рекомендованная Международным консультативным комитетом по радио и поддерживаемая Международным бюро мер и весов.
Примечание - По-другому называется "время зулу" и обозначается буквой Z.
3.2 Сокращения
В настоящих рекомендациях применены следующие сокращения:
САС - список аннулированных сертификатов;
MIME - многоцелевые расширения интернет-почты (Multipurpose Internet Mail Extensions);
OID - строка или последовательность десятичных цифр, однозначно идентифицирующая объект (Object Identifier);
TSA - служба штампов времени (Time Stamping Authority);
TSP - протокол штампов времени (Time Stamp Protocol);
TTP - доверенная третья сторона (Trusted third party);
URI - унифицированный (единообразный) идентификатор ресурса (Uniform Resource Identifier);
UTC - всемирное координированное время (Coordinated Universal Time).
4 Обзор протокола TSP
Протокол штампов времени (TSP) предназначен для установления факта существования данных до определенного момента времени. Для этого в рамках данного протокола осуществляется взаимодействие службы штампов времени (TSA) и запрашивающей стороны (C). Взаимодействие перечисленных участников заключается в формировании запроса к TSA и проверке ее ответа (см. рисунок 1).
Рисунок 1 - Схема обмена сообщениями по протоколу TSP
В первом сообщении обмена в рамках протокола TSP запрашивающая сторона посылает к службе штампов времени запрос на штамп времени TimeStampReq (см. 7.1). Во втором сообщении служба штампов времени отправляет запрашивающей стороне ответ TimeStampResp (см. 7.2), который содержит штамп времени или информацию об ошибке.
Данные сообщения могут быть инкапсулированы в состав другого сообщения. Например, запрос к TSA может пересылаться в подписанном электронной подписью (подписанном) виде, для чего он помещается в сообщение формата CMS с типом содержимого signed-data, как это описано в Р 1323565.1.025-2019, раздел 7.
Порядок формирования запроса описан в 5.1. Порядок формирования ответа службой штампов времени описан в 5.2. Порядок обработки данного ответа запрашивающей стороной описан в 5.3.
Штамп времени содержит подпись службы штампов времени. Соответствующий ключ проверки подписи содержится в сертификате данной службы. Требования к указанному сертификату и особенности его аннулирования описаны в разделе 6.
Форматы запроса и ответа описаны в разделе 7.
Требования к содержимому запроса и ответа при использовании российских криптографических алгоритмов подписи и хэширования описаны в разделе 8.
Способы передачи запроса к TSA и получения ответа описаны в разделе 9.
5 Порядок формирования и проверки штампов времени
В данном разделе описан порядок формирования запрашивающей стороной запроса на штамп времени (см. 5.1), формирования штампа времени службой штампов времени (см. 5.2) и порядок обработки полученного штампа времени запрашивающей стороной (см. 5.3).
5.1 Порядок формирования запроса к службе штампов времени
Данные, для которых требуется получить штамп времени, хэшируются. Запрашивающая сторона помещает в запрос хэш-значение и идентификатор используемого алгоритма хэширования. Для последующей проверки актуальности ответа службы штампов времени в запрос может быть помещено число nonce (см. 7.1). Сформированный таким образом запрос отправляется в службу штампов времени.
5.2 Порядок формирования штампа времени
Служба штампов времени должна формировать штамп времени только при условии успешного завершения следующих проверок:
- полученный запрос на штамп времени корректен и соответствует политике безопасности (регламенту) службы;
- хэш-значение, для которого будет создан штамп времени, вычислено с использованием одной из возможных в соответствии с регламентом службы штампов времени хэш-функций;
- длина хэш-значения, для которого будет создан штамп времени, соответствует длине, ожидаемой для данного алгоритма хэширования;
- указанный в запросе идентификатор использованного алгоритма хэширования является одним из возможных в соответствии с регламентом службы штампов времени.
Примечание - Службе штампов времени не требуется выполнять какие-либо дополнительные проверки хэш-значения, для которого будет создан штамп времени (кроме проверки длины данного хэш-значения, как это указано в предыдущем пункте).
В случае если указанные проверки прошли успешно, служба штампов времени должна сформировать штамп времени в соответствии со следующими требованиями:
- использовать доверенный источник времени;
- включать достоверное значение времени в каждый штамп;
- включать уникальное целое число в каждый новый штамп;
- включать в каждый штамп времени идентификатор политики безопасности (регламента), согласно которой он был создан;
- не включать в штампы времени какую-либо информацию, идентифицирующую запрашивающую сторону;
- подписывать каждый штамп времени ключом подписи, предназначенным специально для этой цели;
- включать дополнительную информацию в штамп времени, если этого требует запрашивающая сторона, используя только те расширения, которые поддерживаются службой штампов времени. Если это невозможно, служба штампов времени должна ответить сообщением об ошибке.
5.3 Порядок проверки штампа времени
При получении ответа TimeStampResp (см. 7.2), запрашивающая сторона должна проверить содержание поля со статусом обращения. Если данное поле не сигнализирует об ошибке, запрашивающая сторона должна проверить различные поля в полученном ответе в соответствии с 7.2.2. В частности, запрашивающая сторона должна убедиться в следующем:
- штамп времени соответствует данным, для которых он был запрошен, а именно, содержит соответствующее хэш-значение и корректный идентификатор алгоритма хэширования;
- штамп времени содержит корректный идентификатор сертификата службы штампов времени (см. 6.1);
- электронная подпись штампа времени действительна;
- ответ службы штампов времени актуален. Запрашивающая сторона может проверить актуальность ответа, соотнеся его время с собственным доверенным источником времени, если источник существует, либо сравнив включенное в ответ случайное число со значением в запросе;
- сертификат службы штампов времени соответствует требованиям, указанным в 6.1;
- сертификат службы штампов времени не прекратил действие и не был аннулирован (см. 6.2);
- штамп времени содержит подходящий (применимый для целей запрашивающей стороны) идентификатор политики безопасности (регламента), согласно которой был выдан штамп времени.
Примечание - Настоящие рекомендации не устанавливают строгую последовательность проверок полученного от службы штампов времени ответа. Данные проверки могут быть выполнены в произвольном порядке.
Если любая из вышеперечисленных проверок завершилась неудачей, штамп времени следует отклонить.
6 Сертификат службы штампов времени
6.1 Требования к сертификату службы штампов времени
Служба штампов времени должна подписывать каждый штамп ключом подписи, предназначенным специально для этой цели. Служба штампов времени может иметь различные ключи подписи, например для соответствия разным регламентам, алгоритмам, различным размерам ключей подписи или для увеличения скорости обработки запросов.
Каждый сертификат TSA, соответствующий используемому ключу подписи, должен иметь одно расширение ExtendedKeyUsage, определенное в [2], подпункт 4.2.1.12, содержащее последовательность ExtKeyUsageSyntax с единственным элементом KeyPurposeID со значением id-kp-timeStamping. При этом настоящие рекомендации устанавливают, что данное расширение должно быть критичным.
Также расширение KeyUsage сертификата службы штампов времени должно содержать только флаги digitalSignature и/или nonRepudiation, описанные в [2], подпункт 4.2.1.3.
Примечание - Критичность расширения сертификата определяется наличием флага critical (см. [2], подраздел 4.1), указывающего на важность содержащейся в расширении информации. Если запрашивающая сторона не распознает расширение, помеченное как критичное, ей следует отклонить сертификат, содержащий данное расширение.
Следующий идентификатор определяет KeyPurposeID со значением id-kp-timeStamping.
id-kp-timeStamping OBJECT IDENTIFIER ::= {iso(1)
identified-organization(3) dod(6)
internet(1) security(5) mechanisms(5) pkix(7)
kp (3) timestamping (8)}
6.2 Аннулирование сертификата службы штампов времени
Настоящие рекомендации устанавливают необходимость аннулировать сертификат службы штампов времени в следующих случаях:
- если ключ подписи службы штампов времени был скомпрометирован;
- если ключ подписи службы штампов времени не был скомпрометирован, но служба штампов времени больше не используется.
Если ключ подписи службы штампов времени был скомпрометирован, соответствующий ему сертификат необходимо аннулировать.
В САС для аннулированного сертификата службы штампов времени может присутствовать расширение reasonCode, описанное в [2], пункт 5.3.1. При этом в нем должна быть указана следующая причина аннулирования сертификата CRLReason:
CRLReason ::= ENUMERATED {
keyCompromise (1),
-- сертификат аннулирован в связи с компрометацией ключа }
Все штампы времени, созданные после указанного в САС момента аннулирования сертификата в связи с компрометацией ключа, следует считать недействительными.
Штампы времени, созданные до указанного момента аннулирования сертификата, могут быть признаны действительными при наличии возможности подтвердить подлинность данных. Например, если в журналах аудита службы штампов времени присутствуют сведения, достаточные для различения подлинных и фальсифицированных штампов. Другим способом избежать последствий компрометации ключа и подтвердить подлинность исходных данных является использование штампа времени, созданного для тех же данных другой службой, ключ подписи которой не был скомпрометирован.
Если ключ подписи службы штампов времени не был скомпрометирован, но служба штампов времени больше не используется, ее сертификат необходимо аннулировать. В этом случае в САС для аннулированного сертификата службы штампов времени может присутствовать расширение reasonCode, описанное в [2], пункт 5.3.1. При этом возможны следующие причины аннулирования сертификата CRLReason:
CRLReason ::= ENUMERATED {
unspecified (0),
-- сертификат аннулирован без указания причины
affiliationChanged (3),
-- сертификат аннулирован в связи с изменением принадлежности
superseded (4),
-- сертификат аннулирован в связи с заменой
cessationOfOperation (5)
-- сертификат аннулирован в связи с прекращением работы
-- службы
}
В случае присутствия в САС расширения reasonCode с одной из указанных причин аннулирования, следует считать все штампы времени, созданные до момента аннулирования данного сертификата, действительными, а все штампы времени, созданные после - недействительными.
В случае отсутствия расширения reasonCode необходимо считать ключ подписи службы штампов времени скомпрометированным и проверять штампы времени так, как это описано ранее в данном разделе.
7 Форматы запроса и ответа
В данном разделе приведено описание формата запроса к службе штампов времени (см. 7.1) и ее ответа (см. 7.2) при использовании российских криптографических алгоритмов подписи и хэширования.
Описание используемых структур представлено в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
7.1 Формат запроса
Запрос к службе штампов времени представляет собой структуру типа TimeStampReq и выглядит следующим образом.
TimeStampReq ::= SEQUENCE {
version INTEGER { v1(1) },
messageImprint MessageImprint,
-- OID алгоритма хэширования и хэш-значение от данных, для
-- которых требуется штамп времени
reqPolicy TSAPolicyId OPTIONAL,
nonce INTEGER OPTIONAL,
certReq BOOLEAN DEFAULT FALSE,
extensions [0] IMPLICIT Extensions OPTIONAL }
Поля структуры TimeStampReq должны быть заполнены в соответствии со следующим описанием:
version
- Поле version описывает версию запроса штампа времени. В соответствии с настоящими рекомендациями поле version должно иметь значение 1.
messageImprint
- Поле messageImprint представляет собой структуру типа MessageImprint. Структура MessageImprint выглядит следующим образом.
MessageImprint ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
hashedMessage OCTET STRING }
Поле hashAlgorithm структуры MessageImprint представляет собой структуру типа AlgorithmIdentifier, определенную в Р 1323565.1.023-2018, пункт 5.1.1 и содержащую идентификатор используемого алгоритма хэширования. Порядок включения в данную структуру идентификаторов российских криптографических алгоритмов хэширования описан в 8.2.
Служба штампов времени должна проверить, что хэш-значение, для которого будет создан штамп времени, вычислено с использованием одной из возможных в соответствии с регламентом службы штампов времени хэш-функций. Если при проверке произошла ошибка, TSA должна отказать в выдаче штампа времени, вернув сообщение со значением badAlg в поле failInfo структуры PKIStatusInfo (см. 7.2.1.3).
Поле hashedMessage структуры MessageImprint должно содержать хэш-значение от данных, для которых требуется штамп времени. Хэш-значение представляется в виде строки октетов (OCTET STRING). Его длина должна совпадать с длиной хэш-значения, установленной для используемого алгоритма хэширования. Если длина полученного хэш-значения не соответствует длине, определенной в алгоритме хэширования, идентификатор которого указан в поле AlgorithmIdentifier, служба штампов времени должна отказать в выдаче штампа времени, вернув сообщение со значением badDataFormat в поле failInfo структуры PKIStatusInfo (см. 7.2.1.3).
reqPolicy
- Поле reqPolicy, если оно присутствует, имеет тип TSAPolicyId и обозначает регламент службы штампов времени, согласно которому следует выдать TimeStampToken. TSAPolicyId определяется следующим образом.
TSAPolicyId ::= OBJECT IDENTIFIER
nonce
- Поле nonce, если оно присутствует, имеет тип INTEGER и позволяет клиенту проверить актуальность ответа, когда локальное время недоступно. Значение nonce - это случайное число, выбранное из множества мощностью не менее 264 в соответствии с равновероятным распределением независимо от любых других параметров протокола. В случае его использования то же значение nonce должно быть включено в ответ, иначе ответ должен быть отклонен.
Примечание - В случае отсутствия у запрашивающей стороны локального источника времени, а также отсутствия поля nonce в запросе TimeStampReq протокол TSP не обеспечивает защиту от атак повтора, в результате которых штамп времени, выданный ранее для одного запроса, может быть признан корректным для другого запроса.
certReq
- Поле certReq имеет тип BOOLEAN. Если поле certReq присутствует и имеет значение "true", сертификат ключа проверки подписи службы штампов времени должен быть помещен в поле certificates в структуре SignedData ответа TimeStampResp (см. 7.2.2). Данное поле может содержать и другие сертификаты.
Если поле certReq отсутствует или присутствует и имеет значение "false", тогда поле certificates в ответе службы штампов времени должно отсутствовать.
extensions
- Поле extensions (расширения) имеет тип Extensions и позволяет добавить дополнительную информацию в запрос. Поле extensions описано в [3].
Если расширение используется запрашивающей стороной и не распознается службой штампов времени, то, вне зависимости от того, критично оно или нет, служба не должна выдавать штамп, а должна вернуть сообщение со значением unacceptedExtension в поле failInfo структуры PKIStatusInfo (см. 7.2.1.3).
Запрос штампа времени не должен содержать информации, идентифицирующей запрашивающую сторону (см. 5.2), поскольку эта информация не проверяется службой штампов времени. В случае если требуется идентификация или аутентификация запрашивающей стороны, необходимо использовать иные способы идентификации или аутентификации (например, инкапсулирование запроса в структуру ContentInfo, как это описано в Р 1323565.1.025, или аутентификацию в рамках взаимодействия по протоколу TLS (см. Р 1323565.1.020, Р 1323565.1.030).
7.2 Формат ответа
Ответ службы штампов времени представляет собой структуру TimeStampResp и выглядит следующим образом.
TimeStampResp ::= SEQUENCE {
status PKIStatusInfo,
timeStampToken TimeStampToken OPTIONAL }
Поле status представляет собой структуру типа PKIStatusInfo, описанную в 7.2.1.
Поле timeStampToken представляет собой структуру типа TimeStampToken, описанную в 7.2.2.
7.2.1 Структура PKIStatusInfo
Структура PKIStatusInfo определена в [4], пункт 5.2.3 и содержит информацию о статусе запроса к службе штампов времени. Структура PKIStatusInfo выглядит следующим образом.
PKIStatusInfo ::= SEQUENCE {
status PKIStatus,
statusString PKIFreeText OPTIONAL,
failInfo PKIFailureInfo OPTIONAL }
Поле status имеет тип PKIStatus, описанный в 7.2.1.1.
Поле statusString имеет тип PKIFreeText, описанный в 7.2.1.2.
Поле failInfo имеет тип PKIFailureInfo, описанный в 7.2.1.3.
7.2.1.1 Тип PKIStatus
Тип PKIStatus структуры PKIStatusInfo, определенный в [4], пункт 5.2.3, представляет собой числовое значение, определяющее статус службы штампов времени. Если значение равно 0 или 1, штамп времени TimeStampToken должен присутствовать. Если присутствует иное значение (кроме 0 или 1), штамп времени TimeStampToken не должен присутствовать.
Служба штампов времени должна поддерживать только следующие возможные статусы:
PKIStatus ::= INTEGER {
granted (0),
-- когда PKIStatus содержит значение 0, TimeStampToken
-- присутствует, как и запрашивалось.
grantedWithMods (1),
-- когда PKIStatus содержит значение 1, TimeStampToken
-- присутствует с изменениями.
rejection (2),
-- штамп времени не получен, причина указана в информационном
-- сообщении
waiting (3),
-- запрос штампа времени еще не обработан, дополнительная
-- информация ожидается позже.
revocationWarning (4),
-- это сообщение предупреждает о том, что аннулирование
-- неизбежно
revocationNotification (5)
-- уведомление о том, что аннулирование имело место }
7.2.1.2 Тип PKIFreeText
Поле statusString структуры PKIStatusInfo имеет тип PKIFreeText, определенный в [4], пункт 5.1.1. Данное поле является необязательным и содержит причину отклонения запроса штампа времени в виде текста, например "messageImprint field is not correctly formatted" (поле messageImprint отформатировано некорректно).
7.2.1.3 Тип PKIFailureInfo
Поле failInfo структуры PKIStatusInfo имеет тип PKIFailureInfo, определенный в [4], пункт 5.2.3. Данное поле является необязательным и представляет собой числовое значение, определяющее тип произошедшей ошибки. Если TimeStampToken отсутствует, PKIFailureInfo показывает причину отклонения запроса штампа времени.
Служба штампов времени должна поддерживать только следующие возможные значения:
PKIFailureInfo ::= BIT STRING {
badAlg (0),
-- нераспознанный или неподдерживаемый идентификатор
-- алгоритма
badRequest (2),
-- запрос не разрешен или не поддерживается
badDataFormat (5),
-- отправленные данные имеют неверный формат
timeNotAvailable (14),
-- источник времени в службе штампов времени недоступен
unacceptedPolicy (15),
-- служба штампов времени не поддерживает запрашиваемую
-- политику безопасности
unacceptedExtension (16),
-- служба штампов времени не поддерживает запрашиваемое
-- расширение
addInfoNotAvailable (17)
-- запрашиваемая дополнительная информация не распознается
-- или недоступна
systemFailure (25)
-- запрос не может быть обработан вследствие ошибки системы }
7.2.2 Структура TimeStampToken
Структура TimeStampToken содержит штамп времени и представляет собой структуру типа ContentInfo, определенную в Р 1323565.1.025-2019, раздел 5, где поле contentType должно содержать идентификатор типа содержимого "Подписанные данные" signed-data, а поле content должно содержать соответствующую структуру SignedData, процесс построения и поля которой описаны в Р 1323565.1.025-2019, раздел 7.
Штамп времени TimeStampToken выглядит следующим образом.
TimeStampToken ::= ContentInfo
--поле contentType содержит идентификатор id-signedData
--поле content является структурой SignedData
--(см. Р 1323565.1.025-2019, раздел 5)
Настоящие рекомендации определяют дополнительные требования к содержимому следующих полей структуры SignedData:
поля encapContentInfo (см. 7.2.2.1);
поля signedAttrs (см. 7.2.2.2). Данное поле входит в структуру SignerInfo, описанную в Р 1323565.1.025-2019, подраздел 7.3, и включает в себя подписанный атрибут, содержащий идентификатор сертификата TSA;
поля signatureAlgorithm (см. 8.1). Настоящие рекомендации устанавливают требования к содержимому данного поля только при использовании российских криптографических алгоритмов подписи. Поле signatureAlgorithm входит в структуру SignerInfo, описанную в Р 1323565.1.025-2019, подраздел 7.3, и включает в себя идентификатор используемого алгоритма подписи.
7.2.2.1 Поле encapContentInfo структуры SignedData
Поле encapContentInfo структуры SignedData представляет собой структуру типа EncapsulatedContentInfo, описанную в Р 1323565.1.025-2019, подраздел 7.2. Для использования российских криптографических алгоритмов подписи и хэширования в него необходимо включать следующие значения:
- В поле eContentType - следующий объектный идентификатор штампа времени:
id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4};
- в поле eContent - штамп времени в виде строки октетов (OCTET STRING). Значение поля eContent должно быть результатом DER-кодирования структуры TSTInfo.
Структура TSTInfo содержит штамп времени и должна быть представлена следующим образом.
TSTInfo ::= SEQUENCE {
version INTEGER { v1(1) },
policy TSAPolicyId,
messageImprint MessageImprint,
-- должно содержать то же значение, что и поле messageImprint
-- в структуре TimeStampReq (см. 7.1)
serialNumber INTEGER,
-- сторона, запрашивающая штамп времени, должна принимать
-- целые числа длиной до 160 бит.
genTime GeneralizedTime,
accuracy Accuracy OPTIONAL,
ordering BOOLEAN DEFAULT FALSE,
nonce INTEGER OPTIONAL,
-- должно присутствовать, если аналогичное поле имеется в
-- TimeStampReq. В этом случае поле должно иметь то же
-- значение.
tsa [0] GeneralName OPTIONAL,
extensions [1] IMPLICIT Extensions OPTIONAL
}
Поля структуры TSTInfo должны быть заполнены в соответствии со следующими требованиями:
version
- Поле version имеет тип INTEGER и описывает версию штампа времени. В соответствии с настоящими рекомендациями поле version должно иметь значение 1.
Запрашивающая сторона должна уметь распознавать штампы версии 1 со всеми присутствующими необязательными полями, но не обязана распознавать семантику любого присутствующего расширения (extensions).
policy
- Поле policy имеет тип TSAPolicyId и должно обозначать политику безопасности (регламент службы штампов времени, в рамках которой был дан ответ). Если в TimeStampReq (см. 7.1) присутствует поле reqPolicy, оно должно иметь то же значение, иначе должна быть возвращена ошибка unacceptedPolicy (см. 7.2.1.3).
Политика может включать следующие типы информации:
условия, на которых может использоваться штамп времени;
доступность журнала штампов времени для последующей проверки подлинности штампа;
другая информация.
messageImprint
- Поле messageImprint имеет тип MessageImprint и должно иметь то же значение, что и поле messageImprint в TimeStampReq (см. 7.1).
serialNumber
- Поле serialNumber имеет тип INTEGER и является целым числом, присвоенным службой штампов времени каждому штампу времени TimeStampToken. Оно должно быть уникальным для каждого штампа TimeStampToken, выданного указанной службой штампов (например, имя (см. поле tsa) и серийный номер штампа определяют уникальный TimeStampToken). Данное свойство должно быть сохранено даже после возможного прерывания работы службы (например, после сбоя).
genTime
- Поле genTime имеет тип GeneralizedTime и обозначает время создания штампа времени соответствующей службой, должно быть выражено в UTC. Для получения времени создания штампа TSA должна использовать доверенный источник времени. При получении времени от источника должна быть исключена возможность подмены данного времени.
Значения GeneralizedTime должны включать секунды. Даже если нет необходимости, следует использовать GeneralizedTime с точностью до секунд (см. [2], подпункт 4.1.2.5.2). В отличие от ограничений, описанных в ([2], подпункт 4.1.2.5.2), поле GeneralizedTime может содержать и доли секунд. Используется следующий синтаксис: ГГГГММДДччммсс [.м]Z, где [.м] обозначает доли секунды, отделенные десятичной точкой, и может содержать любое количество цифр или отсутствовать.
Например: 19990609001326.34352Z.
Предусмотрены следующие ограничения к DER-кодированию.
1) Результат кодирования должен оканчиваться на Z (что означает "время зулу"). Десятичный знак, если он присутствует, должен быть представлен в виде точки. В части долей секунд, если они есть, все нули в конце должны быть опущены. Если доли секунды равны нулю, они должны быть полностью опущены вместе с десятичной точкой.
2) Полночь по GMT представляется в следующей форме: ГГГГММДД000000Z, где ГГГГММДД обозначает день, следующий после полуночи.
Примеры правильного представления:
"19920521000000Z"
"19920622123421Z"
"19920722132100.3Z"
accuracy
- Поле accuracy представляет собой структуру типа Accuracy и обозначает отклонение времени от времени UTC, значение которого содержится в поле genTime. Структура Accuracy выглядит следующим образом.
Accuracy ::= SEQUENCE {
seconds INTEGER OPTIONAL,
millis [0] INTEGER (1..999) OPTIONAL,
micros [1] INTEGER (1..999) OPTIONAL }
Если поля seconds, millis или micros отсутствуют, то запрашивающая сторона должна считать их равными 0.
Добавив значение точности (поле accuracy) к GeneralizedTime, можно получить верхний предел времени, когда можно получить штамп времени, созданный службой штампов времени. Точно так же, путем вычитания точности из GeneralizedTime, можно получить нижний предел времени, когда можно получить штамп времени, созданный службой штампов времени. Точность необходимо представить в секундах, миллисекундах (1-999) и микросекундах (1-999) в виде целого числа.
Если необязательное поле accuracy отсутствует, то его значение можно получить другими способами, например с помощью TSAPolicyId.
ordering
- Поле ordering (упорядочивание) имеет тип BOOLEAN и используется для обозначения работы службы штампов времени в режиме, когда время создания двух штампов времени не может совпадать.
Если поле ordering присутствует и имеет значение "true", каждый штамп времени от одной и той же службы штампов времени всегда может быть упорядочен по полю genTime вне зависимости от точности (поля accuracy). Если поле ordering отсутствует или присутствует и имеет значение "false", то упорядочивание штампов времени, выданных одной или разными службами штампов времени, возможно, только если разница между genTime первого штампа и genTime второго штампа больше суммы значений точности genTime для каждого штампа.
nonce
- Поле nonce имеет тип INTEGER и аналогично одноименному полю, описанному в 7.1. Несмотря на то, что поле nonce является необязательным, служба штампов должна распознавать его и включать в ответ, если в запросе TimeStampReq поле nonce присутствовало. При этом значение поля в ответе должно однозначно соответствовать значению nonce в запросе.
tsa
- Поле tsa имеет тип GeneralName и может содержать название службы штампов времени. Если поле присутствует, оно должно соответствовать одному из имен субъекта, включенных в сертификат, используемый для проверки подписи штампа времени.
Поле tsa не является идентификатором службы штампов времени. Для этого должен быть использован идентификатор ее сертификата (атрибут ESSCertIDv2, см. 7.2.2.2).
extensions
- Поле extensions (расширения) имеет тип Extensions и позволяет добавить дополнительную информацию в запрос. Поле extensions описано в [3].
Настоящие рекомендации не определяют какие-либо расширения и допускают использование расширений, определенных в иных нормативных документах.
7.2.2.2 Правила включения идентификатора сертификата TSA в ответ
Штамп времени не должен содержать иных подписей, кроме подписи службы штампов времени.
Идентификатор сертификата службы штампов времени ESSCertIDv2, определенный в [5], раздел 4, должен быть включен в атрибут SigningCertificateV2 так, как это описано в [5], раздел 3.
Атрибут SigningCertificateV2 является подписанным атрибутом и должен быть включен в поле signedAttrs структуры SignerInfo так, как это описано в Р 1323565.1.025-2019, подразделы 7.1 и 7.3.
8 Использование российских криптографических алгоритмов
В данном разделе установлены требования к содержимому запроса к службе штампов времени и ее ответа, описываемых в разделе 7, при использовании российских криптографических алгоритмов подписи и хэширования.
8.1 Использование российских алгоритмов подписи
При использовании российских криптографических алгоритмов подписи идентификатор используемого алгоритма подписи должен быть включен в штамп времени (см. 7.2.2) в структуру SignedData, описанную в Р 1323565.1.025-2019, подраздел 7.7.
Для алгоритма подписи, определенного в разделе 6 ГОСТ Р 34.10-2012, с длиной ключа подписи 256 бит должен использоваться следующий идентификатор, определенный в Р 1323565.1.023-2018, пункт 5.2.1.1:
id-tc26-gost3410-12-256, "1.2.643.7.1.1.1.1".
Для алгоритма подписи, определенного в разделе 6 ГОСТ Р 34.10-2012, с длиной ключа подписи 512 бит должен использоваться следующий идентификатор, определенный в Р 1323565.1.023-2018, пункт 5.2.1.1:
id-tc26-gost3410-12-512, "1.2.643.7.1.1.1.2".
Примечание - В настоящих рекомендациях для всех идентификаторов российских криптографических алгоритмов перенос строки внутри значения идентификатора, кавычки и точка в его конце не учитываются.
8.2 Использование российских алгоритмов хэширования
При использовании российских криптографических алгоритмов хэширования идентификатор используемого алгоритма хэширования должен быть включен в запрос TimeStampReq и ответ TimeStampResp в структуру messageImprint, как это описано в 7.1 и 7.2.2.1.
Для алгоритма хэширования, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 256 бит должен использоваться следующий идентификатор, определенный в Р 1323565.1.025-2019, пункт 9.2.1:
id-tc26-gost3411-2012-256, "1.2.643.7.1.1.2.2".
Для алгоритма хэширования, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 512 бит должен использоваться следующий идентификатор, определенный в Р 1323565.1.025-2019, пункт 9.2.2:
id-tc26-gost3411-2012-512, "1.2.643.7.1.1.2.3".
8.3 Особенности использования российских криптографических алгоритмов
Свойства безопасности протокола TSP основываются на свойствах используемых алгоритмов хэширования и подписи. Поэтому при использовании российских криптографических алгоритмов рекомендуется обеспечивать соответствие стойкости используемого алгоритма хэширования и алгоритма подписи. Таким образом, рекомендуется следующее:
- для алгоритма хэширования, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 256 бит использовать алгоритм подписи, определенный в разделе 6 ГОСТ Р 34.10-2012, с длиной ключа подписи 256 бит;
- для алгоритма хэширования, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 512 бит использовать алгоритм подписи, определенный в разделе 6 ГОСТ Р 34.10-2012, с длиной ключа подписи 512 бит.
9 Способы передачи
В данном разделе описаны некоторые способы передачи запросов к службе штампов времени и ее ответов. Настоящие рекомендации допускают и другие способы передачи указанной информации.
9.1 Протокол TSP по HTTP
В данном разделе описан способ передачи запросов к службе штампов времени и ее ответов по протоколу HTTP. Для этого используются следующие объекты MIME.
1) Для передачи запроса: Content-Type: application/timestamp-query.
2) Для передачи ответа: Content-Type: application/timestamp-reply.
Каждый из описанных объектов MIME должен содержать данные, закодированные в DER.
При получении действительного запроса сервер должен вернуть действительный ответ с типом содержимого application/timestamp-reply или ошибку HTTP.
9.2 Протокол TSP на основе TCP
В данном разделе описан способ передачи запросов к службе штампов времени и ее ответов по протоколу TSP на основе TCP. Служба штампов времени ожидает сообщения от запрашивающей стороны и отправляет ответы на них, используя IP-порт 318. В общем виде взаимодействие выглядит следующим образом.
Запрашивающая сторона подключается к указанному порту и отправляет запрос к службе штампов времени. Служба штампов времени может отправить ответ со штампом времени и/или номер обращения, с которым запрашивающая сторона должна обратиться в следующем сообщении.
Запрашивающая сторона по истечении некоторого промежутка времени, называемого "время повторного запроса", должна отправить службе штампов времени номер обращения.
Служба штампов времени в зависимости от готовности ответа может вернуть сообщение, содержащее штамп времени, следующий номер обращения для повторного запроса или сообщение об ошибке.
Каждое из сообщений, отправляемых в рамках взаимодействия между запрашивающей стороной и службой штампов времени по протоколу TSP на основе TCP, имеет формат, представленный на рисунке 2.
Рисунок 2 - Сообщение в рамках взаимодействия по протоколу
TSP на основе TCP
Поле "Длина" имеет длину 4 октета (32 бита) и должно содержать сведения о длине оставшейся части сообщения в октетах. Длина оставшейся части сообщения является суммой количества октетов поля "Значение" и единственного октета поля "Тип". Все значения с длиной 4 октета (поле "Длина") в данном протоколе должны быть представлены от старшего байта к младшему (big-endian).
Поле "Тип" имеет длину 1 октет (8 бит) и содержит значение в шестнадцатеричном виде, указывающее на тип передаваемого сообщения. Данное поле должно быть заполнено в соответствии с таблицей 1.
Поле "Значение" содержит сообщение службы штампов времени. Содержимое данного поля зависит от значения поля "Тип" и должно быть заполнено в соответствии с таблицей 1.
Примечание - Для удобства различения типов сообщений в таблице ниже введено поле "Имя сообщения", позволяющее в дальнейшем ссылаться на конкретный тип передаваемого сообщения при описании порядка возможных сообщений. Данное поле не нужно включать в передаваемые сообщения при взаимодействии со службой штампов времени по протоколу TSP на основе TCP.
Таблица 1
Сообщения в рамках взаимодействия
по протоколу TSP на основе TCP
Имя сообщения
Тип
Значение
Описание
tsaMsg
'00'H
Запрос к службе штампов времени, закодированный в DER
Запрос к службе штампов времени
pollRep
'01'H
Номер обращения (32 бита),
время повторного запроса (32 бита)
Ответ службы штампов времени, если штамп времени не готов
pollReq
'02'H
Номер обращения (32 бита)
Обращение запрашивающей стороны к службе штампов времени после истечения времени повторного запроса
negPollRep
'03'H
'00'H
Обмен данными завершен
partialMsgRep
'04'H
Следующий номер обращения (32 бита),
время повторного запроса (32 бита),
сообщение службы штампов времени, закодированное в DER
Ответ службы штампов времени, если штамп времени не готов, содержащий дополнительные сведения
finalMsgRep
'05'H
Сообщение службы штампов времени, содержащее штамп времени и закодированное в DER
Ответ службы штампов времени, содержащий штамп времени
errorMsgRep
'06'H
Сообщение об ошибке
Ответ службы штампов времени, если обнаружены ошибки (например, получена ссылка на несуществующее или завершенное обращение)
Порядок возможных сообщений:
1) Запрашивающая сторона посылает tsaMsg и получает в ответ pollRep, negPollRep, partialMsgRep или finalMsgRep.
2) Запрашивающая сторона отправляет сообщение pollReq и получает в ответ negPollRep, partialMsgRep, finalMsgRep или errorMsgRep.
Параметр "время повторного запроса" представляется беззнаковым 32-битным целым числом. Это время обозначает минимальный интервал, после которого клиенту следует проверить состояние еще раз. Оно выражается в секундах.
9.3 Протокол TSP через электронную почту
В данном разделе описан способ передачи запросов к службе штампов времени и ее ответов посредством электронной почты. Для этого используются следующие объекты MIME.
Content-Type: application/timestamp-query
Content-Transfer-Encoding: base64
Content-Type: application/timestamp-reply
Content-Transfer-Encoding: base64
Каждый из описанных объектов MIME должен содержать данные, закодированные в DER и в base64 [6].
Для MIME-типов application/timestamp-query и application/timestamp-reply реализация передачи может включать в себя дополнительные параметры name (имя) и filename (название файла) с целью сохранения информации об имени, когда запросы и ответы о штампах времени сохранены в виде файлов.
Если указанные дополнительные параметры включены, необходимо использовать соответствующие расширения файлов:
MIME-тип
Расширение файла
application/timestamp-query
.TSQ
application/timestamp-reply
.TSR
Настоящие рекомендации допускают использование произвольного названия файла длиной не более восьми символов без учета трехбуквенного расширения.
9.4 Протокол TSP на основе файлового протокола
В данном разделе описан способ передачи запросов к службе штампов времени и ее ответов посредством файлового протокола (например, FTP).
Файл с запросом к службе штампов времени или с ее ответом должен содержать только результат DER-кодирования запроса или ответа соответственно и не должен содержать посторонних заголовков или концевых меток.
Файл с запросом к службе штампов времени должен иметь расширение .tsq (time stamp query).
Файл с ответом службы штампов времени должен иметь расширение .tsr (time stamp reply).
Приложение А
(рекомендуемое)
ШТАМП ВРЕМЕНИ ДЛЯ ЭЛЕКТРОННОЙ ПОДПИСИ В КРИПТОГРАФИЧЕСКИХ
СООБЩЕНИЯХ ФОРМАТА CMS
В данном приложении описан способ включения штампа времени для электронной подписи в содержимое типа "подписанные данные" (SignedData) криптографического сообщения формата CMS (см. Р 1323565.1.025).
Штамп времени для электронной подписи используется как доказательство того, что подпись была создана до определенного момента времени. Если сертификат ключа проверки подписи был аннулирован или прекратил свое действие, штамп времени позволяет проверить дату создания подписи по отношению к дате аннулирования или прекращения действия.
Штамп времени для электронной подписи следует поместить в криптографическое сообщение формата CMS в виде неподписанного атрибута Attribute и включить в поле unsignedAttrs соответствующей структуры SignerInfo так, как это описано в Р 1323565.1.025-2019, подразделы 7.1 и 7.3. Структура Attribute описана в Р 1323565.1.025-2019, подраздел 14.9, и должна быть заполнена следующим образом.
- attrType - включает в себя объектный идентификатор типа атрибута, содержащего штамп времени для электронной подписи. Идентификатор выглядит следующим образом.
id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)us(840) rsadsi(113549)
pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }
- attrValues - включает в себя структуру SignatureTimeStampToken, содержащую штамп времени TimeStampToken, описанный в 7.2.2. Структура SignatureTimeStampToken выглядит следующим образом.
SignatureTimeStampToken ::= TimeStampToken
Поле hashedMessage структуры MessageImprint в штампе времени TimeStampToken должно содержать хэш-значение от поля signature в соответствующей структуре SignerInfo криптографического сообщения формата CMS типа "подписанные данные" (см. Р 1323565.1.025-2019, раздел 7).
Приложение Б
(справочное)
ОСОБЕННОСТИ ПРОВЕРКИ ЭЛЕКТРОННОЙ ПОДПИСИ СО ШТАМПОМ ВРЕМЕНИ
В данном приложении приведена последовательность действий, необходимых для того, чтобы проверить, что электронная подпись была создана до того момента, когда соответствующий сертификат был аннулирован или закончился срок его действия, что позволяет использовать данный сертификат для проверки подписей, созданных ранее. Приведенные в данном приложении действия не являются достаточными для проверки электронной подписи, описание полного набора действий выходит за рамки настоящих рекомендаций.
Получение штампа времени для электронной подписи и ее последующая проверка могут быть осуществлены следующим способом.
1) Запрашивающая сторона посылает к службе штампов времени запрос (см. 7.1) на получение штампа времени для электронной подписи. В случае успеха обработки запроса служба штампов времени отправляет запрашивающей стороне ответ (см. 7.2), содержащий штамп времени для указанной подписи.
2) Запрашивающая сторона проверяет корректность штампа времени, как это описано в разделах 5 - 8.
Последующую проверку электронной подписи со штампом времени осуществляют следующим образом.
1) Проверяющая сторона проверяет математическую корректность электронной подписи.
2) Проверяющая сторона проверяет применимость штампа времени к подписи, для которой он был создан. В частности, проверяющая сторона должна убедиться в соответствии проверяемой подписи и подписи, для которой выдан штамп (подробнее см. 5.3).
3) Проверяющая сторона получает дату и время, указанные в полученном для подписи штампе времени, а также сроки действия сертификата, соответствующего проверяемой электронной подписи. Дата и время должны находиться в пределах срока действия данного сертификата.
4) Проверяющая сторона получает сведения об аннулировании сертификата ключа проверки электронной подписи на момент выдачи штампа времени для данной подписи. Дата и время аннулирования сертификата должны быть позже даты и времени, указанных в полученном для подписи штампе времени.
Если все данные условия соблюдены, электронная подпись объявляется действительной.
Приложение В
(справочное)
МОДУЛЬ АСН.1
Данное приложение носит справочный характер. В нем содержится описание структур, необходимых для взаимодействия по протоколу TSP. Описание структур представлено в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
PKIXTSP {iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-mod-tsp(13)}
DEFINITIONS IMPLICIT TAGS ::=
BEGIN
-- EXPORTS ALL --
IMPORTS
Extensions, AlgorithmIdentifier
FROM PKIX1Explicit88 {iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7)
id-mod(0) id-pkix1-explicit-88(1)}
GeneralName FROM PKIX1Implicit88 {iso(1)
identified-organization(3) dod(6) internet(1) security(5)
mechanisms(5) pkix(7) id-mod(0) id-pkix1-implicit-88(2)}
ContentInfo FROM CryptographicMessageSyntax {iso(1)
member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9)
smime(16) modules(0) cms(1)}
PKIFreeText FROM PKIXCMP {iso(1) identified-organization(3)
dod(6) internet(1) security(5) mechanisms(5) pkix(7) id-mod(0)
id-mod-cmp(9)} ;
-- Локально определенные объектные идентификаторы --
-- Объектный идентификатор штампа времени в поле eContentType
id-ct-TSTInfo OBJECT IDENTIFIER ::= { iso(1) member-body(2)
us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 4}
-- Запрос к службе штампов времени TimeStampReq
TimeStampReq ::= SEQUENCE {
version INTEGER { v1(1) },
messageImprint MessageImprint,
-- OID алгоритма хэширования и хэш-значение от данных, для которых
-- требуется штамп времени
reqPolicy TSAPolicyId OPTIONAL,
nonce INTEGER OPTIONAL,
certReq BOOLEAN DEFAULT FALSE,
extensions [0] IMPLICIT Extensions OPTIONAL }
MessageImprint ::= SEQUENCE {
hashAlgorithm AlgorithmIdentifier,
hashedMessage OCTET STRING }
TSAPolicyId ::= OBJECT IDENTIFIER
-- Ответ службы штампов времени TimeStampResp
TimeStampResp ::= SEQUENCE {
status PKIStatusInfo,
timeStampToken TimeStampToken OPTIONAL }
-- Информация о состоянии заполняется, исходя из определения, приведенного
-- в разделе 5.2.3 [4], следующим образом:
PKIStatusInfo ::= SEQUENCE {
status PKIStatus,
statusString PKIFreeText OPTIONAL,
failInfo PKIFailureInfo OPTIONAL }
PKIStatus ::= INTEGER {
granted (0),
-- когда PKIStatus содержит значение 0, TimeStampToken присутствует, как
-- и запрашивалось.
grantedWithMods (1),
-- когда PKIStatus содержит значение 1, TimeStampToken
-- присутствует с изменениями.
rejection (2),
-- штамп времени не получен, причина указана в информационном сообщении
waiting (3),
-- запрос штампа времени еще не обработан, дополнительная информация
-- ожидается позже.
revocationWarning (4),
-- сообщение предупреждает о том, что аннулирование неизбежно
revocationNotification (5)
-- уведомление о том, что аннулирование имело место. }
-- Если TimeStampToken отсутствует, PKIFailureInfo показывает причину
-- отклонения запроса штампа времени. PKIFailureInfo может иметь одно из
-- следующих значений.
PKIFailureInfo ::= BIT STRING {
badAlg (0),
-- нераспознанный или неподдерживаемый идентификатор алгоритма
badRequest (2),
-- транзакция не разрешена или не поддерживается
badDataFormat (5),
-- отправленные данные имеют неверный формат
timeNotAvailable (14),
-- источник времени в службе штампов времени недоступен
unacceptedPolicy (15),
-- служба штампов времени не поддерживает запрашиваемую политику
-- безопасности.
unacceptedExtension (16),
-- служба штампов времени не поддерживает запрашиваемое расширение.
addInfoNotAvailable (17)
-- запрашиваемая дополнительная информация не распознается
-- или недоступна
systemFailure (25)
-- запрос не может быть обработан вследствие ошибки системы }
-- Штамп времени TimeStampToken
TimeStampToken ::= ContentInfo
-- contentType имеет значение id-signedData, как определено в
-- разделе 7.1 Р 1323565.1.025-2019
-- content имеет значение signedData, как определено в разделе 7.1
-- Р 1323565.1.0252019
-- eContentType в структуре EncapsulatedContentInfo имеет значение
-- id-ct-TSTInfo
-- eContent в структуре EncapsulatedContentInfo представляет собой
-- структуру TSTInfo
TSTInfo ::= SEQUENCE {
version INTEGER { v1(1) },
policy TSAPolicyId,
messageImprint MessageImprint,
-- должно содержать то же значение, что и поле TimeStampReq
serialNumber INTEGER,
-- Сторона, запрашивающая штамп времени, должна принимать целые
-- числа длиной до 160 бит.
genTime GeneralizedTime,
accuracy Accuracy OPTIONAL,
ordering BOOLEAN DEFAULT FALSE,
nonce INTEGER OPTIONAL,
-- должно присутствовать, если аналогичное поле имеется в
-- TimeStampReq. В этом случае поле должно иметь то же значение.
tsa [0] GeneralName OPTIONAL,
extensions [1] IMPLICIT Extensions OPTIONAL }
Accuracy ::= SEQUENCE {
seconds INTEGER OPTIONAL,
millis [0] INTEGER (1..999) OPTIONAL,
micros [1] INTEGER (1..999) OPTIONAL }
END
Приложение Г
(справочное)
ПРИМЕРЫ
В данном приложении содержатся примеры запросов к службе штампов времени и ее ответов при использовании российских криптографических алгоритмов.
При создании примеров был использован следующий сертификат службы штампов времени. Сертификат представлен в кодировке Base64 [6].
MIIDXjCCAUagAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJSVTEVMBMGA1UEBwwMRGVmYXVsdCBDa
XR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMB4XDTIwMTIyMzE5NDM0NloXDTI1MDYyMTE5NDM0NlowRT
ELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx
0ZDBmMB8GCCqFAwcBAQEBMBMGByqFAwICIwEGCCqFAwcBAQICA0MABEBX73jAk8X+4zjYswEJllw3bfkZQ2zOaWVe4
xhhw569KVhCNjRrz9FFmd/6hEniZcWwKR0va5rA5b4QZjbvtpH1oxowGDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCD
ANBgkqhkiG9w0BAQUFAAOCAgEAxrd16Qw9dzv+JImvEbUPHGx/H8EUiKg12JxxnrnjuRlz6Lw+KeGYJxgEx+XwP7u
O8CwG4LcO+0vZio34UWYJ7luLzq53bneq4PCQ5Q/QWghfKNsreLrd6Ph7WaRPNKXMa9WvN7lPFuEuN8fNZDL6XXvQ
OjtFf5xCopeyI4embrJvelDo5T++ekqz5Tof2Is6/4JQa5KZCu1duVmSPc4PpDNIQXYIPskktZEaCPkaVTpwhIvY/
qlu5bvTA9LWN3k/ub/gTPcY6GcEE274Qr4SIuFqoCNBZJcHUHZiEDdQDX3FiE3GLypl4otUstxshzGuMsaAEZ3vXVt
YavY3aLW9RMqybS9hPF8gB6m+hU2uwYdqoF9Ma+fCdwc3jRq8qN0aeovPcT/i52BZ9muT/uwUpDTzinP91i56yOA85
7waIO4WbS7bgLLmBS1iXcpsoJSX5PEDBTGXYz24u+ERQtnSlfhw1L5OXJsNtBGgaamM4huzJWFmwn0rb7aKND/IcMH
+u8w7hjdFJiFb1A8+0S9gH3u3ueCFzw+Xax/DcrKkeilERYdhxUqr6jfI/Tm6dU14qXnsax55nL4knf0FCRNQh9uzZ
PkMDmSmGIs+88/ZL7wRV8hmFr81JZDuW1YSTlU2H0lxcuob5HYM5o68MPyQIWeymxBpzzT493XK+eVwFeE=
Г.1 Взаимодействие с TSA с запросом сертификата TSA, указанием nonce и использованием алгоритма, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 256 бит
Г.1.1 Запрос
Запрос к службе штампов времени в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
SEQUENCE {
INTEGER 1
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
OCTET STRING
8B 15 38 26 08 82 CE 63 0A E7 A6 64 B3 24 0E A2
EC 38 6F D1 67 8F 24 22 42 A1 16 C4 55 DA 55 A7
}
INTEGER 00 D1 61 AD 67 5B 17 F8 6D
BOOLEAN TRUE
}
Запрос к службе штампов времени в кодировке Base64 [6].
MEMCAQEwMDAMBggqhQMHAQECAgUABCCLFTgmCILOYwrnpmSzJA6i7Dhv0WePJCJCoRbEVdpVpwIJANFhrWdbF/htAQH/
Г.1.2 Ответ
Штамп времени в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
SEQUENCE {
SEQUENCE {
INTEGER 0
}
SEQUENCE {
OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
[0] {
SEQUENCE {
INTEGER 3
SET {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
}
SEQUENCE {
OBJECT IDENTIFIER tSTInfo (1 2 840 113549 1 9 16 1 4)
[0] {
OCTET STRING, encapsulates {
SEQUENCE {
INTEGER 1
OBJECT IDENTIFIER '1 2 3 4 1'
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
OCTET STRING
8B 15 38 26 08 82 CE 63 0A E7 A6 64 B3 24 0E A2
EC 38 6F D1 67 8F 24 22 42 A1 16 C4 55 DA 55 A7
}
INTEGER 5
GeneralizedTime 28/12/2020 10:40:21 GMT
SEQUENCE {
INTEGER 1
[0] 01 F4
[1] 64
}
BOOLEAN TRUE
INTEGER 00 D1 61 AD 67 5B 17 F8 6D
[0] {
[4] {
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'AU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
stateOrProvinceName (2 5 4 8)
UTF8String 'Some-State'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
organizationName (2 5 4 10)
UTF8String 'Internet Widgits Pty Ltd'
}
}
}
}
}
}
}
}
}
[0] {
SEQUENCE {
SEQUENCE {
[0] {
INTEGER 2
}
INTEGER 1
SEQUENCE {
OBJECT IDENTIFIER
sha1WithRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER localityName (2 5 4 7)
UTF8String 'Default City'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Default Company Ltd'
}
}
}
SEQUENCE {
UTCTime 23/12/2020 19:43:46 GMT
UTCTime 21/06/2025 19:43:46 GMT
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'AU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER stateOrProvinceName (2 5 4 8)
UTF8String 'Some-State'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Internet Widgits Pty Ltd'
}
}
}
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 1 1'
SEQUENCE {
OBJECT IDENTIFIER
cryptoProSignA (1 2 643 2 2 35 1)
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
}
}
BIT STRING, encapsulates {
OCTET STRING
57 EF 78 C0 93 C5 FE E3 38 D8 B3 01 09 96 5C 37
6D F9 19 43 6C CE 69 65 5E E3 18 61 C3 9E BD 29
58 42 36 34 6B CF D1 45 99 DF FA 84 49 E2 65 C5
B0 29 1D 2F 6B 9A C0 E5 BE 10 66 36 EF B6 91 F5
}
}
[3] {
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER extKeyUsage (2 5 29 37)
BOOLEAN TRUE
OCTET STRING, encapsulates {
SEQUENCE {
OBJECT IDENTIFIER
timeStamping (1 3 6 1 5 5 7 3 8)
}
}
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER
sha1WithRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
BIT STRING
C6 B7 75 E9 0C 3D 77 3B FE 24 89 AF 11 B5 0F 1C
6C 7F 1F C1 14 88 A8 35 D8 9C 71 9E B9 E3 B9 19
73 E8 BC 3E 29 E1 98 27 18 04 C7 E5 F0 3F BB 8E
F0 2C 06 E0 B7 0E FB 4B D9 8A 8D F8 51 66 09 EE
5B 8B CE AE 77 6E 77 AA E0 F0 90 E5 0F D0 5A 08
5F 28 DB 2B 78 BA DD E8 F8 7B 59 A4 4F 34 A5 CC
6B D5 AF 37 B9 4F 16 E1 2E 37 C7 CD 64 32 FA 5D
7B D0 3A 3B 45 7F 9C 42 A2 97 B2 23 87 A6 6E B2
6F 7A 50 E8 E5 3F BE 7A 4A В3 E5 3A 1F D8 8B 3A
FF 82 50 6B 92 99 0A ED 5D B9 59 92 3D CE 0F A4
33 48 41 76 08 3E C9 24 B5 91 1A 08 F9 1A 55 3A
70 84 8B D8 FE A9 6E E5 BB D3 03 D2 D6 37 79 3F
B9 BF E0 4C F7 18 E8 67 04 13 6E F8 42 BE 12 22
E1 6A A0 23 41 64 97 07 50 76 62 10 37 50 0D 7D
C5 88 4D C6 2F 2A 65 E2 8B 54 B2 DC 6C 87 31 AE
32 C6 80 11 9D EF 5D 5B 58 6A F6 37 68 B5 BD 44
CA B2 6D 2F 61 3C 5F 20 07 A9 BE 85 4D AE C1 87
6A A0 5F 4C 6B E7 C2 77 07 37 8D 1A BC A8 DD 1A
7A 8B CF 71 3F E2 E7 60 59 F6 6B 93 FE EC 14 A4
34 F3 8A 73 FD D6 2E 7A C8 E0 3C E7 ВС 1A 20 EE
16 6D 2E DB 80 B2 E6 05 2D 62 5D CA 6C A0 94 97
E4 F1 03 05 31 97 63 3D B8 BB E1 11 42 D9 D2 95
F8 70 D4 BE 4E 5C 9B 0D B4 11 A0 69 A9 8C E2 1B
B3 25 61 66 C2 7D 2B 6F B6 8A 34 3F C8 70 C1 FE
BB CC 3B 86 37 45 26 21 5B D4 0F 3E D1 2F 60 1F
7B B7 B9 E0 85 CF 0F 97 6B 1F C3 72 B2 A4 7A 29
44 45 87 61 C5 4A AB EA 37 C8 FD 39 BA 75 4D 78
A9 79 EC 6B 1E 79 9C BE 24 9D FD 05 09 13 50 87
DB B3 64 F9 0C 0E 64 A6 18 8B 3E F3 CF D9 2F BC
11 57 C8 66 16 BF 35 25 90 EE 5B 56 12 4E 55 36
1F 49 71 72 EA 1B E4 76 0C E6 8E BC 30 FC 90 21
67 B2 9B 10 69 CF 34 F8 F7 75 CA F9 E5 70 15 E1
}
SEQUENCE {
SEQUENCE {
INTEGER 00 C6 92 54 8C 1F 90 52 23
SEQUENCE {
OBJECT IDENTIFIER
sha1WithRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER localityName (2 5 4 7)
UTF8String 'Default City'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Default Company Ltd'
}
}
}
SEQUENCE {
UTCTime 23/12/2020 19:42:07 GMT
UTCTime 23/12/2024 19:42:07 GMT
}
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER localityName (2 5 4 7)
UTF8String 'Default City'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Default Company Ltd'
}
}
}
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER
rsaEncryption (1 2 840 113549 1 1 1)
NULL
}
BIT STRING, encapsulates {
SEQUENCE {
INTEGER
00 DB C8 31 44 45 EE 8D 7D E6 6F 40 BC 73 48 DE
76 F7 19 EB 4A 1B AF 99 68 CE B6 6E 64 9D 61 A2
51 6C 6E 70 D9 9F 13 06 B2 B9 09 A7 E5 08 BE 1A
65 D0 B7 CA C7 CC 9D 3F F5 C1 EC C8 F1 E8 E2 18
EE 02 8E A6 0B BD B4 87 82 00 87 25 0D 4D 96 40
19 4A 81 DF 19 E8 2B 9F F9 22 D6 52 CB 52 F5 37
5D 3C 3E E7 E1 30 90 1A AD B9 77 D6 B8 10 C9 8C
85 5E E6 AF 6F 26 89 47 02 2B 9F 9C 3B F4 EE E2
86 7A 0E 74 FD F9 90 58 30 74 DA ED 27 4E 0A 56
BA E9 03 27 FC E9 74 E1 AB 30 BA DB C3 DA 12 A7
48 5D 44 49 95 A1 9D 68 62 12 60 38 1E 76 3F D6
CB 56 B7 93 A3 8D 06 29 0B 45 СВ 8A 8F 56 2C 12
F5 78 F7 96 25 8F A4 09 FE 9B 5E F3 E5 A0 0F DF
7C 30 4A 1D A6 3B 01 00 06 11 5A EA 2C F9 13 A7
A3 9E DD 71 EF 1F B1 2C 37 9F 3E 2B AF BB 5C 96
B0 27 2C 94 28 22 8C 57 09 FD 00 09 DE 61 C8 3D
E2 6F 7F A0 03 AC BD FC A5 A1 1A 56 78 D0 62 86
A9 73 F6 C1 35 8A 18 DA F3 E8 40 38 99 D7 83 20
E1 0E 59 6F 04 AB C3 D9 F2 8E 5E 97 1B 5C 48 3D
6D 7C BA 43 D8 4E 4E 62 F4 3D BC 1E 2A AE 91 08
F3 8D D6 AB B8 2E 0E 12 0C A5 87 80 A4 48 11 99
E1 3D D1 21 D5 BE 02 52 A3 5F F9 68 34 88 86 F8
AA E6 F2 0C FD FD AE A4 97 02 56 75 35 B0 8E 38
37 F8 21 52 C3 72 31 34 76 81 EC B1 19 84 24 A4
06 11 4F B6 1F AD 0A 79 9E 3E 14 9A 55 2A A5 85
3D 3D DF 19 95 9E C6 8A B2 F4 6F 9F E6 55 E5 2F
55 3D 1D 41 7A 25 91 C5 BF 76 10 E7 8E 3D 81 3B
63 2D AC 2F F2 3D 88 EA 65 93 CB DF CD 1C 39 C3
A5 AB 9C 12 07 D3 C9 31 D1 B9 8B 93 BC 83 9B 27
66 D4 68 41 6A 8A 5E 71 0A B6 50 6A 0F 52 AD 47
BA DB 3E D0 51 CA 3D F5 80 24 EE 96 3A 96 CC C6
9A 83 81 01 DA 4D 13 66 46 DB D3 98 AB 1A 2D 39
D9
INTEGER 65537
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER
sha1WithRSAEncryption (1 2 840 113549 1 1 5)
NULL
}
BIT STRING
0A 42 BF 32 65 93 A1 94 CB 79 67 A8 B8 E0 77 FD
F4 B3 72 FA 90 D9 92 В0 6A EA 87 73 8A D9 64 FD
EB A3 D3 85 F4 AC 7B AA F7 9B BE 72 08 B3 8B 49
6C 43 12 DF 9C 72 BB 80 FE C3 96 56 E7 04 54 6A
13 0D EE 16 E1 88 C2 ED 58 0A 1A 81 FA DA BA 19
A2 7F FF 6E 66 7E 70 35 A0 D8 47 98 60 C5 4B 03
03 8E D1 7C F1 CD AE CE A8 80 61 DC AF C6 3E 74
C4 12 19 7D D2 47 9B 93 88 CC 7F 07 7A BF C8 A4
D8 2B DD 4D C8 5B 3D 11 55 BD 70 4D C5 19 4F 46
89 37 76 31 CB 34 F1 DB 55 C9 DF 94 30 3A 7F EF
96 FC 53 8E 3F 5B EA 36 57 9D 91 94 4C 85 94 70
15 0D 52 DF 96 05 ED B6 0C A1 3A 57 F6 DD BF 87
FE 25 E7 49 BD 55 74 CC C6 A7 7B DB D1 9E DA 47
0E F7 B6 8D 8D 68 70 2B 1C A4 45 8C 14 B5 3C 15
80 E4 A7 9D 22 06 67 5B 8E 75 F8 1B 6A 76 F8 3A
64 4B CA 13 FE 28 4F 02 62 4E E6 AB 89 B5 50 39
E1 99 C5 69 36 DA 41 F9 B7 EC 83 16 3D 4A A7 90
A3 08 39 7E 23 0B 55 CB 63 96 11 46 02 97 94 C7
2A D6 A6 2C 3C 20 B4 48 3B FE 8D EC 0E E0 A4 D8
FF 5F B2 94 52 BE 53 B7 C6 B8 89 E0 98 8C 53 C1
DE B0 2E 8B 5C 89 1E 66 67 F3 BD 68 56 86 FB 15
4A FC 43 17 33 4D E3 DF 91 19 2D 7D 7E 70 8B 5D
D3 81 A4 E9 5D 6A 1E DD 8B 8C 21 7B 7A 5C 8B F9
2F A1 DE 8C 8D 31 3D 40 00 40 80 98 32 CC B1 AC
05 42 D5 20 E5 02 F7 81 67 86 ED 11 51 64 4B 10
E2 DB C5 7B 71 B9 6A B3 C2 F5 5B E8 E8 0A FB EB
32 63 DF A2 2A 20 B6 EA 18 53 AA D6 65 14 9C 42
38 97 22 A5 09 26 B8 6E 47 9E 82 91 D0 C3 F5 2E
AD 95 85 48 2C 56 EA DC 3C BA DA D4 9A 69 0A 95
93 46 1F 91 66 56 25 21 CE 53 A5 1A AD C1 00 75
C8 26 64 52 2C A8 CA 04 05 AE 65 62 93 C3 28 D5
00 8F F0 A1 85 14 B0 A5 79 BC D3 4B 01 C4 E4 41
}
}
SET {
SEQUENCE {
INTEGER 1
SEQUENCE {
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER localityName (2 5 4 7)
UTF8String 'Default City'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Default Company Ltd'
}
}
}
INTEGER 1
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
[0] {
SEQUENCE {
OBJECT IDENTIFIER contentType (1 2 840 113549 1 9 3)
SET {
OBJECT IDENTIFIER
tSTInfo (1 2 840 113549 1 9 16 1 4)
}
}
SEQUENCE {
OBJECT IDENTIFIER signingTime (1 2 840 113549 1 9 5)
SET {
UTCTime 28/12/2020 10:40:21 GMT
}
}
SEQUENCE {
OBJECT IDENTIFIER
signingCertificate (1 2 840 113549 1 9 16 2 12)
SET {
SEQUENCE {
SEQUENCE {
SEQUENCE {
OCTET STRING
FA B4 1E 53 D8 1A FF 02 36 5A 7D B6 75 D4 10 E0
F4 74 C7 40
}
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER
messageDigest (1 2 840 113549 1 9 4)
SET {
OCTET STRING
D1 63 88 44 CF A6 74 B4 CA 16 98 F7 82 79 B3 DC
C0 CD AB 31 F0 39 97 BD D2 82 C5 45 E0 D6 32 D8
}
}
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 1 1'
NULL
}
OCTET STRING
C7 08 50 E4 87 03 E4 6C B0 5D C8 D8 94 C5 82 04
37 F3 EE 6B 55 06 4F 94 B7 0A 95 9F 68 5A 0F 6A
63 D2 2C 6C 43 18 BA 1F 7A FF 7C 73 01 CB A0 5F
D8 E2 EF B5 DA 79 07 66 0E 6C 62 85 96 49 71 03
}
}
}
}
}
}
Штамп времени в кодировке Base64 [6].
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
YObGKFlklxAw==
Г.2 Взаимодействие с TSA без запроса сертификата TSA, без указания nonce и с использованием алгоритма, определенного в разделе 8 ГОСТ Р 34.11-2012, с длиной хэш-значения 512 бит
Г.2.1 Запрос
Запрос к службе штампов времени в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
SEQUENCE {
INTEGER 1
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 3'
NULL
}
OCTET STRING
FB 9C 70 31 84 23 43 8A 7C 7F 75 75 B5 B5 09 81
7C 05 72 D5 77 23 78 0D 69 72 97 35 1D 43 0D 9B
F0 7E 4A 20 E6 F6 4C CF 06 9B 9B 78 A8 DA 40 17
96 24 05 83 C9 1D EE CA 3C F1 4B 20 2B F0 EE A6
}
}
Запрос к службе штампов времени в кодировке Base64 [6].
MFUCAQEwUDAMBggqhQMHAQECAwUABED7nHAxhCNDinx/dXW1tQmBfAVy1XcjeA1pcpc1HUMNm/B+SiDm9kzPBpubeKjaQBeWJAWDyR3uyjzxSyAr8O6m
Г.2.2 Ответ
Штамп времени в абстрактно-синтаксической нотации версии 1 (АСН.1), определенной в ГОСТ Р ИСО/МЭК 8824.
SEQUENCE {
SEQUENCE {
INTEGER 0
}
SEQUENCE {
OBJECT IDENTIFIER signedData (1 2 840 113549 1 7 2)
[0] {
SEQUENCE {
INTEGER 3
SET {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
}
SEQUENCE {
OBJECT IDENTIFIER tSTInfo (1 2 840 113549 1 9 16 1 4)
[0] {
OCTET STRING, encapsulates {
SEQUENCE {
INTEGER 1
OBJECT IDENTIFIER '1 2 3 4 1'
SEQUENCE {
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 3'
NULL
}
OCTET STRING
FB 9C 70 31 84 23 43 8A 7C 7F 75 75 B5 B5 09 81
7C 05 72 D5 77 23 78 0D 69 72 97 35 1D 43 0D 9B
F0 7E 4A 20 E6 F6 4C CF 06 9B 9B 78 A8 DA 40 17
96 24 05 83 C9 1D EE CA 3C F1 4B 20 2B F0 EE A6
}
INTEGER 4
GeneralizedTime 28/12/2020 10:40:06 GMT
SEQUENCE {
INTEGER 1
[0] 01 F4
[1] 64
}
BOOLEAN TRUE
[0] {
[4] {
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'AU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER
stateOrProvinceName (2 5 4 8)
UTF8String 'Some-State'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Internet Widgits Pty Ltd'
}
}
}
}
}
}
}
}
}
SET {
SEQUENCE {
INTEGER 1
SEQUENCE {
SEQUENCE {
SET {
SEQUENCE {
OBJECT IDENTIFIER countryName (2 5 4 6)
PrintableString 'RU'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER localityName (2 5 4 7)
UTF8String 'Default City'
}
}
SET {
SEQUENCE {
OBJECT IDENTIFIER organizationName (2 5 4 10)
UTF8String 'Default Company Ltd'
}
}
}
INTEGER 1
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 2 2'
NULL
}
[0] {
SEQUENCE {
OBJECT IDENTIFIER contentType (1 2 840 113549 1 9 3)
SET {
OBJECT IDENTIFIER tSTInfo (1 2 840 113549 1 9 16 1 4)
}
}
SEQUENCE {
OBJECT IDENTIFIER signingTime (1 2 840 113549 1 9 5)
SET {
UTCTime 28/12/2020 10:40:06 GMT
}
}
SEQUENCE {
OBJECT IDENTIFIER
signingCertificate (1 2 840 113549 1 9 16 2 12)
SET {
SEQUENCE {
SEQUENCE {
SEQUENCE {
OCTET STRING
FA B4 1E 53 D8 1A FF 02 36 5A 7D B6 75 D4 10 E0
F4 74 C7 40
}
}
}
}
}
SEQUENCE {
OBJECT IDENTIFIER messageDigest (1 2 840 113549 1 9 4)
SET {
OCTET STRING
61 B0 FE 01 F6 E4 4F EC 21 A8 D3 A6 D3 55 0A 5B
A1 99 FE CD F7 CD 16 F1 8C 56 A9 F7 7A FF 34 87
}
}
}
SEQUENCE {
OBJECT IDENTIFIER '1 2 643 7 1 1 1 1'
NULL
}
OCTET STRING
45 2C 78 42 9C 5A 73 12 25 3B BD 96 FA F0 13 DC
13 DC C8 25 67 AD 71 F6 CB BB F7 CA F9 6D C7 55
43 5C 7D 8A 5A 86 D8 D0 E9 47 72 2A 2E D0 47 2E
89 0A 34 7A E3 A3 58 E4 EE EB 31 2B 78 B6 8D C1
}
}
}
}
}
}
Штамп времени в кодировке Base64 [6].
MIICXjADAgEAMIICVQYJKoZIhvcNAQcCoIICRjCCAkICAQMxDjAMBggqhQMHAQECAgUAMIHfBgsqhkiG9w0BCR
ABBKCBzwSBzDCByQIBAQYEKgMEATBQMAwGCCqFAwcBAQIDBQAEQPuccDGEI0OKfH91dbW1CYF8BXLVdyN4DWly
lzUdQw2b8H5KIOb2TM8Gm5t4qNpAF5YkBYPJHe7KPPFLICvw7qYCAQQYDzIwMjAxMjI4MTA0MDA2WjAKAgEBgA
IB9IEBZAEB/6BJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVy
bmV0IFdpZGdpdHMgUHR5IEx0ZDGCAUkwggFFAgEBMEcwQjELMAkGA1UEBhMCUlUxFTATBgNVBAcMDERlZmF1bH
QgQ2l0eTEcMBoGA1UECgwTRGVmYXVsdCBDb21wYW55IEx0ZAIBATAMBggqhQMHAQECAgUAoIGYMBoGCSqGSIb
3DQEJAzENBgsqhkiG9w0BCRABBDAcBgkqhkiG9w0BCQUxDxcNMjAxMjI4MTA0MDA2WjArBgsqhkiG9w0BCRAC-
DDEcMBowGDAWBBT6tB5T2Br/AjZafbZ11BDg9HTHQDAvBgkqhkiG9w0BCQQxIgQgYbD+AfbkT+whqNOm01UKW6GZ/
s33zRbxjFap93r/NIcwDAYIKoUDBwEBAQEFAARARSx4QpxacxIlO72W+vAT3BPcyCVnrXH2y7v3yvltx1VDXH2KWo
bY0OlHciou0EcuiQo0euOjWOTu6zEreLaNwQ==
БИБЛИОГРАФИЯ
[1]
Федеральный закон от 6 апреля 2011 г. N 63-ФЗ "Об электронной подписи"
[2]
IETF RFC 5280
Cooper D., Santesson S., Farrell S., Boeyen R., Housley R., Polk W. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, IETF RFC 5280, 2008
[3]
ИСО/МЭК 9594-8:2020
Информационная технология. Взаимосвязь открытых систем. Справочник. Часть 8. Структуры сертификатов открытого ключа и атрибута (Information technology - Open systems interconnection - Part 8: The Directory: Public-key and attribute certificate frameworks)
[4]
IETF RFC 4210
Adams C. and Farrell S. Internet X.509 Public Key Infrastructure, Certificate Management Protocols, IETF RFC 4210, 1999
[5]
IETF RFC 5035
Schaad J. Enhanced Security Services (ESS) Update: Adding CertID Algorithm Agility, IETF RFC 5035, 2007
[6]
IETF RFC 4648
Josefsson S. The Base16, Base32, and Base64 Data Encodings, IETF RFC 4648, 2008
УДК 681.3.06:006.354
ОКС 35.030
Ключевые слова: криптография, штамп времени, служба штампов времени, электронная подпись, протокол штампов времени