doc/IT/CADES/XLT1/logic.md
2025-07-15 12:42:10 +03:00

32 KiB
Raw Blame History

algorithm

1 как происходит формирование подписи формата CAdES-X Long Type 1 (Cades-XLT1). Считаем, что используется OSCP сервис. Кроме текстового описания приведи алгоритм формирования и саму структуру блоков подписи в формате mermaid markdown (для вставки на github).

📄 Подробное описание формирования подписи CAdES-X Long Type 1 (CAdES-XLT1) с использованием OCSP

Кратко:
Подпись CAdES-XLT1 формируется поэтапно, начиная с базовой подписи (CAdES-BES), добавлением временных меток, ссылок и самих данных для проверки (сертификаты и OCSP-ответы), а также финальной временной метки, охватывающей все эти данные. Это обеспечивает долгосрочную проверяемость подписи без необходимости обращения к внешним сервисам.


1. Описание процесса формирования CAdES-XLT1

CAdES-XLT1 — это расширенный формат электронной подписи на базе CMS, который включает в себя не только саму подпись, но и все необходимые данные для её долгосрочной проверки: цепочку сертификатов, статусы отзыва (OCSP-ответы), а также временные метки. Использование OCSP позволяет удостовериться, что сертификаты не были отозваны на момент подписания.

Пошаговый алгоритм формирования CAdES-XLT1:

  1. Создание базовой подписи (CAdES-BES/EPES):

    • Формируется структура CMS SignedData с подписываемым контентом, сертификатом подписанта и обязательными подписанными атрибутами (content-type, message-digest, signing-certificate).
  2. Добавление временной метки на подпись (CAdES-T):

    • Получается временная метка у доверенного TSA (Time Stamping Authority) на значение подписи и добавляется как неподписанный атрибут.
  3. Добавление ссылок на валидационные данные (CAdES-C):

    • Включаются ссылки (хэши) на все сертификаты и данные об отзыве (OCSP-ответы), необходимые для проверки подписи. Эти ссылки добавляются как неподписанные атрибуты.
  4. Встраивание самих валидационных данных (CAdES-X Long):

    • Включаются сами сертификаты и OCSP-ответы в атрибуты certificate-values и revocation-values.
  5. Добавление временной метки на все валидационные данные (CAdES-X Type 1):

    • Получается временная метка TSA на хэш всех неподписанных атрибутов (включая валидационные данные) и добавляется как атрибут.
  6. Результат — CAdES-XLT1:

    • Итоговая подпись содержит: исходную подпись, временные метки, ссылки и значения сертификатов и OCSP-ответов, а также финальную временную метку на все эти данные.

2. Алгоритм формирования (mermaid markdown)

flowchart TD
    S1["Start: Подготовка данных для подписи"]
    S2["Создание CMS SignedData (CAdES-BES/EPES)"]
    S3["Запрос временной метки TSA на подпись (CAdES-T)"]
    S4["Сбор ссылок на сертификаты и OCSP (CAdES-C)"]
    S5["Встраивание сертификатов и OCSP-ответов (CAdES-X Long)"]
    S6["Запрос временной метки TSA на все валидационные данные (CAdES-X Type 1)"]
    S7["Результат: Подпись CAdES-XLT1"]

    S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7
flowchart TD
    S1[Start: Подготовка данных для подписи]
    S2[Создание CMS SignedData (CAdES-BES/EPES)]
    S3[Запрос временной метки TSA на подпись (CAdES-T)]
    S4[Сбор ссылок на сертификаты и OCSP (CAdES-C)]
    S5[Встраивание сертификатов и OCSP-ответов (CAdES-X Long)]
    S6[Запрос временной метки TSA на все валидационные данные (CAdES-X Type 1)]
    S7[Результат: Подпись CAdES-XLT1]
    S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7

3. Структура блоков подписи CAdES-XLT1 (mermaid markdown)

graph TD
    A["CMS SignedData"]
    A --> B["EncapsulatedContentInfo (Подписываемый контент)"]
    A --> C["Certificates"]
    A --> D["SignerInfos"]
    D --> E["SignerInfo"]
    E --> F["Signed Attributes"]
    F --> F1["content-type"]
    F --> F2["message-digest"]
    F --> F3["signing-certificate"]
    E --> G["Unsigned Attributes"]
    G --> G1["signature-time-stamp (CAdES-T)"]
    G --> G2["complete-certificate-references (CAdES-C)"]
    G --> G3["complete-revocation-references (CAdES-C)"]
    G --> G4["certificate-values (CAdES-X Long)"]
    G --> G5["revocation-values (CAdES-X Long, включает OCSP)"]
    G --> G6["CAdES-X Type 1 time-stamp"]
graph TD
    A[CMS SignedData]
    A --> B[EncapsulatedContentInfo (Подписываемый контент)]
    A --> C[Certificates]
    A --> D[SignerInfos]
    D --> E[SignerInfo]
    E --> F[Signed Attributes]
    F --> F1[content-type]
    F --> F2[message-digest]
    F --> F3[signing-certificate]
    E --> G[Unsigned Attributes]
    G --> G1[signature-time-stamp (CAdES-T)]
    G --> G2[complete-certificate-references (CAdES-C)]
    G --> G3[complete-revocation-references (CAdES-C)]
    G --> G4[certificate-values (CAdES-X Long)]
    G --> G5[revocation-values (CAdES-X Long, включает OCSP)]
    G --> G6[CAdES-X Type 1 time-stamp]

4. Ключевые моменты и пояснения


🟢 Key Takeaway

CAdES-XLT1 с OCSP — это формат электронной подписи, который гарантирует долгосрочную проверяемость за счёт включения всех необходимых сертификатов, OCSP-ответов и временных меток прямо в структуру подписи.


Источники:


2 Напиши подробный алгоритм проверки подписи Cades-XLT1. Считается, что сертификат подписанта и сертификат OSCP просрочены, а только сертификат TSP не просрочен. Кроме текстового описания приведи алгоритм в формате mermaid markdown.

🛡️ Подробный алгоритм проверки подписи CAdES-XLT1 (при просроченных сертификатах подписанта и OCSP, но действующем сертификате TSP)

Кратко:
Для проверки CAdES-XLT1, когда сертификаты подписанта и OCSP уже просрочены, а сертификат TSP (Timestamp Authority) действителен, все проверки валидности (кроме TSP) выполняются на момент времени, зафиксированный в метке времени (TST). Критически важно, чтобы сертификат TSP был действителен и доверен на момент проверки.


📋 Подробный текстовый алгоритм

  1. Извлечение компонентов подписи

    • Извлеките из контейнера CAdES-XLT1: подписанные данные, подпись, сертификаты, OCSP/CRL-ответы, метки времени (TST), все валидационные данные.
  2. Проверка структуры и целостности

    • Убедитесь, что присутствуют все обязательные атрибуты: certificate-values, revocation-values, time-stamp tokens и др.
    • Проверьте криптографическую целостность подписи.
  3. Проверка метки времени (TST)

    • Извлеките TST и проверьте её подпись с помощью сертификата TSP.
    • Убедитесь, что сертификат TSP:
      • Действителен и не отозван на текущий момент.
      • Доверен (входит в доверенное хранилище).
  4. Определение контрольного времени

    • Зафиксируйте время из TST — это "контрольное время" для всех последующих проверок.
  5. Проверка сертификата подписанта

    • Проверьте, что сертификат подписанта был действителен (не просрочен и не отозван) на момент TST.
    • Используйте вложенные OCSP/CRL-ответы для проверки статуса на момент TST.
  6. Проверка OCSP-ответа

    • Проверьте, что OCSP-ответ был действителен на момент TST.
    • Проверьте подпись OCSP-ответа с помощью сертификата OCSP-респондера.
  7. Проверка сертификата OCSP-респондера

    • Проверьте, что сертификат OCSP-респондера был действителен (не просрочен и не отозван) на момент TST.
  8. Проверка цепочек сертификатов

    • Постройте и проверьте цепочки доверия для подписанта и OCSP-респондера на момент TST.
  9. Финальное решение

    • Если все проверки успешны, подпись считается действительной на момент времени, зафиксированный в TST, несмотря на то, что сертификаты подписанта и OCSP-респондера сейчас просрочены.
    • Если сертификат TSP недействителен или не доверен — подпись недействительна.

🗂️ Таблица ключевых шагов и статусов

Шаг проверки Сертификат/Токен Время проверки Ожидаемый статус
Проверка сертификата TSP Сертификат TSP Текущее время Действителен и доверен
Проверка сертификата подписанта Сертификат подписанта Время TST Действителен на момент TST (может быть просрочен сейчас)
Проверка OCSP-ответа OCSP-ответ Время TST Действителен на момент TST (может быть просрочен сейчас)
Проверка сертификата OCSP-респондера Сертификат OCSP-респондера Время TST Действителен на момент TST (может быть просрочен сейчас)
Проверка целостности и атрибутов Подпись, атрибуты N/A Все проверки пройдены

🖇️ Mermaid-диаграмма алгоритма

flowchart TD
    A["Старт: Извлечь компоненты CAdES-XLT1"] --> B["Проверить структуру и целостность"]
    B --> C["Извлечь и проверить метку времени (TST)"]
    C --> D{"Сертификат TSP действителен/доверен сейчас?"}
    D -- Нет --> Z["Подпись НЕДЕЙСТВИТЕЛЬНА"]
    D -- Да --> E["Получить время из TST"]
    E --> F["Проверить сертификат подписанта на момент TST"]
    F --> G{"Сертификат подписанта действителен на TST?"}
    G -- Нет --> Z
    G -- Да --> H["Проверить OCSP-ответ на момент TST"]
    H --> I{"OCSP-ответ действителен на TST?"}
    I -- Нет --> Z
    I -- Да --> J["Проверить сертификат OCSP-респондера на момент TST"]
    J --> K{"Сертификат OCSP-респондера действителен на TST?"}
    K -- Нет --> Z
    K -- Да --> L["Проверить целостность и обязательные атрибуты"]
    L --> M{"Все проверки пройдены?"}
    M -- Нет --> Z
    M -- Да --> Y["Подпись ДЕЙСТВИТЕЛЬНА на момент TST"]
    Z["Подпись НЕДЕЙСТВИТЕЛЬНА"]
    Y["Подпись ДЕЙСТВИТЕЛЬНА"]
flowchart TD
    A[Старт: Извлечь компоненты CAdES-XLT1] --> B[Проверить структуру и целостность]
    B --> C[Извлечь и проверить метку времени (TST)]
    C --> D{Сертификат TSP действителен/доверен сейчас?}
    D -- Нет --> Z[Подпись НЕДЕЙСТВИТЕЛЬНА]
    D -- Да --> E[Получить время из TST]
    E --> F[Проверить сертификат подписанта на момент TST]
    F --> G{Сертификат подписанта действителен на TST?}
    G -- Нет --> Z
    G -- Да --> H[Проверить OCSP-ответ на момент TST]
    H --> I{OCSP-ответ действителен на TST?}
    I -- Нет --> Z
    I -- Да --> J[Проверить сертификат OCSP-респондера на момент TST]
    J --> K{Сертификат OCSP-респондера действителен на TST?}
    K -- Нет --> Z
    K -- Да --> L[Проверить целостность и обязательные атрибуты]
    L --> M{Все проверки пройдены?}
    M -- Нет --> Z
    M -- Да --> Y[Подпись ДЕЙСТВИТЕЛЬНА на момент TST]
    Z[Подпись НЕДЕЙСТВИТЕЛЬНА]
    Y[Подпись ДЕЙСТВИТЕЛЬНА]

Key Takeaway:
Даже если сертификаты подписанта и OCSP-респондера просрочены, подпись CAdES-XLT1 считается действительной, если они были валидны на момент метки времени, а сертификат TSP действителен и доверен на момент проверки.


📦 Итог

  • Вся логика проверки "замораживается" на момент времени, зафиксированный в TST.
  • Единственный сертификат, который должен быть действителен и доверен сейчас — это сертификат TSP.
  • Если хотя бы одна из проверок на момент TST не проходит, либо сертификат TSP недействителен — подпись считается недействительной.

Рекомендация:
Для автоматизации проверки используйте приведённую диаграмму и таблицу как чек-лист для реализации или аудита процесса валидации CAdES-XLT1.

Что такое TST и расшифровка аббревиатуры

В контексте проверки электронной подписи CAdES-XLT1, TST — это аббревиатура от Time-Stamp Token (токен метки времени).

  • Time-Stamp Token (TST) — это криптографически защищённый электронный документ, который подтверждает, что определённые данные (например, хэш подписи) существовали в конкретный момент времени.
  • TST выдается доверенным центром меток времени (TSA — Time Stamp Authority) и содержит зафиксированное время, подпись TSA и другие данные, обеспечивающие доказательство времени создания подписи.

Таким образом, TST — это метка времени, которая служит доказательством того, что подпись была создана до указанного времени и не могла быть изменена после него.


Кратко:

Аббревиатура Расшифровка Значение в CAdES-XLT1
TST Time-Stamp Token Криптографическая метка времени, подтверждающая момент создания подписи

Дополнительные пояснения

  • В отличие от других значений аббревиатуры TST (например, таможенная стоимость, тестостерон и т.п.), в криптографии и электронной подписи TST всегда означает Time-Stamp Token.
  • TST используется для обеспечения долгосрочной валидности подписи, позволяя проверять её корректность даже после истечения срока действия сертификатов подписанта и OCSP.

Если кратко, то TST — это электронный "штамп времени", который гарантирует, что подпись была сделана не позднее указанного времени и защищён от подделки.

3 CAdES-X Long Type 1 vs A

3.1 CAdES-X Long Type 1 - какой статус имеет? Вместо него какой протокол рекомендуют?

You've hit your free quota for the Smart Agent. For more usage of the Smart Agent, learn more at: https://you.com/plans.

Answering your question without the Smart Agent:

Статус CAdES-X Long Type 1 и рекомендации по протоколу

CAdES-X Long Type 1 — это расширенный формат электронной подписи, который включает в себя не только базовые данные подписи, но и полные данные для долгосрочной проверки: сертификаты, данные об отзыве (CRL, OCSP), а также метки времени (timestamps). Это позволяет проверять подпись даже спустя длительное время после её создания.


Статус CAdES-X Long Type 1

  • CAdES-X Long Type 1 является частью расширенных форматов CAdES, предназначенных для долгосрочной валидации подписи.
  • Согласно RFC 5126 и ETSI TS 101 733, данный формат обеспечивает сохранение доказательств валидности подписи, включая временные метки и полные данные о сертификатах и статусах отзыва.
  • Статус этого формата — информационный (Informational), не является официальным интернет-стандартом, а техническое сопровождение и поддержка формата ведутся ETSI . https://datatracker.ietf.org/doc/html/rfc5126
    https://www.rfc-editor.org/rfc/rfc5126

Где указан статус?

  • В RFC 5126 (CMS Advanced Electronic Signatures) прямо указано, что документ является Informational RFC, не стандартом, а технической спецификацией, основанной на ETSI TS 101 733.
  • ETSI TS 101 733 — основной технический стандарт, где описаны все профили CAdES, включая CAdES-X Long Type 1.
  • Таким образом, статус формата определяется в этих документах:

Рекомендации по протоколу вместо CAdES-X Long Type 1

  • Для долгосрочной валидации подписей и обеспечения их юридической силы рекомендуется использовать протоколы и форматы, поддерживающие расширенную валидацию и архивирование, такие как:
    • CAdES-A (Archival Electronic Signature) — формат, который добавляет архивные метки времени (archive-time-stamp), обеспечивающие защиту подписи на очень длительный срок.
    • PAdES — профиль для PDF-документов, который также поддерживает долгосрочную валидацию.
    • XAdES — профиль для XML-подписей с расширенными возможностями.
  • В частности, для защиты от компрометации ключей и обеспечения долгосрочной проверки рекомендуется использовать архивные метки времени (CAdES-A), которые считаются более современным и надёжным решением для длительного хранения подписей . https://www.cryptomathic.com/blog/introduction-into-cades-for-trust-service-providers
    https://yazilim.kamusm.gov.tr/eit-wiki/doku.php%3Fid%3Den%3Acades_x-long

Кратко:

Вопрос Ответ
Статус CAdES-X Long Type 1 Informational (информационный), не официальный интернет-стандарт (RFC 5126)
Где указан статус? В RFC 5126 и ETSI TS 101 733 (техническая спецификация ETSI)
Рекомендуемый протокол вместо Для долгосрочной валидации — CAdES-A (архивный формат с архивными метками времени)

3.2 Можно ли использовать CAdES-X Long Type 1 или он имеет замену? При упоминании CAdES-A уточняй его версию, т.к. CAdES-A версии 3 существенно отличается от первых двух.

Можно ли использовать CAdES-X Long Type 1 и есть ли у него замена?

CAdES-X Long Type 1 — это один из расширенных профилей CAdES, предназначенный для долгосрочной валидации электронной подписи. Он включает в себя полные данные для проверки (сертификаты, данные об отзыве, метки времени), что позволяет проверять подпись спустя длительное время.


Статус и использование CAdES-X Long Type 1

  • CAdES-X Long Type 1 является частью спецификации CAdES, описанной в RFC 5126 и ETSI TS 101 733.
  • RFC 5126 — это Informational RFC, то есть техническая спецификация, а не официальный интернет-стандарт. Основная поддержка и развитие формата ведутся ETSI.
  • Формат CAdES-X Long Type 1 можно использовать для долгосрочной проверки подписей, и он широко применяется в системах, где требуется доказательство валидности подписи на момент времени, зафиксированный в метках времени.
  • Однако, для ещё более надёжной и долговременной защиты подписи рекомендуется использовать формат CAdES-A (Archival Electronic Signature), который добавляет архивные метки времени (archive-time-stamp), позволяющие продлить срок валидности подписи на годы и десятилетия.

Где это указано?

  • В RFC 5126 (разделы 4.4.3.4 и 6.4) описаны форматы CAdES-X Long Type 1 и CAdES-A, а также их назначение и отличия.
  • В приложении B (Annex B) RFC 5126 подробно рассматриваются расширенные формы подписи, включая CAdES-X Long Type 1 и CAdES-A.
  • ETSI TS 101 733 — основной технический стандарт, где эти профили описаны и поддерживаются.
  • В RFC 5126 прямо указано, что CAdES-A версии 3 (последняя версия стандарта) существенно расширяет возможности по архивированию и долгосрочной валидации по сравнению с предыдущими версиями.

Резюме по замене и рекомендациям

Формат Можно использовать? Особенности и рекомендации
CAdES-X Long Type 1 Да Поддерживает долгосрочную проверку, включает полные данные для валидации, но не содержит архивных меток времени
CAdES-A (версия 3) Рекомендуется Добавляет архивные метки времени (archive-time-stamp), существенно улучшая долгосрочную защиту подписи; считается более современным и надёжным решением для архивирования

Кратко:

  • CAdES-X Long Type 1 можно использовать, он обеспечивает долгосрочную проверку подписи.
  • Для более надёжного и долговременного хранения подписи рекомендуется использовать CAdES-A версии 3, которая расширяет возможности архивирования.
  • Все эти детали и рекомендации описаны в RFC 5126 (Informational) и ETSI TS 101 733 (официальный стандарт).

my Некоторые ссылки