Privacy

In Novij Protocol, application payloads are encrypted and entries are signed on the client before they reach the network. The .ntp container stores an encrypted baseline used to derive key material deterministically; raw PQ private keys are never sent to Relay or Storage. Nodes verify protocol proofs and billing, while content decryption stays on the client.

Data privacy in Novij Protocol: zero trust, ntp-pq-v1, Protocol v3

Principles

Separation of Relay and Storage

Relay may use PostgreSQL for the ledger and derived projections, but it does not hold plaintext application payloads. Relay binds block_id to a wallet, while Storage keeps the ciphertext of Protocol v3 binary blocks in append-only files without decrypting content on the node.

A network role does not grant content access: decryption keys remain with the owner and authorised participants.

Signed entries and an explicit crypto profile

Every entry is signed with ML-DSA-65: the signature covers Entry Header, Entry Data, and full Entry Metadata. Unknown algorithms are rejected before data is used. Transport to Storage and Relay uses explicit crypto_profile and auth.kind fields — not heuristics based on signature length.

Protecting data structure

  • The author signature covers the header, data, and full metadata after canonical serialisation
  • Replay protection uses entry_hash and client-side deduplication; the timestamp in the header is signed as well
  • A group entry key is delivered separately to each recipient via ML-KEM plus an AES-GCM wrap in Metadata v0x02
  • Unknown algorithms, invalid signatures, or damaged metadata are rejected before data is used

Encryption and local storage

  • Single crypto profile ntp-pq-v1: ML-DSA-65, ML-KEM-768, AES-256-GCM, HKDF-SHA-256
  • Storage in Protocol v3 block files (append-only), not SQL or key-value stores
  • Storage cannot see fields or values inside blocks without the entry key
  • Multi-party access through groups with protected per-recipient delivery of the entry key
  • The ZK coupon private key stays with its owner and is not stored on Relay or Storage

The owner controls keys and access

The wallet and personal meta-block owner manages projects and grants access. DSR delegates only explicit operations and limits, while a ZK coupon separately authorises paid storage — the wallet private key is not sent to Relay. Module settings and durable state live in the encrypted meta layer.