Конфиденциальность
В Novij Protocol прикладная нагрузка шифруется, а записи подписываются на клиенте до отправки в сеть. Контейнер .ntp хранит зашифрованный baseline для детерминированного получения ключевого материала; сырые PQ-приватные ключи не передаются Relay или Storage. Узлы проверяют протокольные доказательства и биллинг, а расшифровку содержимого выполняет клиент.
Разделение Relay и Storage
Relay может использовать PostgreSQL для ledger и производных проекций, но не хранит открытый прикладной payload. Relay привязывает block_id к кошельку, а Storage хранит ciphertext бинарных блоков Protocol v3 в append-only файлах — без расшифровки содержимого на стороне узла.
Сетевая роль не даёт доступа к содержимому: ключи расшифровки остаются у владельца и допущенных участников.
Подписанные записи и явный криптопрофиль
Каждая запись подписывается ML-DSA-65: подпись покрывает Entry Header, Entry Data и полные Entry Metadata. Неизвестные алгоритмы отклоняются до использования данных. Транспорт к Storage и Relay использует явные поля crypto_profile и auth.kind — без эвристик по длине подписи.
Защита структуры данных
- Подпись автора покрывает header, data и полные metadata после канонической сериализации
- Защита от replay использует entry_hash и клиентскую дедупликацию; timestamp в header также подписан
- Ключ записи для группы доставляется отдельно каждому получателю через ML-KEM + AES-GCM wrap в Metadata v0x02
- Неизвестный алгоритм, неверная подпись или повреждённая metadata отклоняются до использования данных
Шифрование и локальное хранение
- Единый криптопрофиль ntp-pq-v1: ML-DSA-65, ML-KEM-768, AES-256-GCM, HKDF-SHA-256
- Хранение в файлах блоков Protocol v3 (append-only), а не в SQL или key-value хранилищах
- Storage не видит поля и значения внутри блоков без ключа записи
- Мульти-доступ через группы с отдельной защищённой доставкой ключа записи каждому участнику
- Приватный ключ ZK-купона остаётся у владельца и не хранится на Relay или Storage
Ключи и доступ контролирует владелец
Владелец кошелька и личного meta-block управляет проектами и выдачей доступа. DSR делегирует только явно разрешённые операции и лимиты, а ZK-купон отдельно авторизует оплачиваемое хранение — приватный ключ кошелька не передаётся Relay. Настройки модулей и durable state хранятся в зашифрованном meta-слое.