From 21e01fe34dcd8627d9bc059d71fdfc2b4a2935ff Mon Sep 17 00:00:00 2001 From: Dmitry <121898072+bpmbpm@users.noreply.github.com> Date: Wed, 17 Dec 2025 17:07:59 +0300 Subject: [PATCH] Update tsl_1.md --- IT/CADES/tsl_1.md | 134 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 1 deletion(-) diff --git a/IT/CADES/tsl_1.md b/IT/CADES/tsl_1.md index f04cd4bd..2cb85d0d 100644 --- a/IT/CADES/tsl_1.md +++ b/IT/CADES/tsl_1.md @@ -194,7 +194,7 @@ TSL.xml — ключевой элемент инфраструктуры эле - Программа должна проверять **подлинность** TSL (например, по электронной подписи самого TSL), а не только его структуру. - Схема XSD может обновляться; программа должна учитывать версии и поддерживать актуальные форматы. -### ## 6 Напиши алгоритм как программа проверки подписи использует файл tsl.xml по адресу https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/getxml +## 6 Напиши алгоритм как программа проверки подписи использует файл tsl.xml по адресу https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/getxml https://e-trust.gosuslugi.ru/check/sign#/portal/sig-check ## Алгоритм использования TSL.xml при проверке электронной подписи @@ -318,3 +318,135 @@ GET https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/getxml * алгоритм должен соответствовать требованиям ФЗ‑63 «Об электронной подписи»; * формат TSL должен соответствовать ETSI EN 319 162‑1. +## 7 Покажи, что все корневые сертификаты - самоподписные + +**Да, вы абсолютно правы.** Все корневые сертификаты Удостоверяющих Центров (УЦ) являются **самоподписными** (self-signed). Это фундаментальный принцип архитектуры PKI (Public Key Infrastructure). + +## 🔐 **Почему корневые сертификаты самоподписные?** + +### **1. Причина: "Курица и яйцо"** +- Чтобы проверить подпись сертификата, нужен сертификат вышестоящего УЦ +- У корневого УЦ **нет вышестоящего** центра +- Поэтому он **подписывает сам себя**, создавая точку доверия + +### **2. Технические характеристики:** +``` +Root Certificate { + Version: 3 + Serial Number: Уникальный + Signature Algorithm: ГОСТ Р 34.10-2012 + Issuer: CN=Минцифры России, O=... + Validity: Длительный срок (15-20 лет) + Subject: CN=Минцифры России, O=... (совпадает с Issuer) + Subject Public Key Info: Публичный ключ + Basic Constraints: CA=TRUE, pathlen=не ограничен + Key Usage: keyCertSign, cRLSign + Subject Key Identifier: [хеш] + Authority Key Identifier: [тот же хеш] ← САМОподпись! + Signature: Подписано собственным приватным ключом +} +``` + +## 🌳 **Пример из анализируемой подписи:** + +### **Корневой сертификат Минцифры России:** +- **Issuer:** `CN=Минцифры России, O=Министерство цифрового развития..., C=RU` +- **Subject:** `CN=Минцифры России, O=Министерство цифрового развития..., C=RU` +- **Поля совпадают** - это самоподписанный сертификат +- **Подпись** создана приватным ключом Минцифры + +## 🔄 **Иерархия доверия:** + +``` +┌─────────────────────────────┐ +│ Самоподписной Корневой УЦ │ ← Доверенный якорь +│ (Минцифры России) │ (предустановлен в ОС) +└──────────────┬──────────────┘ + ↓ (подписывает) +┌─────────────────────────────┐ +│ Промежуточный УЦ │ ← Аккредитованный УЦ +│ (АО "СКБ Контур") │ (проверяется через OCSP/CRL) +└──────────────┬──────────────┘ + ↓ (подписывает) +┌─────────────────────────────┐ +│ Сертификат конечного │ ← Сертификат пользователя +│ пользователя │ (проверяется через OCSP/CRL) +│ (Иванова Л.А.) │ +└─────────────────────────────┘ +``` + +## 🎯 **Ключевые отличия самоподписных сертификатов:** + +| Параметр | Самоподписной (Корневой) | Промежуточный/Конечный | +|----------|--------------------------|------------------------| +| **Issuer** | = Subject | ≠ Subject | +| **Проверка подписи** | Не проверяется | Проверяется цепочкой | +| **Доверие** | Предустановлено | Наследуется от корня | +| **Статус** | Не проверяется OCSP/CRL | Проверяется обязательно | +| **Срок** | 15-20+ лет | 1-3 года | + +## ⚠️ **Важные нюансы:** + +### **1. "Доверенность" корневого сертификата:** +- **Технически:** любой может создать самоподписной сертификат +- **Юридически:** доверенным считается только сертификат, включенный в: + - Реестр Минцифры РФ (для России) + - Trust Store операционной системы + - Список доверенных УЦ браузера + +### **2. Отличие от "self-signed certificate" в вебе:** +В контексте веб-серверов: +- **Self-signed** = недоверенный, вызывает ошибки браузера +- **Root CA** = доверенный, предустановлен в ОС + +В контексте ЭП в РФ: +- **Самоподписной УЦ** = доверенный корень (Минцифры) + +### **3. Проверка корневого сертификата:** +Хотя подпись не проверяется, есть другие проверки: +``` +1. Хеш сертификата должен совпадать с предустановленным +2. Срок действия должен быть действителен +3. OID и политики должны соответствовать требованиям +4. Ключевое использование: keyCertSign = TRUE +``` + +## 📋 **Как это работает на практике:** + +### **В вашей подписи:** +1. **Корень:** Минцифры России (самоподписной, доверенный) +2. **Промежуточный:** АО "СКБ Контур" (подписан корнем) +3. **Конечный:** Иванова Л.А. (подписан промежуточным) + +### **Проверка цепочки:** +```python +# Псевдокод проверки +def verify_chain(cert, chain): + root = get_trusted_root() # Предустановленный корень + + # Проверяем снизу вверх + for cert in reversed(chain): + if cert.is_self_signed(): # Дошли до корня + if cert == root: # Совпадает с доверенным? + return True + else: + return False # Неизвестный корень! + + # Проверяем подпись сертификата + issuer_cert = find_issuer(cert, chain) + if not verify_signature(cert, issuer_cert): + return False + + return True +``` + +## 🎓 **Ответ на ваш вопрос:** + +**Да, верно.** Все корневые сертификаты являются самоподписными. Но критически важно понимать: + +1. **Не каждый самоподписной сертификат** является доверенным корнем +2. **Доверие возникает** только при включении в реестры/хранилища +3. **В PKI России** доверенным корнем является сертификат Минцифры +4. **Статус корня** не проверяется через OCSP/CRL, но проверяется его соответствие предустановленному + +Это создает иерархическую систему доверия, где **корень — это якорь**, от которого распространяется доверие ко всем нижестоящим сертификатам через механизмы подписания и проверки.