NUVQUERIO Open workspace

A small architecture with clearly separated trust zones.

The browser generates and encrypts. The API authenticates and persists. PostgreSQL stores account records and opaque vault payloads.

Review the vault model

The API does not need plaintext vault secrets to list, update or delete records.

Browser

The browser uses Web Crypto for random generation and AES-GCM encryption. A PBKDF2-derived key uses a random salt; AES-GCM uses a fresh nonce for each save. The passphrase and plaintext value are used in the browser workflow and are not intentionally included in API request bodies.

  • Generated value is visible to the signed-in user
  • Clipboard and browser extensions are outside the database boundary
  • TLS is required for secure contexts and protected transport

Application API

The Python API handles activation, login, sessions, code issuance, user-role checks and vault ciphertext persistence. Administrator passwords are scrypt-hashed, code values are HMACed with a server-held pepper and session tokens are stored as digests. Application request logging avoids recording request paths and client IP values, while the reverse proxy and operating system still require separate review.

  • API listens behind Nginx on loopback
  • Session cookie is HTTP-only and SameSite Strict
  • The API scopes vault operations to the authenticated user

Database and operations

PostgreSQL holds users, activation-code digests, session digests, audit events and encrypted vault payloads. Database access, backups, file permissions, OS logs, network logs, key rotation, restore procedures and retention are operational responsibilities that must be configured and verified on the deployment.

  • Do not assume application encryption encrypts all metadata
  • Do not assume deleting a database row erases backups
  • Review current system configuration before making production claims

One generated password, in sequence

The browser obtains random bytes, maps them into the selected allowed characters without a simple modulo reduction bias, and presents the result. When the user copies, the operating system clipboard becomes another place the value can exist. When the user saves, client-side encryption packages the selected item before an authenticated API request stores the ciphertext.

  • The API does not generate the password
  • The browser necessarily displays plaintext during use
  • The clipboard is outside the database encryption boundary

Authentication and activation

A one-time code is stored as a keyed HMAC digest and redeemed once against the user's submitted email. Account passwords are stored as scrypt hashes. User and administrator roles receive separate sessions and routes. Activation does not verify email ownership because the current service does not send an email challenge.

  • Activation attempts lock after ten invalid tries per email
  • User sign-in has a temporary lockout after repeated failures
  • The email address remains account metadata visible to the service

Cryptographic details that need careful reading

Web Crypto exposes a browser cryptographic random generator and key APIs; the security properties depend on the browser, operating system and implementation environment. AES-GCM provides authenticated encryption when nonces are managed correctly. PBKDF2 slows password-based key derivation but does not turn a weak passphrase into a strong one. These implementation facts are not a FIPS validation or independent audit.

  • A fresh 96-bit nonce is generated for each AES-GCM save
  • The current vault uses 310,000 PBKDF2-SHA-256 iterations
  • Review NIST and browser primary documentation for protocol context

Operational trust is still real

The database stores account records and ciphertext, while the host runs the reverse proxy, API process, operating system, database and backup tooling. A privileged operator can affect the application code served to the browser. Client-side encryption is valuable, but a malicious release could alter the code before it reaches a user; deployment review and trusted releases matter.

  • Pin and review software dependencies
  • Protect deployment credentials and release access
  • Test restore procedures and assess backup access separately

Security is a workflow, not a label.

Review the implementation boundaries