Skip to content

encrypt stored FVK at rest #1

@hitchho

Description

@hitchho

The import-fvk command stores the 96-byte orchard FullViewingKey as raw bytes in the sled wallet db (~/.zcli/wallet).

An FVK can't spend funds, but it can reveal all transactions, balances, and addresses — it's a privacy-sensitive key.

Proposal

Age-encrypt the FVK with the ssh identity key before storing, matching the existing ~/.config/zcli/mnemonic.age pattern. Either:

  • Store as ~/.config/zcli/fvk.age (separate file, consistent with mnemonic)
  • Or encrypt in-place within sled (simpler, self-contained)

Decrypt on-demand via -i / ZCLI_IDENTITY ssh key, same as mnemonic decryption flow.

Context

  • FVK import landed in the import-fvk command (watch-only wallet support)
  • Current storage: wallet.store_fvk() → sled key b"full_viewing_key" → raw 96 bytes
  • Low priority since it's view-only, but good hygiene for privacy at rest

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions