mirror of
https://github.com/bpmbpm/doc.git
synced 2026-05-20 09:24:55 +00:00
Update tsl_1.md
This commit is contained in:
parent
b18b54eb31
commit
21e01fe34d
1 changed files with 133 additions and 1 deletions
|
|
@ -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, но проверяется его соответствие предустановленному
|
||||
|
||||
Это создает иерархическую систему доверия, где **корень — это якорь**, от которого распространяется доверие ко всем нижестоящим сертификатам через механизмы подписания и проверки.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue