Skip to main content
Version: 7.0

Zero-Knowledge security model

What is Zero-Knowledge​

Zero-Knowledge (ZK) is an architectural principle where the server has no access to decrypted data. All encryption and decryption happens on the client side.

In practical terms: even if an attacker gains full access to the Passwork server and its database, they'll only find encrypted blobs — without user keys, reading secrets is impossible.

How it works​

┌─────────────────┐                      ┌─────────────────┐
│ Client │ │ Passwork │
│ (browser/CLI) │ │ Server │
├─────────────────┤ ├─────────────────┤
│ Encryption keys │ ──── HTTPS ────► │ Encrypted │
│ Decryption │ ◄── HTTPS ──── │ data │
│ Encryption │ │ Metadata │
└─────────────────┘ └─────────────────┘
Stored on serverKnown only to client
Encrypted passwords and fieldsEncryption keys
Encrypted attachmentsDecrypted values
Record and folder namesUser's master password
Access rights structure—
Audit log—

Security benefits​

Protection from server compromise​

Even with full server access, an attacker cannot:

  • read passwords or secrets;
  • decrypt attachments (keys, certificates);
  • recover values from database backups.

Protection from insiders​

Passwork administrators (system admins, DBAs) have no technical means to view secret contents — even with direct database access.

Compliance​

Zero-Knowledge makes security audits simpler: you can demonstrate that even privileged infrastructure users cannot access secrets.

tip

In the on-premise version of Passwork, Zero-Knowledge mode can be disabled by the administrator. Consult your security team for the current configuration.

Impact on automation​

Zero-Knowledge limits what the server can do on its own.

Server limitations​

OperationWhy it can't work server-side
Automatic password rotationServer lacks encryption keys
Password quality checksValues are encrypted
Built-in integration with external systemsRequires a client with keys

The solution​

For rotation and advanced automation, use an external client — a script or service that:

  1. Authenticates with Passwork (obtains tokens).
  2. Retrieves and decrypts secrets via CLI/SDK.
  3. Performs actions in target systems (databases, services).
  4. Encrypts and writes new values back.
┌──────────────┐      ┌──────────────┐      ┌──────────────┐
│ Rotation │ │ Passwork │ │ Target │
│ script │ ───► │ (stores) │ │ system │
│ │ ◄─── │ │ │ (PostgreSQL)│
│ - CLI/SDK │ └──────────────┘ │ │
│ - keys │ ─────────────────────────► │ │
└──────────────┘ └──────────────┘

Typical setup​

# Cron job for rotation
0 3 * * 0 /opt/scripts/rotate-db-passwords.py

What rotate-db-passwords.py does:

  1. Lists records in the infrastructure/production/databases folder.
  2. For each record:
    • generates a new password;
    • updates the password in PostgreSQL/MySQL;
    • stores the new password in Passwork.
  3. Sends a summary to Slack or email.

Implementation examples can be found in: