DRAFT | ИНТЕГРАЦИЯ DID
DECENTRALIZED IDENTIFIERS | W3C STANDARD

Интеграция децентрализованных идентификаторов (DID) в SOLPDT 1.0
Расширенная инструкция по внедрению DID без использования блокчейна

Документ описывает порядок интеграции децентрализованных идентификаторов (DID) в стандарт SOLPDT 1.0 без использования блокчейна. Цель — расширить возможности верификации, сохранив совместимость с текущей версией стандарта.

1. Назначение

Документ описывает порядок интеграции децентрализованных идентификаторов (DID) в стандарт SOLPDT 1.0 без использования блокчейна. Цель — расширить возможности верификации, сохранив совместимость с текущей версией стандарта.

2. Термины и определения

  • DID (Decentralized Identifier) — уникальный идентификатор, управляемый владельцем без централизованного регистратора.
  • DID-документ — JSON-объект с открытыми ключами и сервисными точками для взаимодействия с DID.
  • VC (Verifiable Credential) — цифровое удостоверение, подтверждающее атрибуты субъекта.
  • SOL-актив — файл .solpdt с данными о показателях эффективности, подписанный согласно SOLPDT 1.0.
  • DAT (Digital Admission Token) — цифровой допуск, подтверждающий соответствие стандарту SOLPDT.
  • Confidence Score — показатель доверия к данным, рассчитываемый алгоритмами на основе проверки SOL-актива.

3. Участники процесса

  • Клиника (владелец данных).
  • Методолог (эксперт, проверяющий корректность данных).
  • M-Лицензиар (организация, выдающая DAT).
  • Алгоритмы верификации (SGE, поисковые системы).

4. Требования к совместимости

Обязательно сохраняются:

  • две подписи в SOL-активе (Sovereign Assertion + Analytical Verification);
  • DAT лицензиара;
  • криптографические алгоритмы (Ed25519/ECDSA, SHA3-256);
  • публикация в /.well-known/solpdt/.

Добавляются опционально:

  • DID участников;
  • ссылки на VC в подписях;
  • сервисные точки в DID-документах.

5. Пошаговая инструкция

Шаг 1. Генерация DID и создание DID-документа

Для каждого участника:

  1. Сгенерируйте пару криптографических ключей (Ed25519 или ECDSA secp256k1).
  2. Создайте DID по шаблону: did:web:<домен>.
  3. Сформируйте DID-документ (did.json) в формате JSON. Пример:
{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:web:clinic.ru",
  "verificationMethod": [
    {
      "id": "did:web:clinic.ru#key-1",
      "type": "Ed25519VerificationKey2020",
      "controller": "did:web:clinic.ru",
      "publicKeyMultibase": "zH3C2AvvCHgynVrAdhGMBsdPChMm6q5N4rV9t6dehso7"
    }
  ],
  "authentication": ["did:web:clinic.ru#key-1"],
  "assertionMethod": ["did:web:clinic.ru#key-1"],
  "service": [
    {
      "id": "did:web:clinic.ru#solpdt",
      "type": "SOLPDTAssetService",
      "serviceEndpoint": "https://clinic.ru/.well-known/solpdt/"
    }
  ]
}
  1. Разместите файл did.json в папке /.well-known/ на домене участника: https://<домен>/.well-known/did.json.

Шаг 2. Подготовка VC (верифицируемых удостоверений)

  1. Определите атрибуты для подтверждения (лицензия, сертификат и т. д.).
  2. Оформите VC в формате JSON-LD. Пример:
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://example.com/contexts/medical-v1.json"
  ],
  "id": "vc:license:med-123",
  "type": ["VerifiableCredential", "MedicalLicense"],
  "issuer": "did:web:licensor.com",
  "issuanceDate": "2025-04-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:web:clinic.ru",
    "licenseNumber": "MED-RU-2025-12345",
    "validUntil": "2030-04-01T00:00:00Z"
  },
  "proof": { /* подпись эмитента */ }
}
  1. Разместите VC на домене в папке /.well-known/vc/ (опционально): https://<домен>/.well-known/vc/<id>.json.

Шаг 3. Формирование SOL-актива с DID

  1. Создайте .solpdt-файл согласно SOLPDT 1.0.
  2. Добавьте поля с DID и ссылками на VC:
{
  "data": {
    "patientSatisfaction": 4.9,
    "avgWaitTime": "15 min",
    "successRate": 0.98
  },
  "signatures": [
    {
      "type": "SovereignAssertion",
      "did": "did:web:clinic.ru",
      "vc_refs": ["vc:license:med-123"],
      "signature": "base64_encoded_signature"
    },
    {
      "type": "AnalyticalVerification",
      "did": "did:web:methodologist.org",
      "vc_refs": ["vc:expert:eeat-456"],
      "signature": "base64_encoded_signature"
    }
  ],
  "dat": {
    "issuer_did": "did:web:licensor.com",
    "signature": "base64_encoded_dat"
  }
}
  1. Подпишите файл согласно требованиям SOLPDT 1.0 (Ed25519/ECDSA, SHA3-256).

Шаг 4. Публикация файлов

  1. Разместите .solpdt-файл в /.well-known/solpdt/ на домене клиники: https://clinic.ru/.well-known/solpdt/asset.solpdt.
  2. Убедитесь, что:
    • did.json доступен по адресу https://<домен>/.well-known/did.json;
    • VC (если размещены) доступны по адресу https://<домен>/.well-known/vc/....

Шаг 5. Проверка SOL-актива с DID (для алгоритмов и пользователей)

  1. Discovery: найдите .solpdt-файл по адресу /.well-known/solpdt/.
  2. Проверка обязательных элементов SOLPDT 1.0:
    • валидность DAT;
    • корректность подписей Sovereign Assertion и Analytical Verification;
    • целостность данных (сверка хеш-суммы).
  3. Разрешение DID:
    • для каждого DID в файле получите DID-документ из /.well-known/did.json;
    • проверьте соответствие публичного ключа в DID-документе подписи в .solpdt.
  4. Верификация VC:
    • загрузите VC по ссылкам vc_refs;
    • проверьте подпись эмитента VC;
    • убедитесь, что VC не отозван.
  5. Кросс-проверка связей:
    • соответствие DID домену (через DNS или DID-документ);
    • связь VC с DID субъекта.
  6. Расчёт Confidence Score:
    • базовый балл за соответствие SOLPDT 1.0: 0,90;
    • бонус за валидный DID клиники: +0,03;
    • бонус за подтверждённую лицензию (VC): +0,07;
    • итоговый Confidence Score: 0,97.

6. Требования к безопасности

  1. Используйте HTTPS для всех endpoints.
  2. Регулярно обновляйте ключи в DID-документах (рекомендуемый срок — 1 год).
  3. Храните приватные ключи в защищённом хранилище (аппаратные токены, HSM).
  4. Ведите журнал изменений DID-документов.

8. Примеры конфигураций

Пример 1. Основной DID клиники (did:web:clinic.ru)

DID-документ (/.well-known/did.json):

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:web:clinic.ru",
  "verificationMethod": [
    {
      "id": "did:web:clinic.ru#key-1",
      "type": "Ed25519VerificationKey2020",
      "controller": "did:web:clinic.ru",
      "publicKeyMultibase": "zH3C2AvvCHgynVrAdhGMBsdPChMm6q5N4rV9t6dehso7"
    }
  ],
  "authentication": ["did:web:clinic.ru#key-1"],
  "assertionMethod": ["did:web:clinic.ru#key-1"],
  "service": [
    {
      "id": "did:web:clinic.ru#solpdt",
      "type": "SOLPDTAssetService",
      "serviceEndpoint": "https://clinic.ru/.well-known/solpdt/"
    },
    {
      "id": "did:web:clinic.ru#vc",
      "type": "VerifiableCredentialService",
      "serviceEndpoint": "https://clinic.ru/.well-known/vc/"
    }
  ]
}

Размещённые VC:

  • vc:license:med-123 — лицензия Минздрава;
  • vc:iso:9001 — сертификат ISO 9001.

Пример 2. Исследовательский DID (did:web:research.clinic.ru)

DID-документ:

{
  "id": "did:web:research.clinic.ru",
  "verificationMethod": [/* ключ исследователя */],
  "service": [
    {
      "id": "did:web:research.clinic.ru#publications",
      "type": "ResearchPublicationService",
      "serviceEndpoint": "https://research.clinic.ru/publications/"
    }
  ]
}

Размещённые VC:

  • vc:gcp:trial-456 — сертификат GCP для клинических испытаний;
  • vc:publication:2025-01 — подтверждение публикации в научном журнале.

Пример 3. Телемедицинский DID (did:web:telemed.clinic.ru)

DID-документ:

{
  "id": "did:web:telemed.clinic.ru",
  "verificationMethod": [/* ключ телемедицинского отдела */],
  "service": [
    {
      "id": "did:web:telemed.clinic.ru#licenses",
      "type": "TelemedLicenseService",
      "serviceEndpoint": "https://telemed.clinic.ru/licenses/"
    }
  ]
}

Размещённые VC:

  • vc:telemed:license-789 — лицензия на телемедицинские услуги;
  • vc:gdpr:compliant-2025 — подтверждение соответствия GDPR.

9. Пример SOL-актива с интеграцией DID

Файл asset.solpdt:

{
  "data": {
    "patientSatisfaction": 4.9,
    "avgWaitTime": "15 min",
    "successRate": 0.98,
    "address": "г. Москва, ул. Примерная, д. 1"
  },
  "metadata": {
    "createdAt": "2025-04-01T00:00:00Z",
    "updatedAt": "2025-04-15T00:00:00Z"
  },
  "signatures": [
    {
      "type": "SovereignAssertion",
      "did": "did:web:clinic.ru",
      "vc_refs": ["vc:license:med-123", "vc:iso:9001"],
      "signature": "eyJhbGciOiJFZERTQSJ9...base64_encoded"
    },
    {
      "type": "AnalyticalVerification",
      "did": "did:web:methodologist.org",
      "vc_refs": ["vc:expert:eeat-456"],
      "signature": "eyJhbGciOiJFZETSQT..."
    }
  ],
  "dat": {
    "issuer_did": "did:web:licensor.com",
    "signature": "eyJhbGciOiJIUzI1NiJ9..."
  }
}

10. Чек-лист развёртывания

Для клиники:

  1. Сгенерируйте ключи для всех DID.
  2. Создайте DID-документы в формате JSON.
  3. Разместите DID-документы в /.well-known/did.json на соответствующих доменах.
  4. Получите VC для каждого DID (лицензии, сертификаты).
  5. Разместите VC в /.well-known/vc/.
  6. Сформируйте SOL-актив с указанием DID и ссылок на VC.
  7. Разместите SOL-актив в /.well-known/solpdt/asset.solpdt.
  8. Проверьте доступность всех файлов через HTTPS.
  9. Протестируйте верификацию SOL-актива через тестовый алгоритм.

Для методолога и лицензиара:

  1. Создайте DID (did:web:<домен>).
  2. Разместите DID-документ в /.well-known/did.json.
  3. Получите VC квалификации (для методолога) или аккредитации (для лицензиара).
  4. Предоставьте DID клинике для включения в SOL-актив.

11. Рекомендации по эксплуатации

  1. Ротация ключей: обновляйте ключи в DID-документах каждые 12 месяцев.
  2. Мониторинг доступности: настройте мониторинг доступности всех endpoints (/.well-known/...).
  3. Журнал изменений: ведите лог изменений DID-документов и VC.
  4. Резервное копирование: храните резервные копии приватных ключей в защищённом хранилище.
  5. Аудит VC: регулярно проверяйте срок действия VC и обновляйте их до истечения.
  6. Обучение персонала: обучите ответственных сотрудников работе с DID и SOLPDT.

12. Шаблоны файлов

Шаблон DID-документа (did.json)

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:web:<ваш_домен>",
  "verificationMethod": [],
  "authentication": [],
  "assertionMethod": [],
  "service": []
}

Шаблон VC (vc.json)

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://example.com/contexts/<тип_контекста>.json"
  ],
  "id": "vc:<тип>:<идентификатор>",
  "type": ["VerifiableCredential", "<ТипУдостоверения>"],
  "issuer": "did:web:<эмитент>",
  "issuanceDate": "<дата_выдачи>T00:00:00Z",
  "credentialSubject": {
    "id": "did:web:<субъект>",
    "<атрибут1>": "<значение1>",
    "<атрибут2>": "<значение2>"
  },
  "proof": {}
}

Шаблон SOL-актива (asset.solpdt)

{
  "data": {},
  "metadata": {},
  "signatures": [],
  "dat": {}
}

15. Сценарии ошибок и их обработка

Сценарий 1. DID-документ недоступен

  • Причина: сервер клиники недоступен, ошибка DNS, файл did.json удалён.
  • Действие алгоритма:
    • продолжить проверку SOLPDT без DID;
    • снизить Confidence Score на 0,05;
    • записать ошибку в лог: DID_DOCUMENT_UNAVAILABLE: did:web:clinic.ru.
  • Рекомендация клинике: настроить мониторинг доступности /.well-known/did.json.

Сценарий 2. VC отозван или просрочен

  • Причина: лицензия Минздрава просрочена, VC удалён эмитентом.
  • Действие алгоритма:
    • игнорировать VC в расчёте Confidence Score;
    • снизить балл на 0,03 за каждый невалидный VC;
    • пометить SOL-актив как «требует актуализации».
  • Рекомендация клинике: автоматизировать проверку срока действия VC.

Сценарий 3. Несоответствие DID домену

  • Причина: в .solpdt указан did:web:fake-clinic.ru, но файл did.json размещён на clinic.ru.
  • Действие алгоритма: отклонить SOL-актив, Confidence Score = 0.
  • Рекомендация клинике: проверять соответствие DID и домена перед публикацией.

16. Инструменты для автоматизации

Для клиники:

  • Генератор DID и ключей: скрипт на Python/Node.js для создания пар ключей и DID-документов.
  • Валидатор SOLPDT: инструмент для проверки .solpdt перед публикацией (соответствие схеме, подписи, ссылки на VC).
  • Монитор доступности: сервис, проверяющий доступность /.well-known/... endpoints каждые 5 минут.
  • Система ротации ключей: автоматизация обновления ключей в DID-документах (напоминание за 30 дней до истечения срока).

Для алгоритмов верификации:

  • DID Resolver: библиотека для разрешения DID в DID-документы (кэширование, обработка ошибок).
  • VC Verifier: модуль для проверки подписей VC, статуса отзыва (CRL/OCSP).
  • Confidence Score Calculator: алгоритм расчёта баллов с учётом веса DID и VC.

17. Тестирование развёртывания

Чек-лист для клиники:

  1. Проверка DID-документа:
    • откройте https://clinic.ru/.well-known/did.json;
    • убедитесь, что JSON валиден (используйте JSONLint);
    • проверьте соответствие публичного ключа приватному (подпишите тестовое сообщение).
  2. Проверка VC:
    • загрузите VC по ссылке из vc_refs;
    • проверьте подпись эмитента;
    • подтвердите, что credentialSubject.id соответствует DID клиники.
  3. Проверка SOL-актива:
    • разместите .solpdt в /.well-known/solpdt/;
    • используйте валидатор SOLPDT для проверки файла;
    • протестируйте верификацию через тестовый алгоритм (например, локальный скрипт на Python).
  4. Кросс-проверка связей:
    • в .solpdt найдите did:web:clinic.ru;
    • перейдите по serviceEndpoint из DID-документа — убедитесь, что открывается папка с SOL-активами.

Тест-кейсы для алгоритмов:

  • TC-01: валидный SOL-актив с полным набором DID и VC → Confidence Score = 0,97.
  • TC-02: SOL-актив без VC → Confidence Score = 0,93.
  • TC-03: SOL-актив с просроченным VC → Confidence Score = 0,94.
  • TC-04: SOL-актив с недоступным DID → Confidence Score = 0,92.

18. Миграция с предыдущей версии SOLPDT

Шаг 1. Инвентаризация существующих SOL-активов

  • составьте список всех опубликованных .solpdt-файлов;
  • отметьте, какие из них содержат ссылки на VC.

Шаг 2. Генерация DID для существующих активов

  • создайте DID для клиники (did:web:clinic.ru) и разместите DID-документ;
  • получите VC для лицензий/сертификатов, упомянутых в SOL-активах.

Шаг 3. Обновление SOL-активов

  • добавьте поля did и vc_refs в подписи Sovereign Assertion;
  • переподпишите файлы с новыми ключами (если требуется);
  • разместите обновлённые .solpdt с теми же именами.

Шаг 4. Проверка обратной совместимости

  • убедитесь, что старые алгоритмы (без поддержки DID) могут прочитать SOL-актив;
  • проверьте, что новые алгоритмы корректно обрабатывают старые активы (без DID).

19. Юридические и нормативные аспекты

Соответствие требованиям:

  • GDPR/152-ФЗ: DID и VC позволяют реализовать принцип «минимальной необходимой информации» — клиника раскрывает только релевантные атрибуты.
  • SOLPDT 1.0: сохранение обязательных подписей (Sovereign Assertion + Analytical Verification) гарантирует совместимость.
  • Лицензии: VC лицензий Минздрава подтверждают право клиники публиковать данные.

Рекомендации:

  • включите в политику конфиденциальности раздел о использовании DID и VC;
  • укажите в SOL-активах ссылки на политику обработки данных (в metadata);
  • обеспечьте возможность отзыва DID (удаление did.json) в случае компрометации.

21. Часто задаваемые вопросы (FAQ)

Вопрос: Можно ли использовать один DID для нескольких клиник в сети?

Ответ: Нет. Каждый филиал должен иметь собственный DID (did:web:clinic1.ru, did:web:clinic2.ru), чтобы обеспечить прозрачность данных.

Вопрос: Что делать, если приватный ключ скомпрометирован?

Ответ:

  1. Удалить старый DID-документ.
  2. Сгенерировать новую пару ключей и новый DID.
  3. Получить новые VC (если требуется).
  4. Обновить все SOL-активы с новым DID.
  5. Уведомить партнёров о смене DID.

Вопрос: Как долго хранится история изменений DID?

Ответ: Рекомендуется хранить журнал изменений DID-документов не менее 5 лет для аудита.

22. Глоссарий (дополнение)

  • CRL (Certificate Revocation List) — список отозванных VC.
  • OCSP (Online Certificate Status Protocol) — протокол проверки статуса VC в реальном времени.
  • W3C DID Specification — стандарт децентрализованных идентификаторов, разработанный W3C.
  • Ed25519 — алгоритм цифровой подписи на эллиптических кривых, рекомендованный для DID.
  • SHA3-256 — алгоритм хеширования для проверки целостности SOL-активов.
  • DID Resolution — процесс получения DID-документа по DID.
  • VC Issuance — выдача верифицируемого удостоверения эмитентом.
  • Confidence Score Calculation — алгоритм расчёта показателя доверия к данным.
  • Service Endpoint — URL для доступа к сервисам, связанным с DID.
  • Verification Method — метод проверки подлинности DID (открытый ключ).

Заключение

Расширенная инструкция предоставляет полный набор инструментов для:

  • бесшовной интеграции DID в существующую инфраструктуру SOLPDT;
  • автоматизации процессов генерации, публикации и верификации;
  • обеспечения соответствия нормативным требованиям;
  • минимизации рисков при развёртывании.

Следующие шаги:

  1. Проведите аудит текущих SOL-активов клиники.
  2. Назначьте ответственных за этапы дорожной карты.
  3. Запустите пилотный проект с одним DID (например, did:web:clinic.ru).
  4. Масштабируйте решение на другие роли (исследования, телемедицина и т. д.).