| 1 | ## TPM-узел: формат манифеста (draft v1) |
| 2 | |
| 3 | > Черновик для будущих реальных TPM-узлов. Не использовать как настоящий манифест; конкретные значения и подписи определяются при запуске узла. |
| 4 | |
| 5 | ### 1. Назначение |
| 6 | |
| 7 | Манифест TPM-узла описывает: |
| 8 | |
| 9 | - какие версии `integrity-core` считаются валидными; |
| 10 | - какими ключами и как они подписаны; |
| 11 | - где находится эталонная копия KB/kb-public; |
| 12 | - как обрабатываются отзыв (revocation) и форки. |
| 13 | |
| 14 | Любая среда, реализующая Integrity POST с опорой на TPM-узел, может использовать этот формат для автоматической проверки. |
| 15 | |
| 16 | ### 2. Структура (JSON / YAML) |
| 17 | |
| 18 | Минимальный набор полей (пример в JSON-псевдоформате): |
| 19 | |
| 20 | ```json |
| 21 | { |
| 22 | "tpm_node_id": "gitlab-kb-root-1", |
| 23 | "version": "1", |
| 24 | "issuer": { |
| 25 | "name": "Krawler Integrity Root", |
| 26 | "organization": "Krawler", |
| 27 | "contact": "security@example.org" |
| 28 | }, |
| 29 | "keys": [ |
| 30 | { |
| 31 | "key_id": "primary-signing-key-2026", |
| 32 | "algorithm": "ed25519", |
| 33 | "public_key": "<BASE64_OR_PEM>", |
| 34 | "created_at": "2026-03-01T00:00:00Z", |
| 35 | "expires_at": "2028-03-01T00:00:00Z", |
| 36 | "usage": ["sign-core", "sign-manifest"] |
| 37 | } |
| 38 | ], |
| 39 | "integrity_core_versions": [ |
| 40 | { |
| 41 | "id": "integrity-core-v1.0.0", |
| 42 | "path": "knowledge/META/integrity-core.md", |
| 43 | "sha256": "<HEX_DIGEST>", |
| 44 | "signed_at": "2026-03-01T00:00:00Z", |
| 45 | "signatures": [ |
| 46 | { |
| 47 | "key_id": "primary-signing-key-2026", |
| 48 | "signature": "<BASE64_SIGNATURE>" |
| 49 | } |
| 50 | ], |
| 51 | "status": "active" // active | deprecated | revoked |
| 52 | } |
| 53 | ], |
| 54 | "kb_public_reference": { |
| 55 | "repo_url": "https://gitlab.example.org/Krawler/kb-public", |
| 56 | "default_branch": "main", |
| 57 | "commit": "<COMMIT_SHA>", |
| 58 | "paths": [ |
| 59 | "knowledge/**", |
| 60 | "META/integrity-core.md", |
| 61 | "META/integrity-post-spec-v1.md" |
| 62 | ] |
| 63 | }, |
| 64 | "revocation": { |
| 65 | "policy_url": "https://gitlab.example.org/Krawler/kb-public/-/wikis/Integrity-Revocation-Policy", |
| 66 | "revoked_cores": [ |
| 67 | { |
| 68 | "id": "integrity-core-v0.9.0", |
| 69 | "reason": "experimental-only", |
| 70 | "revoked_at": "2026-03-01T00:00:00Z" |
| 71 | } |
| 72 | ] |
| 73 | }, |
| 74 | "federation": { |
| 75 | "related_nodes": [ |
| 76 | { |
| 77 | "tpm_node_id": "gitlab-kb-root-2", |
| 78 | "relationship": "peer" |
| 79 | } |
| 80 | ], |
| 81 | "quorum_rule": "2-of-3" // пример: какие комбинации узлов считаются достаточными для доверия |
| 82 | }, |
| 83 | "meta": { |
| 84 | "created_at": "2026-03-01T00:00:00Z", |
| 85 | "updated_at": "2026-03-01T00:00:00Z", |
| 86 | "schema_version": "1" |
| 87 | } |
| 88 | } |
| 89 | ``` |
| 90 | |
| 91 | ### 3. Как это может использоваться |
| 92 | |
| 93 | - **Проверка integrity-core:** среда сравнивает текущий `integrity-core.md` по пути `knowledge/META/integrity-core.md` с `sha256` и `id` из манифеста; проверяет подпись `signatures` по `public_key`. |
| 94 | - **Проверка статуса:** если статус `revoked` или `deprecated`, среда может: |
| 95 | - при `revoked` — отказаться использовать это ядро и вернуться к Minimal Safe Default; |
| 96 | - при `deprecated` — предупредить и рекомендовать обновление. |
| 97 | - **Федерация:** если настроено несколько TPM-узлов, среда может требовать подтверждения от N из M манифестов (например, 2-of-3) для принятия версий `integrity_core_versions`. |
| 98 | |
| 99 | ### 4. Ограничения и статус |
| 100 | |
| 101 | - Этот файл — **черновик**; реальный TPM-узел должен опубликовать свой конкретный манифест и ключи. |
| 102 | - До появления реальных узлов и подписанных манифестов архитектура Integrity POST остаётся в режиме prototyping (см. раздел 7 в `integrity-post-spec-v1.md`). |
| 103 | |
| 104 | --- |
| 105 | |
| 106 | ## Metadata (routing) |
| 107 | |
| 108 | - **status:** draft — не использовать как операционный манифест. |
| 109 | - **layer:** META / reference only. |
| 110 | - **transfer_boundary:** при любом запросе по TPM/федерации указывать Transition Mode (`integrity-post-spec-v1.md` §7); не заявлять TPM-совместимость до появления реального узла и подписанного манифеста. |
| 111 | |
| 112 | |
| 113 | |