This chapter defines persona storage, logical portability, encrypted-at-rest behavior, and optional encrypted-vault portability.
Encrypted Storage defines how personal data is protected and made portable across implementations.
A Dina-compatible storage system MUST provide:
The protocol persona tiers are:
defaultstandardsensitivelockedThese tiers are already present in the reference implementation.
Expected semantics:
default: always open, minimal frictionstandard: open by policy, agent access requires scoped grantssensitive: closed by default, requires approvallocked: passphrase or explicit unlock, agent access denied or highly restrictedA Dina-compatible Home Node SHOULD use an encrypted SQL store per persona.
The reference implementation uses SQLCipher-backed SQLite databases, one per persona, with encrypted-at-rest FTS and embedding storage.
A Dina-compatible vault item model MUST be able to express:
The reference implementation's persona schema currently includes logical fields such as:
idtypesourcesource_idcontact_didsummarybodymetadatatagstimestampcreated_atupdated_atsendersender_trustsource_typeconfidenceretrieval_policycontent_l0content_l1The protocol SHOULD freeze the logical schema, not the exact SQL DDL.
The protocol SHOULD support:
The reference implementation currently provides:
Important storage rule:
Base Dina storage interoperability is logical, not file-format-level.
At minimum, conforming implementations MUST support:
Implementations MUST NOT create silent plaintext backups as a side effect of normal backup or migration.
Safe profiles therefore separate:
The current implementation has more than one active DEK derivation style:
dina:vault:<persona>:v1 with a user saltdina:persona:<name>:dek:vN with deterministic persona-scoped saltThis matters only if the protocol wants to guarantee one of the following:
Those guarantees are useful, but they are not required for base Dina interoperability.
Therefore Protocol 1.0 MAY defer canonical DEK derivation at the core layer, provided it freezes:
If an encrypted vault portability profile is later standardized, it SHOULD define: